{
  "match_info": {
    "home_team": "Valencia",
    "away_team": "Villarreal",
    "tournament": "LaLiga",
    "date": "20261024",
    "timezone": "America/New_York",
    "home_formation": "4-2-3-1",
    "away_formation": "4-4-2",
    "lineup_status": "unconfirmed_official",
    "lineup_source": "/matches/get-lineups",
    "lineup_confirmed": false,
    "lineup_confidence": 0.75
  },
  "prediction": {
    "most_likely_score": "0-1",
    "home_goals": 0,
    "away_goals": 1,
    "most_likely_score_probability": 0.1374,
    "most_likely_winning_score_home": "1-0",
    "most_likely_winning_score_home_probability": 0.0848,
    "most_likely_winning_score_away": "0-1",
    "most_likely_winning_score_away_probability": 0.1374,
    "match_resolution": "regulation",
    "predicted_winner": "Villarreal",
    "tiebreaker": {
      "applies": false,
      "method": "none",
      "regulation_draw_probability": 0.2686,
      "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-1",
        "probability": 0.1374
      },
      {
        "score": "1-1",
        "probability": 0.1254
      },
      {
        "score": "0-2",
        "probability": 0.1004
      },
      {
        "score": "0-0",
        "probability": 0.0963
      },
      {
        "score": "1-2",
        "probability": 0.0903
      }
    ],
    "scoreline_probabilities": {
      "0-0": 0.0963,
      "0-1": 0.1374,
      "0-2": 0.1004,
      "0-3": 0.0486,
      "0-4": 0.0176,
      "0-5": 0.0051,
      "0-6": 0.0012,
      "1-0": 0.0848,
      "1-1": 0.1254,
      "1-2": 0.0903,
      "1-3": 0.0437,
      "1-4": 0.0158,
      "1-5": 0.0046,
      "1-6": 0.0011,
      "2-0": 0.0385,
      "2-1": 0.0559,
      "2-2": 0.0406,
      "2-3": 0.0196,
      "2-4": 0.0071,
      "2-5": 0.0021,
      "3-0": 0.0115,
      "3-1": 0.0168,
      "3-2": 0.0122,
      "3-3": 0.0059,
      "3-4": 0.0021,
      "3-5": 0.0006,
      "4-0": 0.0026,
      "4-1": 0.0038,
      "4-2": 0.0027,
      "4-3": 0.0013,
      "5-1": 0.0007
    },
    "outcome": {
      "home_win": 0.2324,
      "draw": 0.2686,
      "away_win": 0.4989
    },
    "markets": {
      "over_2_5_goals": 0.4172,
      "under_2_5_goals": 0.5828,
      "btts_yes": 0.455,
      "btts_no": 0.545,
      "home_clean_sheet": 0.2343,
      "away_clean_sheet": 0.407
    },
    "home_ratings": {
      "DR": 6.79,
      "MCR": 6.94,
      "ATR": 6.81,
      "GK": 6.9
    },
    "away_ratings": {
      "DR": 6.92,
      "MCR": 7.02,
      "ATR": 7.01,
      "GK": 7.07
    },
    "insights": {
      "summary": "Antagonist matchup analysis for Valencia vs Villarreal. Most likely scoreline: 0-1. Lambdas derived from 6 home and 6 away individual player duels. Head-to-head: Valencia 2W-3D-5L vs Villarreal over 10 meetings.",
      "key_player": "Projected scorer(s): Alberto Moleiro",
      "tactical_analysis": "4-2-3-1 creates structural superiority against 4-4-2. Home team should exploit wider spaces and numerical advantages in transition. Midfield is evenly contested — Javier Guerra vs Pape Gueye will be the pivotal duel. Total antagonist xG — Home: 0.64, Away: 1.23. Home danger zone: Left Wing vs Right Back — Flank Battle. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle."
    },
    "confidence": 0.74,
    "home_lambda": 0.899,
    "away_lambda": 1.451,
    "h2h": {
      "available": true,
      "meetings": 10,
      "home_wins": 2,
      "away_wins": 5,
      "draws": 3,
      "home_multiplier": 0.9786,
      "away_multiplier": 1.0214
    },
    "modal_scoreline": "0-1",
    "modal_scoreline_probability": 0.1374,
    "headline_policy": null
  },
  "pregame_baseline": {
    "fair_win_probability": {
      "home_win": 0.2324,
      "draw": 0.2686,
      "away_win": 0.4989
    },
    "favorite": "Villarreal",
    "favorite_win_probability": 0.4989,
    "fair_spread": -0.552,
    "fair_total": 2.35,
    "prop_estimates": [
      {
        "market": "team_total_goals",
        "selection": "Valencia",
        "estimate": 0.899,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "team_total_goals",
        "selection": "Villarreal",
        "estimate": 1.451,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "over_2_5_goals",
        "selection": "yes",
        "estimate": 2.5,
        "probability": 0.4172,
        "unit": "probability"
      },
      {
        "market": "both_teams_to_score",
        "selection": "yes",
        "estimate": 1.0,
        "probability": 0.455,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Valencia",
        "estimate": 1.0,
        "probability": 0.2343,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Villarreal",
        "estimate": 1.0,
        "probability": 0.407,
        "unit": "probability"
      },
      {
        "market": "anytime_goal",
        "selection": "Javier Guerra (Valencia)",
        "estimate": 0.1871,
        "probability": 0.1706,
        "unit": "xG"
      },
      {
        "market": "anytime_goal",
        "selection": "Alberto Moleiro (Villarreal)",
        "estimate": 0.3937,
        "probability": 0.3254,
        "unit": "xG"
      },
      {
        "market": "assist",
        "selection": "Javier Guerra (Valencia)",
        "estimate": 0.1193,
        "probability": 0.1125,
        "unit": "xA"
      },
      {
        "market": "assist",
        "selection": "Alberto Moleiro (Villarreal)",
        "estimate": 0.2197,
        "probability": 0.1972,
        "unit": "xA"
      }
    ],
    "expected_pace": {
      "tempo": "high",
      "expected_total_goals": 2.35,
      "expected_total_shots": 30,
      "expected_total_passes": 910,
      "expected_pressing_actions_per_90": 13.9,
      "possession_home_pct": 49.2,
      "possession_away_pct": 50.8,
      "notes": "possession projects near even"
    },
    "expected_game_script": {
      "favorite": "Villarreal",
      "favorite_win_probability": 0.4989,
      "script": "Villarreal is the fair winner side, but the baseline remains narrow: fair spread -0.55 goals and fair total 2.35.",
      "first_half": "Expect high tempo while both sides test the matchup thesis; shot baseline is about 15 first-half attempts.",
      "second_half": "If level after halftime, midfield control and bench quality should decide territory; Valencia must keep the match inside one goal.",
      "late_game": "A Villarreal lead likely shifts toward control and counters; a draw state keeps set pieces and transition chances live."
    },
    "key_matchup_thesis": "Villarreal chance creation leans on Alberto Moleiro against Justin De Haas, César Tárrega in Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle; possession projects near even.",
    "expected_rotation_usage_behavior": [
      "Valencia: starters carry the main goal usage through the highest xG attackers; bench watchlist: Harvey Elliott, Hugo Duro, Diego López.",
      "Villarreal: starters carry the main goal usage through Alberto Moleiro; bench watchlist: Carlos Maciá, Nathan-Dylan Saliba, Tani Oluwaseyi.",
      "Assist usage should flow through Ilias Akhomach; late lineup changes should re-score these allocations."
    ],
    "pregame_play_by_play": [
      "0-15: Villarreal tries to establish the projected edge; track possession and first-shot share.",
      "15-45: Baseline expects high tempo, about 15 total first-half shots, and 1.18 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 Valencia is chasing, transition and set-piece volume become the primary live deviation signal; a draw state keeps set pieces and transition chances live."
    ],
    "invalidation_triggers": [
      "Early red card, injury, or goalkeeper change for Villarreal.",
      "Valencia 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": {
    "Valencia": {
      "formation": "4-2-3-1",
      "players": {
        "Stole Dimitrievski": {
          "player_id": 97951,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 1,
          "height": 188,
          "market_value": 2100000,
          "stats": {
            "saves": 3,
            "goals_prevented": -0.0084,
            "rating": 6.9041,
            "minutes": 90,
            "total_pass": 32,
            "accurate_pass": 19,
            "total_long_balls": 18,
            "accurate_long_balls": 5,
            "touches": 44,
            "clearances": 1,
            "ball_recovery": 9,
            "high_claims": 2,
            "punches": 0.9238,
            "aerial_won": 0,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 2,
            "possession_lost": 13.7315,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 19,
            "accurate_own_half_passes": 16,
            "gk_engine_opponent_lambda": 1.4207,
            "shots_faced": 13.8,
            "expected_saves": 3.38,
            "high_pressure_saves": 1.16,
            "opponent_faced": "Alberto Moleiro, Ayoze Pérez",
            "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": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 21,
                "clearances": 2,
                "ball_recovery": 5,
                "saves": 1,
                "goals_prevented": 0.1026
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0025,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 12,
                "duels_won": 1,
                "ball_recovery": 14,
                "saves": 9,
                "goals_prevented": 0.2949
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416297,
              "match_date": "2026-09-20",
              "home_team": "Valencia",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 18,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 6,
                "saves": 3,
                "goals_prevented": -0.3169
              },
              "has_player_stats": true,
              "league_name": "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": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 20,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 11,
                "saves": 3,
                "goals_prevented": 0.3457
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416330,
              "match_date": "2026-09-11",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0032,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 29,
                "ball_recovery": 11,
                "saves": 3,
                "goals_prevented": -0.2532
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416325,
              "match_date": "2026-09-06",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 13,
                "clearances": 2,
                "ball_recovery": 9,
                "saves": 5,
                "goals_prevented": 0.0829
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416291,
              "match_date": "2026-08-30",
              "home_team": "Deportivo de A Coruña",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 21,
                "clearances": 1,
                "ball_recovery": 7,
                "saves": 3,
                "goals_prevented": -2.2955
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421049,
              "match_date": "2026-08-25",
              "home_team": "Valencia",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 19,
                "clearances": 2,
                "ball_recovery": 12,
                "saves": 2,
                "goals_prevented": -0.4455
              },
              "has_player_stats": true,
              "league_name": "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": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0032,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 19,
                "clearances": 1,
                "ball_recovery": 8,
                "saves": 3,
                "goals_prevented": 0.0564
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083739,
              "match_date": "2026-05-23",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0013,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 9,
                "clearances": 2,
                "ball_recovery": 6,
                "saves": 3,
                "goals_prevented": 0.9127
              },
              "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": 2524,
            "combined_rank_score": 913.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 280.0,
            "sofascore_rating": 7.065,
            "sofascore_appearances": 20.0,
            "fifa_rank": 1546.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9041,
            "source_file": "data/player_rankings.csv",
            "player_name": "Stole Dimitrievski",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Thiago Almada",
                  "ranking": 2519
                },
                {
                  "player_name": "Jacob Ramsey",
                  "ranking": 2520
                },
                {
                  "player_name": "Wilfried Singo",
                  "ranking": 2521
                },
                {
                  "player_name": "Noah Okafor",
                  "ranking": 2522
                },
                {
                  "player_name": "Noah Atubolu",
                  "ranking": 2523
                }
              ],
              "lower": [
                {
                  "player_name": "Samuele Ricci",
                  "ranking": 2525
                },
                {
                  "player_name": "Yahir Salazar",
                  "ranking": 2526
                },
                {
                  "player_name": "Jae-hwan Lee",
                  "ranking": 2527
                },
                {
                  "player_name": "Yanis Lhéry",
                  "ranking": 2528
                },
                {
                  "player_name": "Thomas Kevin Aquilina",
                  "ranking": 2529
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 29,
          "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": 29,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.997,
            "fbref_prior_metrics": {
              "squad": "Valencia",
              "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 29 historical appearances across 3 target models; FBref 2026-2027 prior blended (La Liga, Valencia, 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": 2.976,
                "goals_prevented": -0.0085,
                "rating": 6.9041,
                "minutes": 90.0,
                "total_pass": 32.3695,
                "accurate_pass": 18.9296,
                "total_long_balls": 17.7954,
                "accurate_long_balls": 4.9573,
                "touches": 43.945,
                "clearances": 1.0337,
                "ball_recovery": 9.1194,
                "high_claims": 1.7413,
                "punches": 0.9266,
                "aerial_won": 0.1774,
                "sweeper_actions": 1.1127,
                "sweeper_accurate": 1.0936,
                "saves_inside_box": 2.1463,
                "possession_lost": 13.7728,
                "duels_won": 0.4651,
                "duels_lost": 0.0183,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.2814,
                "total_own_half_passes": 19.0591,
                "accurate_own_half_passes": 15.6577
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-24T10:04:55.355626+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 200,
                    "rows": 7186
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1514,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1287,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1094,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.093,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-11",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.079,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0672,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0571,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-25",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0485,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0412,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0351,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "possessionLostCtrl": 13.7728,
                  "distribution_accuracy": 0.8012,
                  "saves": 3.504,
                  "goalkeeperValueNormalized": 0.1896,
                  "save_contribution": 3.3848,
                  "accurateOwnHalfPasses": 15.6577
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.976043224334717,
                    "model_output": 2.976,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "saves",
                        "importance": 0.0396
                      },
                      {
                        "name": "save_contribution",
                        "importance": 0.0396
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0361
                      },
                      {
                        "name": "defensiveValueNormalized",
                        "importance": 0.0356
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 2.9357,
                      "items": [
                        {
                          "name": "goodHighClaim",
                          "contribution": 0.0305
                        },
                        {
                          "name": "saves",
                          "contribution": 0.0289
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0213
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": 0.0174
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0159
                        }
                      ],
                      "others": -0.0737,
                      "total": 2.976,
                      "log_link": true,
                      "margin_base": 1.076962,
                      "item_margins": [
                        {
                          "name": "goodHighClaim",
                          "margin": 0.010348
                        },
                        {
                          "name": "saves",
                          "margin": 0.009702
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.007093
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": 0.005759
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.00522
                        }
                      ],
                      "others_margin": -0.02449
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.008460777811706066,
                    "model_output": -0.0085,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0403
                      },
                      {
                        "name": "punches",
                        "importance": 0.0402
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.039
                      },
                      {
                        "name": "goodHighClaim",
                        "importance": 0.0381
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0377
                      }
                    ],
                    "decomposition": {
                      "base": -0.0276,
                      "items": [
                        {
                          "name": "distribution_accuracy",
                          "contribution": 0.0221
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": 0.0209
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0131
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0111
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0104
                        }
                      ],
                      "others": -0.0115,
                      "total": -0.0085,
                      "log_link": false,
                      "margin_base": -0.027557,
                      "item_margins": [
                        {
                          "name": "distribution_accuracy",
                          "margin": 0.022095
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": 0.020878
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.013146
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.011146
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.01044
                        }
                      ],
                      "others_margin": -0.011436
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.904077529907227,
                    "model_output": 6.9041,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "saves",
                        "importance": 0.0419
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0397
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0368
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0351
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 6.9908,
                      "items": [
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.0288
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.02
                        },
                        {
                          "name": "accurateOwnHalfPasses",
                          "contribution": -0.014
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0135
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": 0.0129
                        }
                      ],
                      "others": -0.0233,
                      "total": 6.9041,
                      "log_link": false,
                      "margin_base": 6.990849,
                      "item_margins": [
                        {
                          "name": "long_ball_accuracy",
                          "margin": -0.028799
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.019989
                        },
                        {
                          "name": "accurateOwnHalfPasses",
                          "margin": -0.014027
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.013539
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": 0.012884
                        }
                      ],
                      "others_margin": -0.023303
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 29,
                  "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.9970, quality 0.437)",
              "stats": {
                "saves": 2.9671,
                "goals_prevented": -0.0084,
                "rating": 6.9041,
                "minutes": 90.0,
                "total_pass": 32.2724,
                "accurate_pass": 18.8728,
                "total_long_balls": 17.742,
                "accurate_long_balls": 4.9424,
                "touches": 43.8132,
                "clearances": 1.0306,
                "ball_recovery": 9.092,
                "high_claims": 1.7361,
                "punches": 0.9238,
                "aerial_won": 0.1769,
                "sweeper_actions": 1.1094,
                "sweeper_accurate": 1.0903,
                "saves_inside_box": 2.1399,
                "possession_lost": 13.7315,
                "duels_won": 0.4637,
                "duels_lost": 0.0182,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.2806,
                "total_own_half_passes": 19.0019,
                "accurate_own_half_passes": 15.6107
              },
              "params": {
                "market_value_eur": 2100000,
                "quality_factor": 0.4374,
                "boost_factor": 0.997,
                "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.0191)",
              "stats": {
                "saves": 2.9614,
                "goals_prevented": -0.0084,
                "rating": 6.9041,
                "minutes": 90.0,
                "total_pass": 32.2724,
                "accurate_pass": 18.8728,
                "total_long_balls": 17.742,
                "accurate_long_balls": 4.9424,
                "touches": 43.8132,
                "clearances": 1.0306,
                "ball_recovery": 9.092,
                "high_claims": 1.7361,
                "punches": 0.9238,
                "aerial_won": 0.1769,
                "sweeper_actions": 1.1094,
                "sweeper_accurate": 1.0903,
                "saves_inside_box": 2.1399,
                "possession_lost": 13.7315,
                "duels_won": 0.4637,
                "duels_lost": 0.0182,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.2752,
                "total_own_half_passes": 19.0019,
                "accurate_own_half_passes": 15.6107
              },
              "params": {
                "blend_weight": 0.0191,
                "history_matches": 29,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 1.0,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Valencia"
              },
              "changes": [
                {
                  "stat": "saves",
                  "before": 2.9671,
                  "after": 2.9614
                },
                {
                  "stat": "wasFouled",
                  "before": 0.2806,
                  "after": 0.2752
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 2.9614,
                "goals_prevented": -0.0084,
                "rating": 6.9041,
                "minutes": 90.0,
                "total_pass": 32.2724,
                "accurate_pass": 18.8728,
                "total_long_balls": 17.742,
                "accurate_long_balls": 4.9424,
                "touches": 43.8132,
                "clearances": 1.0306,
                "ball_recovery": 9.092,
                "high_claims": 1.7361,
                "punches": 0.9238,
                "aerial_won": 0.1769,
                "sweeper_actions": 1.1094,
                "sweeper_accurate": 1.0903,
                "saves_inside_box": 2.1399,
                "possession_lost": 13.7315,
                "duels_won": 0.4637,
                "duels_lost": 0.0182,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.2752,
                "total_own_half_passes": 19.0019,
                "accurate_own_half_passes": 15.6107
              },
              "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.9614,
                "goals_prevented": -0.0084,
                "rating": 6.9041,
                "minutes": 90.0,
                "total_pass": 32.2724,
                "accurate_pass": 18.8728,
                "total_long_balls": 17.742,
                "accurate_long_balls": 4.9424,
                "touches": 43.8132,
                "clearances": 1.0306,
                "ball_recovery": 9.092,
                "high_claims": 1.7361,
                "punches": 0.9238,
                "aerial_won": 0.1769,
                "sweeper_actions": 1.1094,
                "sweeper_accurate": 1.0903,
                "saves_inside_box": 2.1399,
                "possession_lost": 13.7315,
                "duels_won": 0.4637,
                "duels_lost": 0.0182,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.2752,
                "total_own_half_passes": 19.0019,
                "accurate_own_half_passes": 15.6107,
                "gk_engine_opponent_lambda": 1.4207,
                "shots_faced": 13.5,
                "expected_saves": 3.3,
                "high_pressure_saves": 1.14,
                "opponent_faced": "Alberto Moleiro, Ayoze Pérez",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Alberto Moleiro, Ayoze Pérez",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 1.4207
                }
              }
            },
            {
              "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.9614,
                "goals_prevented": -0.0084,
                "rating": 6.9041,
                "minutes": 90.0,
                "total_pass": 32.2724,
                "accurate_pass": 18.8728,
                "total_long_balls": 17.742,
                "accurate_long_balls": 4.9424,
                "touches": 43.8132,
                "clearances": 1.0306,
                "ball_recovery": 9.092,
                "high_claims": 1.7361,
                "punches": 0.9238,
                "aerial_won": 0.1769,
                "sweeper_actions": 1.1094,
                "sweeper_accurate": 1.0903,
                "saves_inside_box": 2.1399,
                "possession_lost": 13.7315,
                "duels_won": 0.4637,
                "duels_lost": 0.0182,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.2752,
                "total_own_half_passes": 19.0019,
                "accurate_own_half_passes": 15.6107,
                "gk_engine_opponent_lambda": 1.4207,
                "shots_faced": 13.5,
                "expected_saves": 3.3,
                "high_pressure_saves": 1.14,
                "opponent_faced": "Alberto Moleiro, Ayoze Pérez",
                "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.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "saves": 2.9614,
                "goals_prevented": -0.0084,
                "rating": 6.9041,
                "minutes": 90.0,
                "total_pass": 32.2724,
                "accurate_pass": 18.8728,
                "total_long_balls": 17.742,
                "accurate_long_balls": 4.9424,
                "touches": 43.8132,
                "clearances": 1.0306,
                "ball_recovery": 9.092,
                "high_claims": 1.7361,
                "punches": 0.9238,
                "aerial_won": 0.1769,
                "sweeper_actions": 1.1094,
                "sweeper_accurate": 1.0903,
                "saves_inside_box": 2.1399,
                "possession_lost": 13.7315,
                "duels_won": 0.4637,
                "duels_lost": 0.0182,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.2752,
                "total_own_half_passes": 19.0019,
                "accurate_own_half_passes": 15.6107,
                "gk_engine_opponent_lambda": 1.4207,
                "shots_faced": 13.8,
                "expected_saves": 3.38,
                "high_pressure_saves": 1.16,
                "opponent_faced": "Alberto Moleiro, Ayoze Pérez",
                "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.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 13.5,
                  "after": 13.8
                },
                {
                  "stat": "expected_saves",
                  "before": 3.3,
                  "after": 3.38
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 1.14,
                  "after": 1.16
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 77.0)",
              "stats": {
                "saves": 2.9614,
                "goals_prevented": -0.0084,
                "rating": 6.9041,
                "minutes": 90.0,
                "total_pass": 32.2724,
                "accurate_pass": 18.8728,
                "total_long_balls": 17.742,
                "accurate_long_balls": 4.9424,
                "touches": 43.8132,
                "clearances": 1.0306,
                "ball_recovery": 9.092,
                "high_claims": 1.7361,
                "punches": 0.9238,
                "aerial_won": 0.1769,
                "sweeper_actions": 1.1094,
                "sweeper_accurate": 1.0903,
                "saves_inside_box": 2.1399,
                "possession_lost": 13.7315,
                "duels_won": 0.4637,
                "duels_lost": 0.0182,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.2752,
                "total_own_half_passes": 19.0019,
                "accurate_own_half_passes": 15.6107,
                "gk_engine_opponent_lambda": 1.4207,
                "shots_faced": 13.8,
                "expected_saves": 3.38,
                "high_pressure_saves": 1.16,
                "opponent_faced": "Alberto Moleiro, Ayoze Pérez",
                "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": 77.0
              },
              "params": {
                "match_squad_rank": 2,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2524,
                "fifa_rank": 1546.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": {
                "saves": 2.9614,
                "goals_prevented": -0.0084,
                "rating": 6.9041,
                "minutes": 90.0,
                "total_pass": 32.2724,
                "accurate_pass": 18.8728,
                "total_long_balls": 17.742,
                "accurate_long_balls": 4.9424,
                "touches": 43.8132,
                "clearances": 1.0306,
                "ball_recovery": 9.092,
                "high_claims": 1.7361,
                "punches": 0.9238,
                "aerial_won": 0.1769,
                "sweeper_actions": 1.1094,
                "sweeper_accurate": 1.0903,
                "saves_inside_box": 2.1399,
                "possession_lost": 13.7315,
                "duels_won": 0.4637,
                "duels_lost": 0.0182,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.2752,
                "total_own_half_passes": 19.0019,
                "accurate_own_half_passes": 15.6107,
                "gk_engine_opponent_lambda": 1.4207,
                "shots_faced": 13.8,
                "expected_saves": 3.38,
                "high_pressure_saves": 1.16,
                "opponent_faced": "Alberto Moleiro, Ayoze Pérez",
                "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": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 0.9718,
                "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.9614,
                "goals_prevented": -0.0084,
                "rating": 6.9041,
                "minutes": 90.0,
                "total_pass": 32.2724,
                "accurate_pass": 18.8728,
                "total_long_balls": 17.742,
                "accurate_long_balls": 4.9424,
                "touches": 43.8132,
                "clearances": 1.0306,
                "ball_recovery": 9.092,
                "high_claims": 1.7361,
                "punches": 0.9238,
                "aerial_won": 0.1769,
                "sweeper_actions": 1.1094,
                "sweeper_accurate": 1.0903,
                "saves_inside_box": 2.1399,
                "possession_lost": 13.7315,
                "duels_won": 0.4637,
                "duels_lost": 0.0182,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.2752,
                "total_own_half_passes": 19.0019,
                "accurate_own_half_passes": 15.6107,
                "gk_engine_opponent_lambda": 1.4207,
                "shots_faced": 13.8,
                "expected_saves": 3.38,
                "high_pressure_saves": 1.16,
                "opponent_faced": "Alberto Moleiro, Ayoze Pérez",
                "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": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 0.6412,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0
              }
            }
          ]
        },
        "Arnaut Danjuma": {
          "player_id": 827064,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 7,
          "height": 178,
          "market_value": 2800000,
          "stats": {
            "expected_goals": 0.1338,
            "goal_rate": 0.145,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0967,
            "key_pass": 1,
            "rating": 6.8643,
            "minutes": 82,
            "total_pass": 17,
            "accurate_pass": 13,
            "duels_won": 3,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 8,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 30,
            "possession_lost": 9.1813,
            "dispossessed": 0.6114,
            "duels_lost": 3,
            "aerial_lost": 0,
            "total_contest": 3,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.0377,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0729,
            "offsides": 1,
            "ball_carries": 12,
            "total_progression": 98,
            "progressive_carries": 4,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.7654,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Renato Veiga, Alexander Freeman",
            "opponent_faced": "Renato Veiga, Alexander Freeman",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1252,
            "projected_assists": 0,
            "assist_probability": 0.0922,
            "finishing_factor": 1.0744,
            "creation_factor": 0.8,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.104,
                "expected_assists": 0.0383,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 14,
                "key_pass": 2,
                "tackles": 2,
                "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": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 45,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0144,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 12,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416297,
              "match_date": "2026-09-20",
              "home_team": "Valencia",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 88,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1129,
                "expected_assists": 0.5363,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 20,
                "accurate_pass": 15,
                "key_pass": 2,
                "interceptions": 1,
                "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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0266,
                "expected_assists": 0.1512,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 21,
                "accurate_pass": 17,
                "key_pass": 4,
                "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": 16416330,
              "match_date": "2026-09-11",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0251,
                "expected_assists": 0.0283,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 18,
                "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": 16416325,
              "match_date": "2026-09-06",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6602,
                "expected_assists": 0.0022,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 11,
                "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": 16416291,
              "match_date": "2026-08-30",
              "home_team": "Deportivo de A Coruña",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 30,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0403,
                "expected_assists": 0.2432,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 8,
                "key_pass": 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": 16421049,
              "match_date": "2026-08-25",
              "home_team": "Valencia",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 55,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0824,
                "expected_assists": 0.0042,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 5,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 83,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4542,
                "expected_assists": 0.0226,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 15,
                "accurate_pass": 14,
                "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": 14083476,
              "match_date": "2026-05-02",
              "home_team": "Valencia",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 17,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0832,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3473,
            "combined_rank_score": 1464.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 530.0,
            "sofascore_rating": 6.8333,
            "sofascore_appearances": 3.0,
            "fifa_rank": 2398.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8643,
            "source_file": "data/player_rankings.csv",
            "player_name": "Arnaut Danjuma",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jakub Moder",
                  "ranking": 3468
                },
                {
                  "player_name": "Nabil Bentaleb",
                  "ranking": 3469
                },
                {
                  "player_name": "Ludovic Ajorque",
                  "ranking": 3470
                },
                {
                  "player_name": "Jonathan Gradit",
                  "ranking": 3471
                },
                {
                  "player_name": "Ruben Aguilar",
                  "ranking": 3472
                }
              ],
              "lower": [
                {
                  "player_name": "Etta Eyong",
                  "ranking": 3474
                },
                {
                  "player_name": "Thilo Kehrer",
                  "ranking": 3475
                },
                {
                  "player_name": "Takumi Minamino",
                  "ranking": 3476
                },
                {
                  "player_name": "Dani Cárdenas",
                  "ranking": 3477
                },
                {
                  "player_name": "Pierre Lees-Melou",
                  "ranking": 3478
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.769,
          "history_matches": 39,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 39,
            "data_confidence": 0.769,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9977,
            "fbref_prior_metrics": {
              "squad": "Valencia",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 2.0,
              "minutes": 167.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 3.77,
              "shots_on_target_pct": 28.6,
              "prior_reliability": 0.1267
            },
            "rationale": "XGBoost regressor (F_service) evaluated 39 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Valencia, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1722,
                "goals": 0.1916,
                "goal_rate": 0.1916,
                "shots_on_target": 0.6134,
                "total_shots": 1.5923,
                "expected_assists": 0.0952,
                "key_pass": 1.0401,
                "rating": 6.8643,
                "minutes": 82.02,
                "total_pass": 17.2471,
                "accurate_pass": 13.4915,
                "duels_won": 3.2265,
                "total_long_balls": 0.9916,
                "accurate_long_balls": 0.636,
                "total_opp_half_passes": 11.5358,
                "accurate_opp_half_passes": 8.4098,
                "crosses_total": 2.4591,
                "crosses_accurate": 0.9062,
                "touches": 30.1055,
                "possession_lost": 9.2025,
                "dispossessed": 0.6128,
                "duels_lost": 2.9553,
                "aerial_lost": 0.3822,
                "total_contest": 2.6397,
                "won_contest": 1.4156,
                "ball_recovery": 1.8099,
                "challenges_lost": 0.0752,
                "fouls": 0.668,
                "fouls_drawn": 0.8983,
                "assists": 0.0382,
                "assist_rate": 0.0382,
                "interceptions": 0.1297,
                "tackles_won": 0.257,
                "tackles": 0.5682,
                "clearances": 0.3486,
                "blocks": 0.0708,
                "big_chances_created": 0.0435,
                "big_chances_missed": 0.4965,
                "xgot": 0.0938,
                "offsides": 0.5698,
                "ball_carries": 11.6715,
                "total_progression": 98.594,
                "progressive_carries": 4.1185,
                "shots_off_target": 0.9788
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.1277,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Real Sociedad",
                    "minutes": 88.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-11",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0567,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-25",
                    "opponent": "Real Betis",
                    "minutes": 55.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Celta Vigo",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Atlético Madrid",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.1167,
                  "totalOppositionHalfPasses": 11.0587,
                  "accurateOppositionHalfPasses": 7.863,
                  "accuratePass": 12.0403,
                  "totalShots": 1.3206
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.17219072580337524,
                    "model_output": 0.1722,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.061
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0407
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0304
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0087
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0068
                        }
                      ],
                      "others": -0.0137,
                      "total": 0.1722,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.268723
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.171184
                        },
                        {
                          "name": "goals",
                          "margin": -0.150149
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.047403
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.037154
                        }
                      ],
                      "others_margin": -0.076358
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.19160325825214386,
                    "model_output": 0.1916,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0653
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0394
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0229
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0067
                        },
                        {
                          "name": "shot_waste_rate",
                          "contribution": 0.0063
                        }
                      ],
                      "others": -0.0267,
                      "total": 0.1916,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.279833
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.159332
                        },
                        {
                          "name": "goals",
                          "margin": -0.105658
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.031962
                        },
                        {
                          "name": "shot_waste_rate",
                          "margin": 0.029098
                        }
                      ],
                      "others_margin": -0.130249
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.6134349703788757,
                    "model_output": 0.6134,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1831
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0612
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0378
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0338
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0287
                        }
                      ],
                      "others": -0.0876,
                      "total": 0.6134,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.293721
                        },
                        {
                          "name": "goals",
                          "margin": -0.088901
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.055798
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.047416
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.040063
                        }
                      ],
                      "others_margin": -0.13339
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.592262625694275,
                    "model_output": 1.5923,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4432
                        },
                        {
                          "name": "goals",
                          "contribution": -0.1151
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0946
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0486
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0484
                        }
                      ],
                      "others": -0.0221,
                      "total": 1.5923,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.443152
                        },
                        {
                          "name": "goals",
                          "margin": -0.115102
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.094644
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.048645
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.048378
                        }
                      ],
                      "others_margin": -0.02216
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.09524780511856079,
                    "model_output": 0.0952,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0163
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0079
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0077
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0061
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0044
                        }
                      ],
                      "others": 0.0164,
                      "total": 0.0952,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.225589
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.102447
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.100049
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.079081
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.057057
                        }
                      ],
                      "others_margin": 0.189524
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.0400869846343994,
                    "model_output": 1.0401,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2304
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0617
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0433
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0334
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0259
                        }
                      ],
                      "others": 0.0835,
                      "total": 1.0401,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.291657
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.065503
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.04359
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.033444
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.026686
                        }
                      ],
                      "others_margin": 0.08367
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.864277362823486,
                    "model_output": 6.8643,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0524
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0509
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0242
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0152
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0126
                        }
                      ],
                      "others": -0.0109,
                      "total": 6.8643,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.052433
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.050913
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.024212
                        },
                        {
                          "name": "rating",
                          "margin": 0.015182
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.012564
                        }
                      ],
                      "others_margin": -0.010884
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 39,
                  "role_matches": 25,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9977, quality 0.437)",
              "stats": {
                "expected_goals": 0.1718,
                "goals": 0.1912,
                "goal_rate": 0.1912,
                "shots_on_target": 0.612,
                "total_shots": 1.5886,
                "expected_assists": 0.095,
                "key_pass": 1.0377,
                "rating": 6.8643,
                "minutes": 82.02,
                "total_pass": 17.2074,
                "accurate_pass": 13.4605,
                "duels_won": 3.2191,
                "total_long_balls": 0.9893,
                "accurate_long_balls": 0.6345,
                "total_opp_half_passes": 11.5093,
                "accurate_opp_half_passes": 8.3905,
                "crosses_total": 2.4534,
                "crosses_accurate": 0.9041,
                "touches": 30.0363,
                "possession_lost": 9.1813,
                "dispossessed": 0.6114,
                "duels_lost": 2.9485,
                "aerial_lost": 0.3813,
                "total_contest": 2.6336,
                "won_contest": 1.4123,
                "ball_recovery": 1.8057,
                "challenges_lost": 0.075,
                "fouls": 0.6665,
                "fouls_drawn": 0.8962,
                "assists": 0.0381,
                "assist_rate": 0.0381,
                "interceptions": 0.1294,
                "tackles_won": 0.2564,
                "tackles": 0.5669,
                "clearances": 0.3478,
                "blocks": 0.0706,
                "big_chances_created": 0.0434,
                "big_chances_missed": 0.4954,
                "xgot": 0.0936,
                "offsides": 0.5685,
                "ball_carries": 11.6447,
                "total_progression": 98.3672,
                "progressive_carries": 4.109,
                "shots_off_target": 0.9765
              },
              "params": {
                "market_value_eur": 2800000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9977,
                "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.0094)",
              "stats": {
                "expected_goals": 0.1718,
                "goals": 0.1894,
                "goal_rate": 0.1894,
                "shots_on_target": 0.6155,
                "total_shots": 1.6059,
                "expected_assists": 0.095,
                "key_pass": 1.0377,
                "rating": 6.8643,
                "minutes": 82.02,
                "total_pass": 17.2074,
                "accurate_pass": 13.4605,
                "duels_won": 3.2191,
                "total_long_balls": 0.9893,
                "accurate_long_balls": 0.6345,
                "total_opp_half_passes": 11.5093,
                "accurate_opp_half_passes": 8.3905,
                "crosses_total": 2.4484,
                "crosses_accurate": 0.9041,
                "touches": 30.0363,
                "possession_lost": 9.1813,
                "dispossessed": 0.6114,
                "duels_lost": 2.9485,
                "aerial_lost": 0.3813,
                "total_contest": 2.6336,
                "won_contest": 1.4123,
                "ball_recovery": 1.8057,
                "challenges_lost": 0.075,
                "fouls": 0.6737,
                "fouls_drawn": 0.9058,
                "assists": 0.0377,
                "assist_rate": 0.0377,
                "interceptions": 0.1282,
                "tackles_won": 0.2585,
                "tackles": 0.5669,
                "clearances": 0.3478,
                "blocks": 0.0706,
                "big_chances_created": 0.0434,
                "big_chances_missed": 0.4954,
                "xgot": 0.0936,
                "offsides": 0.5677,
                "ball_carries": 11.6447,
                "total_progression": 98.3672,
                "progressive_carries": 4.109,
                "shots_off_target": 0.9765
              },
              "params": {
                "blend_weight": 0.0094,
                "history_matches": 39,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9113,
                "prior_reliability": 0.1267,
                "competition": "La Liga",
                "squad": "Valencia"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.5886,
                  "after": 1.6059
                },
                {
                  "stat": "wasFouled",
                  "before": 0.8962,
                  "after": 0.9058
                },
                {
                  "stat": "fouls",
                  "before": 0.6665,
                  "after": 0.6737
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1718,
                "goals": 0.1894,
                "goal_rate": 0.1894,
                "shots_on_target": 0.6155,
                "total_shots": 1.6059,
                "expected_assists": 0.095,
                "key_pass": 1.0377,
                "rating": 6.8643,
                "minutes": 82.02,
                "total_pass": 17.2074,
                "accurate_pass": 13.4605,
                "duels_won": 3.2191,
                "total_long_balls": 0.9893,
                "accurate_long_balls": 0.6345,
                "total_opp_half_passes": 11.5093,
                "accurate_opp_half_passes": 8.3905,
                "crosses_total": 2.4484,
                "crosses_accurate": 0.9041,
                "touches": 30.0363,
                "possession_lost": 9.1813,
                "dispossessed": 0.6114,
                "duels_lost": 2.9485,
                "aerial_lost": 0.3813,
                "total_contest": 2.6336,
                "won_contest": 1.4123,
                "ball_recovery": 1.8057,
                "challenges_lost": 0.075,
                "fouls": 0.6737,
                "fouls_drawn": 0.9058,
                "assists": 0.0377,
                "assist_rate": 0.0377,
                "interceptions": 0.1282,
                "tackles_won": 0.2585,
                "tackles": 0.5669,
                "clearances": 0.3478,
                "blocks": 0.0706,
                "big_chances_created": 0.0434,
                "big_chances_missed": 0.4954,
                "xgot": 0.0936,
                "offsides": 0.5677,
                "ball_carries": 11.6447,
                "total_progression": 98.3672,
                "progressive_carries": 4.109,
                "shots_off_target": 0.9765
              },
              "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.1315,
                "goals": 0.145,
                "goal_rate": 0.145,
                "shots_on_target": 0.4711,
                "total_shots": 1.2292,
                "expected_assists": 0.095,
                "key_pass": 1.0377,
                "rating": 6.8643,
                "minutes": 82.02,
                "total_pass": 17.2074,
                "accurate_pass": 13.4605,
                "duels_won": 3.2191,
                "total_long_balls": 0.9893,
                "accurate_long_balls": 0.6345,
                "total_opp_half_passes": 11.5093,
                "accurate_opp_half_passes": 8.3905,
                "crosses_total": 2.4484,
                "crosses_accurate": 0.9041,
                "touches": 30.0363,
                "possession_lost": 9.1813,
                "dispossessed": 0.6114,
                "duels_lost": 2.9485,
                "aerial_lost": 0.3813,
                "total_contest": 2.6336,
                "won_contest": 1.4123,
                "ball_recovery": 1.8057,
                "challenges_lost": 0.075,
                "fouls": 0.6737,
                "fouls_drawn": 0.9058,
                "assists": 0.0377,
                "assist_rate": 0.0377,
                "interceptions": 0.1282,
                "tackles_won": 0.2585,
                "tackles": 0.5669,
                "clearances": 0.3478,
                "blocks": 0.0706,
                "big_chances_created": 0.0434,
                "big_chances_missed": 0.3792,
                "xgot": 0.0716,
                "offsides": 0.5677,
                "ball_carries": 11.6447,
                "total_progression": 98.3672,
                "progressive_carries": 4.109,
                "shots_off_target": 0.7474,
                "duel_xg_multiplier": 0.7654,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Renato Veiga, Alexander Freeman",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.7654,
                  "skill_edge": -0.1156,
                  "height_edge": -0.044,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.6943,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Renato Veiga",
                      "market_value": 29000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7736
                    },
                    {
                      "player": "Alexander Freeman",
                      "market_value": 13800000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.615
                    }
                  ],
                  "xg_override": 0.1315
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.6059,
                  "after": 1.2292
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.9765,
                  "after": 0.7474
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.6155,
                  "after": 0.4711
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.4954,
                  "after": 0.3792
                },
                {
                  "stat": "goals",
                  "before": 0.1894,
                  "after": 0.145
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1718,
                  "after": 0.1315
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0936,
                  "after": 0.0716
                }
              ]
            },
            {
              "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.1315,
                "goal_rate": 0.145,
                "goals": 0,
                "shots_on_target": 0.4711,
                "total_shots": 1.2292,
                "expected_assists": 0.095,
                "key_pass": 1.0377,
                "rating": 6.8643,
                "minutes": 82.02,
                "total_pass": 17.2074,
                "accurate_pass": 13.4605,
                "duels_won": 3.2191,
                "total_long_balls": 0.9893,
                "accurate_long_balls": 0.6345,
                "total_opp_half_passes": 11.5093,
                "accurate_opp_half_passes": 8.3905,
                "crosses_total": 2.4484,
                "crosses_accurate": 0.9041,
                "touches": 30.0363,
                "possession_lost": 9.1813,
                "dispossessed": 0.6114,
                "duels_lost": 2.9485,
                "aerial_lost": 0.3813,
                "total_contest": 2.6336,
                "won_contest": 1.4123,
                "ball_recovery": 1.8057,
                "challenges_lost": 0.075,
                "fouls": 0.6737,
                "fouls_drawn": 0.9058,
                "assist_rate": 0.0377,
                "assists": 0,
                "interceptions": 0.1282,
                "tackles_won": 0.2585,
                "tackles": 0.5669,
                "clearances": 0.3478,
                "blocks": 0.0706,
                "big_chances_created": 0.0434,
                "big_chances_missed": 0.3792,
                "xgot": 0.0716,
                "offsides": 0.5677,
                "ball_carries": 11.6447,
                "total_progression": 98.3672,
                "progressive_carries": 4.109,
                "shots_off_target": 0.7474,
                "duel_xg_multiplier": 0.7654,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "expected_goals": 0.1338,
                "goal_rate": 0.145,
                "goals": 0,
                "shots_on_target": 0.4711,
                "total_shots": 1.2292,
                "expected_assists": 0.0967,
                "key_pass": 1.0377,
                "rating": 6.8643,
                "minutes": 82.02,
                "total_pass": 17.2074,
                "accurate_pass": 13.4605,
                "duels_won": 3.2191,
                "total_long_balls": 0.9893,
                "accurate_long_balls": 0.6345,
                "total_opp_half_passes": 11.5093,
                "accurate_opp_half_passes": 8.3905,
                "crosses_total": 2.4484,
                "crosses_accurate": 0.9041,
                "touches": 30.0363,
                "possession_lost": 9.1813,
                "dispossessed": 0.6114,
                "duels_lost": 2.9485,
                "aerial_lost": 0.3813,
                "total_contest": 2.6336,
                "won_contest": 1.4123,
                "ball_recovery": 1.8057,
                "challenges_lost": 0.075,
                "fouls": 0.6737,
                "fouls_drawn": 0.9058,
                "assist_rate": 0.0377,
                "assists": 0,
                "interceptions": 0.1282,
                "tackles_won": 0.2585,
                "tackles": 0.5669,
                "clearances": 0.3478,
                "blocks": 0.0706,
                "big_chances_created": 0.0434,
                "big_chances_missed": 0.3792,
                "xgot": 0.0729,
                "offsides": 0.5677,
                "ball_carries": 11.6447,
                "total_progression": 98.3672,
                "progressive_carries": 4.109,
                "shots_off_target": 0.7474,
                "duel_xg_multiplier": 0.7654,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0744,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 75.0)",
              "stats": {
                "expected_goals": 0.1338,
                "goal_rate": 0.145,
                "goals": 0,
                "shots_on_target": 0.4711,
                "total_shots": 1.2292,
                "expected_assists": 0.0967,
                "key_pass": 1.0377,
                "rating": 6.8643,
                "minutes": 82.02,
                "total_pass": 17.2074,
                "accurate_pass": 13.4605,
                "duels_won": 3.2191,
                "total_long_balls": 0.9893,
                "accurate_long_balls": 0.6345,
                "total_opp_half_passes": 11.5093,
                "accurate_opp_half_passes": 8.3905,
                "crosses_total": 2.4484,
                "crosses_accurate": 0.9041,
                "touches": 30.0363,
                "possession_lost": 9.1813,
                "dispossessed": 0.6114,
                "duels_lost": 2.9485,
                "aerial_lost": 0.3813,
                "total_contest": 2.6336,
                "won_contest": 1.4123,
                "ball_recovery": 1.8057,
                "challenges_lost": 0.075,
                "fouls": 0.6737,
                "fouls_drawn": 0.9058,
                "assist_rate": 0.0377,
                "assists": 0,
                "interceptions": 0.1282,
                "tackles_won": 0.2585,
                "tackles": 0.5669,
                "clearances": 0.3478,
                "blocks": 0.0706,
                "big_chances_created": 0.0434,
                "big_chances_missed": 0.3792,
                "xgot": 0.0729,
                "offsides": 0.5677,
                "ball_carries": 11.6447,
                "total_progression": 98.3672,
                "progressive_carries": 4.109,
                "shots_off_target": 0.7474,
                "duel_xg_multiplier": 0.7654,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0744,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "match_squad_rank": 5,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3473,
                "fifa_rank": 2398.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.1338,
                "goal_rate": 0.145,
                "goals": 0,
                "shots_on_target": 0.4711,
                "total_shots": 1.2292,
                "expected_assists": 0.0967,
                "key_pass": 1.0377,
                "rating": 6.8643,
                "minutes": 82.02,
                "total_pass": 17.2074,
                "accurate_pass": 13.4605,
                "duels_won": 3.2191,
                "total_long_balls": 0.9893,
                "accurate_long_balls": 0.6345,
                "total_opp_half_passes": 11.5093,
                "accurate_opp_half_passes": 8.3905,
                "crosses_total": 2.4484,
                "crosses_accurate": 0.9041,
                "touches": 30.0363,
                "possession_lost": 9.1813,
                "dispossessed": 0.6114,
                "duels_lost": 2.9485,
                "aerial_lost": 0.3813,
                "total_contest": 2.6336,
                "won_contest": 1.4123,
                "ball_recovery": 1.8057,
                "challenges_lost": 0.075,
                "fouls": 0.6737,
                "fouls_drawn": 0.9058,
                "assist_rate": 0.0377,
                "assists": 0,
                "interceptions": 0.1282,
                "tackles_won": 0.2585,
                "tackles": 0.5669,
                "clearances": 0.3478,
                "blocks": 0.0706,
                "big_chances_created": 0.0434,
                "big_chances_missed": 0.3792,
                "xgot": 0.0729,
                "offsides": 0.5677,
                "ball_carries": 11.6447,
                "total_progression": 98.3672,
                "progressive_carries": 4.109,
                "shots_off_target": 0.7474,
                "duel_xg_multiplier": 0.7654,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1252,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0744,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.1252,
                "goal_rate": 0.145,
                "scorer_weight": 0.1438,
                "squad_weight_total": 0.9718,
                "weight_share": 0.1479,
                "finishing_factor": 1.0744,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.1338,
                "goal_rate": 0.145,
                "goals": 0,
                "shots_on_target": 0.4711,
                "total_shots": 1.2292,
                "expected_assists": 0.0967,
                "key_pass": 1.0377,
                "rating": 6.8643,
                "minutes": 82.02,
                "total_pass": 17.2074,
                "accurate_pass": 13.4605,
                "duels_won": 3.2191,
                "total_long_balls": 0.9893,
                "accurate_long_balls": 0.6345,
                "total_opp_half_passes": 11.5093,
                "accurate_opp_half_passes": 8.3905,
                "crosses_total": 2.4484,
                "crosses_accurate": 0.9041,
                "touches": 30.0363,
                "possession_lost": 9.1813,
                "dispossessed": 0.6114,
                "duels_lost": 2.9485,
                "aerial_lost": 0.3813,
                "total_contest": 2.6336,
                "won_contest": 1.4123,
                "ball_recovery": 1.8057,
                "challenges_lost": 0.075,
                "fouls": 0.6737,
                "fouls_drawn": 0.9058,
                "assist_rate": 0.0377,
                "assists": 0,
                "interceptions": 0.1282,
                "tackles_won": 0.2585,
                "tackles": 0.5669,
                "clearances": 0.3478,
                "blocks": 0.0706,
                "big_chances_created": 0.0434,
                "big_chances_missed": 0.3792,
                "xgot": 0.0729,
                "offsides": 0.5677,
                "ball_carries": 11.6447,
                "total_progression": 98.3672,
                "progressive_carries": 4.109,
                "shots_off_target": 0.7474,
                "duel_xg_multiplier": 0.7654,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1252,
                "projected_assists": 0,
                "assist_probability": 0.0922,
                "finishing_factor": 1.0744,
                "creation_factor": 0.8,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0922,
                "assist_rate": 0.0377,
                "provider_weight": 0.0774,
                "squad_weight_total": 0.6412,
                "weight_share": 0.1206,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 13
              }
            }
          ]
        },
        "Luis Rioja": {
          "player_id": 900433,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 11,
          "height": 173,
          "market_value": 1900000,
          "stats": {
            "expected_goals": 0.1146,
            "goal_rate": 0.116,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0794,
            "key_pass": 1,
            "rating": 6.741,
            "minutes": 78,
            "total_pass": 22,
            "accurate_pass": 17,
            "duels_won": 3,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 15,
            "accurate_opp_half_passes": 11,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 36,
            "possession_lost": 11.2229,
            "dispossessed": 0.7164,
            "duels_lost": 3,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "assist_rate": 0.137,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0664,
            "offsides": 0,
            "ball_carries": 12,
            "total_progression": 35,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.7419,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 1,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Renato Veiga, Alexander Freeman",
            "opponent_faced": "Renato Veiga, Alexander Freeman",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1083,
            "projected_assists": 0,
            "assist_probability": 0.0763,
            "finishing_factor": 1.0209,
            "creation_factor": 1.25,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 36,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0564,
                "expected_assists": 0.0176,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 12,
                "key_pass": 1,
                "interceptions": 2,
                "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": 16416297,
              "match_date": "2026-09-20",
              "home_team": "Valencia",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 9,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3147,
                "total_shots": 0,
                "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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 19,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.363,
                "expected_assists": 0.0063,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 5,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416291,
              "match_date": "2026-08-30",
              "home_team": "Deportivo de A Coruña",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 60,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0147,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 16,
                "key_pass": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421049,
              "match_date": "2026-08-25",
              "home_team": "Valencia",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 35,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0323,
                "expected_assists": 0.1286,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 13,
                "key_pass": 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": 14083739,
              "match_date": "2026-05-23",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.26,
                "expected_assists": 0.1295,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 13,
                "accurate_pass": 11,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083687,
              "match_date": "2026-05-17",
              "home_team": "Real Sociedad",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 74,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0074,
                "expected_assists": 0.0492,
                "total_shots": 1,
                "total_pass": 28,
                "accurate_pass": 17,
                "tackles": 1,
                "tackles_won": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083639,
              "match_date": "2026-05-14",
              "home_team": "Valencia",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0593,
                "expected_assists": 0.1178,
                "total_shots": 2,
                "total_pass": 28,
                "accurate_pass": 17,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083539,
              "match_date": "2026-05-10",
              "home_team": "Athletic Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0363,
                "expected_assists": 0.229,
                "total_shots": 1,
                "total_pass": 11,
                "accurate_pass": 9,
                "key_pass": 2,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083476,
              "match_date": "2026-05-02",
              "home_team": "Valencia",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 59,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0262,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 22,
                "interceptions": 1,
                "clearances": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3084,
            "combined_rank_score": 1051.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 550.0,
            "sofascore_rating": 6.8189,
            "sofascore_appearances": 37.0,
            "fifa_rank": 1552.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.741,
            "source_file": "data/player_rankings.csv",
            "player_name": "Luis Rioja",
            "ranking_neighbors": {
              "upper": [
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "Roberto Alvarado",
                  "ranking": 3085
                },
                {
                  "player_name": "Callum Wilson",
                  "ranking": 3086
                },
                {
                  "player_name": "Victor Lindelöf",
                  "ranking": 3087
                },
                {
                  "player_name": "Oscar Bobb",
                  "ranking": 3088
                },
                {
                  "player_name": "Emmanuel Agbadou",
                  "ranking": 3089
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 42,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 42,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9978,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (F_service) evaluated 42 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.1521,
                "goals": 0.1566,
                "goal_rate": 0.1566,
                "shots_on_target": 0.4058,
                "total_shots": 1.2122,
                "expected_assists": 0.0781,
                "key_pass": 0.874,
                "rating": 6.741,
                "minutes": 77.73,
                "total_pass": 22.0852,
                "accurate_pass": 16.6788,
                "duels_won": 2.5754,
                "total_long_balls": 1.9854,
                "accurate_long_balls": 0.812,
                "total_opp_half_passes": 14.914,
                "accurate_opp_half_passes": 10.6196,
                "crosses_total": 3.9122,
                "crosses_accurate": 1.0319,
                "touches": 35.9293,
                "possession_lost": 11.2476,
                "dispossessed": 0.718,
                "duels_lost": 3.023,
                "aerial_lost": 0.3765,
                "total_contest": 1.3568,
                "won_contest": 0.7642,
                "ball_recovery": 3.3657,
                "challenges_lost": 0.881,
                "fouls": 0.4549,
                "fouls_drawn": 0.5326,
                "assists": 0.1373,
                "assist_rate": 0.1373,
                "interceptions": 0.4089,
                "tackles_won": 0.8412,
                "tackles": 1.0623,
                "clearances": 1.015,
                "blocks": 0.0,
                "big_chances_created": 0.1803,
                "big_chances_missed": 0.1002,
                "xgot": 0.0882,
                "offsides": 0.4239,
                "ball_carries": 11.5849,
                "total_progression": 35.4873,
                "progressive_carries": 1.7939,
                "shots_off_target": 0.8064
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 36.0,
                    "is_starting": false,
                    "weight": 0.1502,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Real Sociedad",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.1276,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Deportivo Alavés",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-08-25",
                    "opponent": "Real Betis",
                    "minutes": 35.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Sociedad",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-14",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Atlético Madrid",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.0807,
                  "totalOppositionHalfPasses": 10.7444,
                  "accurateOppositionHalfPasses": 8.065,
                  "accuratePass": 12.0734,
                  "totalShots": 0.9773
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.15214712917804718,
                    "model_output": 0.1521,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0666
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0428
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0118
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0087
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0081
                        }
                      ],
                      "others": -0.041,
                      "total": 0.1521,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.289938
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.176551
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.054804
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.042479
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.040908
                        }
                      ],
                      "others_margin": -0.23817
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.15663492679595947,
                    "model_output": 0.1566,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0614
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0332
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0157
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0099
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0085
                        }
                      ],
                      "others": -0.0398,
                      "total": 0.1566,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.264957
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.134775
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.070399
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.047027
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.042423
                        }
                      ],
                      "others_margin": -0.226188
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.40578770637512207,
                    "model_output": 0.4058,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1677
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0672
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0543
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0262
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0236
                        }
                      ],
                      "others": -0.1268,
                      "total": 0.4058,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.272074
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.100389
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.089109
                        },
                        {
                          "name": "goals",
                          "margin": -0.046065
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.043385
                        }
                      ],
                      "others_margin": -0.271789
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.2121798992156982,
                    "model_output": 1.2122,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4046
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1894
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0572
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0375
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0347
                        }
                      ],
                      "others": -0.2543,
                      "total": 1.2122,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.404599
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.189436
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.057168
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.037511
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.034738
                        }
                      ],
                      "others_margin": -0.254315
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0781414657831192,
                    "model_output": 0.0781,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0123
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0086
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0069
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0053
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0036
                        }
                      ],
                      "others": 0.0014,
                      "total": 0.0781,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.175087
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.10618
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.083697
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.069844
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.047545
                        }
                      ],
                      "others_margin": 0.01746
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.8739706873893738,
                    "model_output": 0.874,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1973
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0437
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0392
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0296
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0266
                        }
                      ],
                      "others": 0.0479,
                      "total": 0.874,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.254595
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.048571
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.043436
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.034116
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.031743
                        }
                      ],
                      "others_margin": 0.056406
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.741034984588623,
                    "model_output": 6.741,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0445
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0152
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0145
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0119
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0118
                        }
                      ],
                      "others": -0.042,
                      "total": 6.741,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.044505
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.015207
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.014452
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.011925
                        },
                        {
                          "name": "rating",
                          "margin": 0.011842
                        }
                      ],
                      "others_margin": -0.042007
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 42,
                  "role_matches": 32,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9978, quality 0.437)",
              "stats": {
                "expected_goals": 0.1518,
                "goals": 0.1563,
                "goal_rate": 0.1563,
                "shots_on_target": 0.4049,
                "total_shots": 1.2095,
                "expected_assists": 0.078,
                "key_pass": 0.872,
                "rating": 6.741,
                "minutes": 77.73,
                "total_pass": 22.0366,
                "accurate_pass": 16.6421,
                "duels_won": 2.5697,
                "total_long_balls": 1.981,
                "accurate_long_balls": 0.8102,
                "total_opp_half_passes": 14.8812,
                "accurate_opp_half_passes": 10.5962,
                "crosses_total": 3.9036,
                "crosses_accurate": 1.0296,
                "touches": 35.8503,
                "possession_lost": 11.2229,
                "dispossessed": 0.7164,
                "duels_lost": 3.0163,
                "aerial_lost": 0.3757,
                "total_contest": 1.3538,
                "won_contest": 0.7625,
                "ball_recovery": 3.3583,
                "challenges_lost": 0.8791,
                "fouls": 0.4539,
                "fouls_drawn": 0.5314,
                "assists": 0.137,
                "assist_rate": 0.137,
                "interceptions": 0.408,
                "tackles_won": 0.8393,
                "tackles": 1.06,
                "clearances": 1.0128,
                "blocks": 0.0,
                "big_chances_created": 0.1799,
                "big_chances_missed": 0.1,
                "xgot": 0.088,
                "offsides": 0.423,
                "ball_carries": 11.5594,
                "total_progression": 35.4092,
                "progressive_carries": 1.79,
                "shots_off_target": 0.8046
              },
              "params": {
                "market_value_eur": 1900000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9978,
                "reference_quality": 0.505,
                "history_matches": 42,
                "history_shrink": 0.1064,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1518,
                "goals": 0.1563,
                "goal_rate": 0.1563,
                "shots_on_target": 0.4049,
                "total_shots": 1.2095,
                "expected_assists": 0.078,
                "key_pass": 0.872,
                "rating": 6.741,
                "minutes": 77.73,
                "total_pass": 22.0366,
                "accurate_pass": 16.6421,
                "duels_won": 2.5697,
                "total_long_balls": 1.981,
                "accurate_long_balls": 0.8102,
                "total_opp_half_passes": 14.8812,
                "accurate_opp_half_passes": 10.5962,
                "crosses_total": 3.9036,
                "crosses_accurate": 1.0296,
                "touches": 35.8503,
                "possession_lost": 11.2229,
                "dispossessed": 0.7164,
                "duels_lost": 3.0163,
                "aerial_lost": 0.3757,
                "total_contest": 1.3538,
                "won_contest": 0.7625,
                "ball_recovery": 3.3583,
                "challenges_lost": 0.8791,
                "fouls": 0.4539,
                "fouls_drawn": 0.5314,
                "assists": 0.137,
                "assist_rate": 0.137,
                "interceptions": 0.408,
                "tackles_won": 0.8393,
                "tackles": 1.06,
                "clearances": 1.0128,
                "blocks": 0.0,
                "big_chances_created": 0.1799,
                "big_chances_missed": 0.1,
                "xgot": 0.088,
                "offsides": 0.423,
                "ball_carries": 11.5594,
                "total_progression": 35.4092,
                "progressive_carries": 1.79,
                "shots_off_target": 0.8046
              },
              "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.1126,
                "goals": 0.116,
                "goal_rate": 0.116,
                "shots_on_target": 0.3004,
                "total_shots": 0.8973,
                "expected_assists": 0.078,
                "key_pass": 0.872,
                "rating": 6.741,
                "minutes": 77.73,
                "total_pass": 22.0366,
                "accurate_pass": 16.6421,
                "duels_won": 2.5697,
                "total_long_balls": 1.981,
                "accurate_long_balls": 0.8102,
                "total_opp_half_passes": 14.8812,
                "accurate_opp_half_passes": 10.5962,
                "crosses_total": 3.9036,
                "crosses_accurate": 1.0296,
                "touches": 35.8503,
                "possession_lost": 11.2229,
                "dispossessed": 0.7164,
                "duels_lost": 3.0163,
                "aerial_lost": 0.3757,
                "total_contest": 1.3538,
                "won_contest": 0.7625,
                "ball_recovery": 3.3583,
                "challenges_lost": 0.8791,
                "fouls": 0.4539,
                "fouls_drawn": 0.5314,
                "assists": 0.137,
                "assist_rate": 0.137,
                "interceptions": 0.408,
                "tackles_won": 0.8393,
                "tackles": 1.06,
                "clearances": 1.0128,
                "blocks": 0.0,
                "big_chances_created": 0.1799,
                "big_chances_missed": 0.0742,
                "xgot": 0.0653,
                "offsides": 0.423,
                "ball_carries": 11.5594,
                "total_progression": 35.4092,
                "progressive_carries": 1.79,
                "shots_off_target": 0.5969,
                "duel_xg_multiplier": 0.7419,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Renato Veiga, Alexander Freeman",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.7419,
                  "skill_edge": -0.1156,
                  "height_edge": -0.06,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.6943,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Renato Veiga",
                      "market_value": 29000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7736
                    },
                    {
                      "player": "Alexander Freeman",
                      "market_value": 13800000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.615
                    }
                  ],
                  "xg_override": 0.1126
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.2095,
                  "after": 0.8973
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.8046,
                  "after": 0.5969
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.4049,
                  "after": 0.3004
                },
                {
                  "stat": "goals",
                  "before": 0.1563,
                  "after": 0.116
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1518,
                  "after": 0.1126
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.1,
                  "after": 0.0742
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.088,
                  "after": 0.0653
                }
              ]
            },
            {
              "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.1126,
                "goal_rate": 0.116,
                "goals": 0,
                "shots_on_target": 0.3004,
                "total_shots": 0.8973,
                "expected_assists": 0.078,
                "key_pass": 0.872,
                "rating": 6.741,
                "minutes": 77.73,
                "total_pass": 22.0366,
                "accurate_pass": 16.6421,
                "duels_won": 2.5697,
                "total_long_balls": 1.981,
                "accurate_long_balls": 0.8102,
                "total_opp_half_passes": 14.8812,
                "accurate_opp_half_passes": 10.5962,
                "crosses_total": 3.9036,
                "crosses_accurate": 1.0296,
                "touches": 35.8503,
                "possession_lost": 11.2229,
                "dispossessed": 0.7164,
                "duels_lost": 3.0163,
                "aerial_lost": 0.3757,
                "total_contest": 1.3538,
                "won_contest": 0.7625,
                "ball_recovery": 3.3583,
                "challenges_lost": 0.8791,
                "fouls": 0.4539,
                "fouls_drawn": 0.5314,
                "assist_rate": 0.137,
                "assists": 0,
                "interceptions": 0.408,
                "tackles_won": 0.8393,
                "tackles": 1.06,
                "clearances": 1.0128,
                "blocks": 0.0,
                "big_chances_created": 0.1799,
                "big_chances_missed": 0.0742,
                "xgot": 0.0653,
                "offsides": 0.423,
                "ball_carries": 11.5594,
                "total_progression": 35.4092,
                "progressive_carries": 1.79,
                "shots_off_target": 0.5969,
                "duel_xg_multiplier": 0.7419,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "expected_goals": 0.1146,
                "goal_rate": 0.116,
                "goals": 0,
                "shots_on_target": 0.3004,
                "total_shots": 0.8973,
                "expected_assists": 0.0794,
                "key_pass": 0.872,
                "rating": 6.741,
                "minutes": 77.73,
                "total_pass": 22.0366,
                "accurate_pass": 16.6421,
                "duels_won": 2.5697,
                "total_long_balls": 1.981,
                "accurate_long_balls": 0.8102,
                "total_opp_half_passes": 14.8812,
                "accurate_opp_half_passes": 10.5962,
                "crosses_total": 3.9036,
                "crosses_accurate": 1.0296,
                "touches": 35.8503,
                "possession_lost": 11.2229,
                "dispossessed": 0.7164,
                "duels_lost": 3.0163,
                "aerial_lost": 0.3757,
                "total_contest": 1.3538,
                "won_contest": 0.7625,
                "ball_recovery": 3.3583,
                "challenges_lost": 0.8791,
                "fouls": 0.4539,
                "fouls_drawn": 0.5314,
                "assist_rate": 0.137,
                "assists": 0,
                "interceptions": 0.408,
                "tackles_won": 0.8393,
                "tackles": 1.06,
                "clearances": 1.0128,
                "blocks": 0.0,
                "big_chances_created": 0.1799,
                "big_chances_missed": 0.0742,
                "xgot": 0.0664,
                "offsides": 0.423,
                "ball_carries": 11.5594,
                "total_progression": 35.4092,
                "progressive_carries": 1.79,
                "shots_off_target": 0.5969,
                "duel_xg_multiplier": 0.7419,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0209,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 77.0)",
              "stats": {
                "expected_goals": 0.1146,
                "goal_rate": 0.116,
                "goals": 0,
                "shots_on_target": 0.3004,
                "total_shots": 0.8973,
                "expected_assists": 0.0794,
                "key_pass": 0.872,
                "rating": 6.741,
                "minutes": 77.73,
                "total_pass": 22.0366,
                "accurate_pass": 16.6421,
                "duels_won": 2.5697,
                "total_long_balls": 1.981,
                "accurate_long_balls": 0.8102,
                "total_opp_half_passes": 14.8812,
                "accurate_opp_half_passes": 10.5962,
                "crosses_total": 3.9036,
                "crosses_accurate": 1.0296,
                "touches": 35.8503,
                "possession_lost": 11.2229,
                "dispossessed": 0.7164,
                "duels_lost": 3.0163,
                "aerial_lost": 0.3757,
                "total_contest": 1.3538,
                "won_contest": 0.7625,
                "ball_recovery": 3.3583,
                "challenges_lost": 0.8791,
                "fouls": 0.4539,
                "fouls_drawn": 0.5314,
                "assist_rate": 0.137,
                "assists": 0,
                "interceptions": 0.408,
                "tackles_won": 0.8393,
                "tackles": 1.06,
                "clearances": 1.0128,
                "blocks": 0.0,
                "big_chances_created": 0.1799,
                "big_chances_missed": 0.0742,
                "xgot": 0.0664,
                "offsides": 0.423,
                "ball_carries": 11.5594,
                "total_progression": 35.4092,
                "progressive_carries": 1.79,
                "shots_off_target": 0.5969,
                "duel_xg_multiplier": 0.7419,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0209,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 12,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3084,
                "fifa_rank": 1552.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.1146,
                "goal_rate": 0.116,
                "goals": 0,
                "shots_on_target": 0.3004,
                "total_shots": 0.8973,
                "expected_assists": 0.0794,
                "key_pass": 0.872,
                "rating": 6.741,
                "minutes": 77.73,
                "total_pass": 22.0366,
                "accurate_pass": 16.6421,
                "duels_won": 2.5697,
                "total_long_balls": 1.981,
                "accurate_long_balls": 0.8102,
                "total_opp_half_passes": 14.8812,
                "accurate_opp_half_passes": 10.5962,
                "crosses_total": 3.9036,
                "crosses_accurate": 1.0296,
                "touches": 35.8503,
                "possession_lost": 11.2229,
                "dispossessed": 0.7164,
                "duels_lost": 3.0163,
                "aerial_lost": 0.3757,
                "total_contest": 1.3538,
                "won_contest": 0.7625,
                "ball_recovery": 3.3583,
                "challenges_lost": 0.8791,
                "fouls": 0.4539,
                "fouls_drawn": 0.5314,
                "assist_rate": 0.137,
                "assists": 0,
                "interceptions": 0.408,
                "tackles_won": 0.8393,
                "tackles": 1.06,
                "clearances": 1.0128,
                "blocks": 0.0,
                "big_chances_created": 0.1799,
                "big_chances_missed": 0.0742,
                "xgot": 0.0664,
                "offsides": 0.423,
                "ball_carries": 11.5594,
                "total_progression": 35.4092,
                "progressive_carries": 1.79,
                "shots_off_target": 0.5969,
                "duel_xg_multiplier": 0.7419,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1083,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0209,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.1083,
                "goal_rate": 0.116,
                "scorer_weight": 0.117,
                "squad_weight_total": 0.9718,
                "weight_share": 0.1204,
                "finishing_factor": 1.0209,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.1146,
                "goal_rate": 0.116,
                "goals": 0,
                "shots_on_target": 0.3004,
                "total_shots": 0.8973,
                "expected_assists": 0.0794,
                "key_pass": 0.872,
                "rating": 6.741,
                "minutes": 77.73,
                "total_pass": 22.0366,
                "accurate_pass": 16.6421,
                "duels_won": 2.5697,
                "total_long_balls": 1.981,
                "accurate_long_balls": 0.8102,
                "total_opp_half_passes": 14.8812,
                "accurate_opp_half_passes": 10.5962,
                "crosses_total": 3.9036,
                "crosses_accurate": 1.0296,
                "touches": 35.8503,
                "possession_lost": 11.2229,
                "dispossessed": 0.7164,
                "duels_lost": 3.0163,
                "aerial_lost": 0.3757,
                "total_contest": 1.3538,
                "won_contest": 0.7625,
                "ball_recovery": 3.3583,
                "challenges_lost": 0.8791,
                "fouls": 0.4539,
                "fouls_drawn": 0.5314,
                "assist_rate": 0.137,
                "assists": 0,
                "interceptions": 0.408,
                "tackles_won": 0.8393,
                "tackles": 1.06,
                "clearances": 1.0128,
                "blocks": 0.0,
                "big_chances_created": 0.1799,
                "big_chances_missed": 0.0742,
                "xgot": 0.0664,
                "offsides": 0.423,
                "ball_carries": 11.5594,
                "total_progression": 35.4092,
                "progressive_carries": 1.79,
                "shots_off_target": 0.5969,
                "duel_xg_multiplier": 0.7419,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1083,
                "projected_assists": 0,
                "assist_probability": 0.0763,
                "finishing_factor": 1.0209,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0763,
                "assist_rate": 0.137,
                "provider_weight": 0.0993,
                "squad_weight_total": 0.6412,
                "weight_share": 0.1548,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 13
              }
            }
          ]
        },
        "Javier Guerra": {
          "player_id": 1122610,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 8,
          "height": 187,
          "market_value": 26000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1193,
            "assist_rate": 0.1179,
            "assists": 0,
            "expected_goals": 0.1871,
            "goal_rate": 0.2414,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 3,
            "rating": 6.8918,
            "minutes": 83,
            "total_pass": 27,
            "accurate_pass": 20,
            "duels_won": 5,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 11,
            "accurate_own_half_passes": 10,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 10,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 47,
            "possession_lost": 15.9514,
            "dispossessed": 1.8319,
            "duels_lost": 6,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 4,
            "won_contest": 2,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1611,
            "ball_carries": 14,
            "total_progression": 76,
            "progressive_carries": 2,
            "shots_off_target": 2,
            "duel_xg_multiplier": 1.0965,
            "dribbles_attempted": 4,
            "dribbles_successful": 1.9,
            "crosses_attempted": 2.3,
            "duel_win_rate": 0.546,
            "pressing_faced": "LOW",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "numerical_situation": "1v1",
            "opponent_defenders": "Sergi Cardona",
            "opponent_faced": "Sergi Cardona",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1706,
            "projected_assists": 0,
            "assist_probability": 0.1125,
            "finishing_factor": 1.2458,
            "creation_factor": 1.003,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2962,
                "expected_assists": 0.1375,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 20,
                "accurate_pass": 14,
                "key_pass": 3,
                "tackles": 2,
                "tackles_won": 2,
                "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": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 85,
                "rating": 7.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.2179,
                "expected_assists": 0.0142,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 34,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 9,
                "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": 16416297,
              "match_date": "2026-09-20",
              "home_team": "Valencia",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3246,
                "expected_assists": 0.0112,
                "total_shots": 6,
                "shots_on_target": 1,
                "shots_off_target": 3,
                "total_pass": 25,
                "accurate_pass": 16,
                "tackles": 2,
                "tackles_won": 2,
                "duels_won": 8,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1159,
                "expected_assists": 0.2396,
                "total_shots": 2,
                "total_pass": 31,
                "accurate_pass": 23,
                "key_pass": 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": 16416330,
              "match_date": "2026-09-11",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 83,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0047,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 10,
                "key_pass": 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": 16416325,
              "match_date": "2026-09-06",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 62,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 6,
                "tackles": 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": 16416291,
              "match_date": "2026-08-30",
              "home_team": "Deportivo de A Coruña",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 60,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.181,
                "expected_assists": 0.0099,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 27,
                "accurate_pass": 22,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421049,
              "match_date": "2026-08-25",
              "home_team": "Valencia",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2196,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 34,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0707,
                "expected_assists": 0.0283,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 38,
                "accurate_pass": 27,
                "key_pass": 1,
                "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": 14083739,
              "match_date": "2026-05-23",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 89,
                "rating": 7.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2783,
                "expected_assists": 0.0696,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 8,
                "key_pass": 2,
                "interceptions": 1,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1314,
            "combined_rank_score": 499.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 571.0,
            "sofascore_rating": 6.8086,
            "sofascore_appearances": 36.0,
            "fifa_rank": 428.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8918,
            "source_file": "data/player_rankings.csv",
            "player_name": "Javier Guerra",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lukáš Haraslín",
                  "ranking": 1309
                },
                {
                  "player_name": "Marko Dmitrović",
                  "ranking": 1310
                },
                {
                  "player_name": "Tino Livramento",
                  "ranking": 1311
                },
                {
                  "player_name": "Yéremy Pino",
                  "ranking": 1312
                },
                {
                  "player_name": "Cecilio Waterman",
                  "ranking": 1313
                }
              ],
              "lower": [
                {
                  "player_name": "Pedro Gonçalves",
                  "ranking": 1315
                },
                {
                  "player_name": "Matheus Cunha",
                  "ranking": 1316
                },
                {
                  "player_name": "Pacha",
                  "ranking": 1317
                },
                {
                  "player_name": "Facundo Mater",
                  "ranking": 1318
                },
                {
                  "player_name": "Azzedine Ounahi",
                  "ranking": 1319
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.777,
          "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.777,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0054,
            "fbref_prior_metrics": {
              "squad": "Valencia",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 239.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 1.13,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.18
            },
            "rationale": "XGBoost regressor (M_service) evaluated 45 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Valencia, rel: 0.18, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 1.409,
                "expected_assists": 0.1168,
                "assists": 0.1187,
                "assist_rate": 0.1187,
                "expected_goals": 0.1668,
                "goals": 0.2216,
                "goal_rate": 0.2216,
                "shots_on_target": 0.6781,
                "total_shots": 2.1172,
                "rating": 6.8918,
                "minutes": 82.9,
                "total_pass": 26.9815,
                "accurate_pass": 20.2377,
                "duels_won": 4.8915,
                "total_long_balls": 3.2481,
                "accurate_long_balls": 1.4306,
                "total_own_half_passes": 11.2379,
                "accurate_own_half_passes": 9.8256,
                "total_opp_half_passes": 15.7436,
                "accurate_opp_half_passes": 10.4121,
                "crosses_total": 2.1173,
                "crosses_accurate": 0.6636,
                "touches": 46.5625,
                "possession_lost": 15.8657,
                "dispossessed": 1.8221,
                "duels_lost": 6.3752,
                "aerial_won": 0.7236,
                "aerial_lost": 0.8,
                "interceptions": 0.4748,
                "tackles_won": 0.7805,
                "tackles": 1.1027,
                "clearances": 0.4618,
                "total_contest": 4.0246,
                "won_contest": 1.9873,
                "challenges_lost": 0.9595,
                "fouls": 0.7631,
                "fouls_drawn": 1.0779,
                "blocks": 0.0794,
                "big_chances_created": 0.3,
                "big_chances_missed": 0.3256,
                "xgot": 0.1436,
                "ball_carries": 13.8405,
                "total_progression": 76.0757,
                "progressive_carries": 1.9955,
                "shots_off_target": 1.4391
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1084,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-11",
                    "opponent": "Sevilla",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "FC Barcelona",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-25",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "FC Barcelona",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "creative_index": 0.5828,
                  "totalShots": 2.2247,
                  "expectedGoals": 0.1832,
                  "expectedAssists": 0.0824,
                  "onTargetScoringAttempt": 0.5998
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.4090179204940796,
                    "model_output": 1.409,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1187
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.1163
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0754
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0542
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0517
                        }
                      ],
                      "others": 0.0982,
                      "total": 1.409,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124654
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.108695
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.064605
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.043964
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.040262
                        }
                      ],
                      "others_margin": 0.072221
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.1167994812130928,
                    "model_output": 0.1168,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0088
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0067
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0062
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0058
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0052
                        }
                      ],
                      "others": 0.0106,
                      "total": 0.1168,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.097622
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.06858
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.063111
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.059333
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.050471
                        }
                      ],
                      "others_margin": 0.094528
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.11868426948785782,
                    "model_output": 0.1187,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0086
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0083
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0074
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0076
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0066
                        }
                      ],
                      "others": 0.006,
                      "total": 0.1187,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.09376
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.082969
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.068601
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.066241
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.057051
                        }
                      ],
                      "others_margin": 0.051454
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.16675205528736115,
                    "model_output": 0.1668,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0269
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0226
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0168
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0134
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0062
                        }
                      ],
                      "others": 0.0137,
                      "total": 0.1668,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.252146
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.171094
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.110782
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.087154
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.041337
                        }
                      ],
                      "others_margin": 0.085467
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.2216484397649765,
                    "model_output": 0.2216,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0416
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0294
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0204
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0172
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0191
                        }
                      ],
                      "others": 0.0354,
                      "total": 0.2216,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.349901
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.189202
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.127847
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.108783
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.108273
                        }
                      ],
                      "others_margin": 0.174472
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.6781136989593506,
                    "model_output": 0.6781,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.1121
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0867
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.082
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0399
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0161
                        }
                      ],
                      "others": 0.0951,
                      "total": 0.6781,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.295466
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.180594
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.145207
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.068034
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.027962
                        }
                      ],
                      "others_margin": 0.151137
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.1172451972961426,
                    "model_output": 2.1172,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.7429
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1757
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0479
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0388
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0377
                        }
                      ],
                      "others": 0.1527,
                      "total": 2.1172,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.74289
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.175707
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.047897
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.038839
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.037658
                        }
                      ],
                      "others_margin": 0.152675
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.8917694091796875,
                    "model_output": 6.8918,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0395
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0268
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0225
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.019
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0165
                        }
                      ],
                      "others": -0.0106,
                      "total": 6.8918,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.039494
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.02682
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.022466
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.019041
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.016454
                        }
                      ],
                      "others_margin": -0.010717
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 45,
                  "role_matches": 34,
                  "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.0054, quality 0.686)",
              "stats": {
                "key_pass": 1.4166,
                "expected_assists": 0.1174,
                "assists": 0.1193,
                "assist_rate": 0.1193,
                "expected_goals": 0.1677,
                "goals": 0.2228,
                "goal_rate": 0.2228,
                "shots_on_target": 0.6818,
                "total_shots": 2.1287,
                "rating": 6.8918,
                "minutes": 82.9,
                "total_pass": 27.1272,
                "accurate_pass": 20.347,
                "duels_won": 4.9179,
                "total_long_balls": 3.2656,
                "accurate_long_balls": 1.4383,
                "total_own_half_passes": 11.2986,
                "accurate_own_half_passes": 9.8787,
                "total_opp_half_passes": 15.8286,
                "accurate_opp_half_passes": 10.4683,
                "crosses_total": 2.1287,
                "crosses_accurate": 0.6672,
                "touches": 46.8139,
                "possession_lost": 15.9514,
                "dispossessed": 1.8319,
                "duels_lost": 6.4096,
                "aerial_won": 0.7275,
                "aerial_lost": 0.8043,
                "interceptions": 0.4774,
                "tackles_won": 0.7847,
                "tackles": 1.1087,
                "clearances": 0.4643,
                "total_contest": 4.0463,
                "won_contest": 1.998,
                "challenges_lost": 0.9647,
                "fouls": 0.7672,
                "fouls_drawn": 1.0837,
                "blocks": 0.0798,
                "big_chances_created": 0.3016,
                "big_chances_missed": 0.3274,
                "xgot": 0.1444,
                "ball_carries": 13.9152,
                "total_progression": 76.4865,
                "progressive_carries": 2.0063,
                "shots_off_target": 1.4469
              },
              "params": {
                "market_value_eur": 26000000,
                "quality_factor": 0.6858,
                "boost_factor": 1.0054,
                "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.0117)",
              "stats": {
                "key_pass": 1.4166,
                "expected_assists": 0.1174,
                "assists": 0.1179,
                "assist_rate": 0.1179,
                "expected_goals": 0.1677,
                "goals": 0.2202,
                "goal_rate": 0.2202,
                "shots_on_target": 0.6738,
                "total_shots": 2.116,
                "rating": 6.8918,
                "minutes": 82.9,
                "total_pass": 27.1272,
                "accurate_pass": 20.347,
                "duels_won": 4.9179,
                "total_long_balls": 3.2656,
                "accurate_long_balls": 1.4383,
                "total_own_half_passes": 11.2986,
                "accurate_own_half_passes": 9.8787,
                "total_opp_half_passes": 15.8286,
                "accurate_opp_half_passes": 10.4683,
                "crosses_total": 2.1317,
                "crosses_accurate": 0.6672,
                "touches": 46.8139,
                "possession_lost": 15.9514,
                "dispossessed": 1.8319,
                "duels_lost": 6.4096,
                "aerial_won": 0.7275,
                "aerial_lost": 0.8043,
                "interceptions": 0.4758,
                "tackles_won": 0.7835,
                "tackles": 1.1087,
                "clearances": 0.4643,
                "total_contest": 4.0463,
                "won_contest": 1.998,
                "challenges_lost": 0.9647,
                "fouls": 0.7582,
                "fouls_drawn": 1.083,
                "blocks": 0.0798,
                "big_chances_created": 0.3016,
                "big_chances_missed": 0.3274,
                "xgot": 0.1444,
                "ball_carries": 13.9152,
                "total_progression": 76.4865,
                "progressive_carries": 2.0063,
                "shots_off_target": 1.4469
              },
              "params": {
                "blend_weight": 0.0117,
                "history_matches": 45,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9211,
                "prior_reliability": 0.18,
                "competition": "La Liga",
                "squad": "Valencia"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.1287,
                  "after": 2.116
                },
                {
                  "stat": "fouls",
                  "before": 0.7672,
                  "after": 0.7582
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.6818,
                  "after": 0.6738
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.4166,
                "expected_assists": 0.1174,
                "assists": 0.1179,
                "assist_rate": 0.1179,
                "expected_goals": 0.1677,
                "goals": 0.2202,
                "goal_rate": 0.2202,
                "shots_on_target": 0.6738,
                "total_shots": 2.1207,
                "rating": 6.8918,
                "minutes": 82.9,
                "total_pass": 27.1272,
                "accurate_pass": 20.347,
                "duels_won": 4.9179,
                "total_long_balls": 3.2656,
                "accurate_long_balls": 1.4383,
                "total_own_half_passes": 11.2986,
                "accurate_own_half_passes": 9.8787,
                "total_opp_half_passes": 15.8286,
                "accurate_opp_half_passes": 10.4683,
                "crosses_total": 2.1317,
                "crosses_accurate": 0.6672,
                "touches": 46.8139,
                "possession_lost": 15.9514,
                "dispossessed": 1.8319,
                "duels_lost": 6.4096,
                "aerial_won": 0.7275,
                "aerial_lost": 0.8043,
                "interceptions": 0.4758,
                "tackles_won": 0.7835,
                "tackles": 1.1087,
                "clearances": 0.4643,
                "total_contest": 4.0463,
                "won_contest": 1.998,
                "challenges_lost": 0.9647,
                "fouls": 0.7582,
                "fouls_drawn": 1.083,
                "blocks": 0.0798,
                "big_chances_created": 0.3016,
                "big_chances_missed": 0.3274,
                "xgot": 0.1444,
                "ball_carries": 13.9152,
                "total_progression": 76.4865,
                "progressive_carries": 2.0063,
                "shots_off_target": 1.4469
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "key_pass": 1.4166,
                "expected_assists": 0.1174,
                "assists": 0.1179,
                "assist_rate": 0.1179,
                "expected_goals": 0.1839,
                "goals": 0.2414,
                "goal_rate": 0.2414,
                "shots_on_target": 0.7388,
                "total_shots": 2.3253,
                "rating": 6.8918,
                "minutes": 82.9,
                "total_pass": 27.1272,
                "accurate_pass": 20.347,
                "duels_won": 4.9179,
                "total_long_balls": 3.2656,
                "accurate_long_balls": 1.4383,
                "total_own_half_passes": 11.2986,
                "accurate_own_half_passes": 9.8787,
                "total_opp_half_passes": 15.8286,
                "accurate_opp_half_passes": 10.4683,
                "crosses_total": 2.1317,
                "crosses_accurate": 0.6672,
                "touches": 46.8139,
                "possession_lost": 15.9514,
                "dispossessed": 1.8319,
                "duels_lost": 6.4096,
                "aerial_won": 1.2,
                "aerial_lost": 0.8043,
                "interceptions": 0.4758,
                "tackles_won": 0.7835,
                "tackles": 1.1087,
                "clearances": 0.4643,
                "total_contest": 4.0463,
                "won_contest": 1.998,
                "challenges_lost": 0.9647,
                "fouls": 0.7582,
                "fouls_drawn": 1.083,
                "blocks": 0.0798,
                "big_chances_created": 0.3016,
                "big_chances_missed": 0.359,
                "xgot": 0.1583,
                "ball_carries": 13.9152,
                "total_progression": 76.4865,
                "progressive_carries": 2.0063,
                "shots_off_target": 1.5865,
                "duel_xg_multiplier": 1.0965,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.9,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.546,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sergi Cardona",
                "opponent_faced": "Sergi Cardona",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Sergi Cardona",
                  "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                  "duel_win_rate": 0.546,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.0965,
                  "skill_edge": 0.0616,
                  "height_edge": 0.004,
                  "attacker_skill": 0.6858,
                  "defender_skill": 0.5489,
                  "attacker_role": "LW",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Sergi Cardona",
                      "market_value": 8600000,
                      "role": "RB",
                      "price_index": 0.7,
                      "adjusted_quality": 0.5489
                    }
                  ],
                  "xg_override": 0.1839
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.7275,
                  "after": 1.2
                },
                {
                  "stat": "totalShots",
                  "before": 2.1207,
                  "after": 2.3253
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.4469,
                  "after": 1.5865
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.6738,
                  "after": 0.7388
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.3274,
                  "after": 0.359
                },
                {
                  "stat": "goals",
                  "before": 0.2202,
                  "after": 0.2414
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1677,
                  "after": 0.1839
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.1444,
                  "after": 0.1583
                }
              ]
            },
            {
              "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.4166,
                "expected_assists": 0.1174,
                "assist_rate": 0.1179,
                "assists": 0,
                "expected_goals": 0.1839,
                "goal_rate": 0.2414,
                "goals": 0,
                "shots_on_target": 0.7388,
                "total_shots": 2.3253,
                "rating": 6.8918,
                "minutes": 82.9,
                "total_pass": 27.1272,
                "accurate_pass": 20.347,
                "duels_won": 4.9179,
                "total_long_balls": 3.2656,
                "accurate_long_balls": 1.4383,
                "total_own_half_passes": 11.2986,
                "accurate_own_half_passes": 9.8787,
                "total_opp_half_passes": 15.8286,
                "accurate_opp_half_passes": 10.4683,
                "crosses_total": 2.1317,
                "crosses_accurate": 0.6672,
                "touches": 46.8139,
                "possession_lost": 15.9514,
                "dispossessed": 1.8319,
                "duels_lost": 6.4096,
                "aerial_won": 1.2,
                "aerial_lost": 0.8043,
                "interceptions": 0.4758,
                "tackles_won": 0.7835,
                "tackles": 1.1087,
                "clearances": 0.4643,
                "total_contest": 4.0463,
                "won_contest": 1.998,
                "challenges_lost": 0.9647,
                "fouls": 0.7582,
                "fouls_drawn": 1.083,
                "blocks": 0.0798,
                "big_chances_created": 0.3016,
                "big_chances_missed": 0.359,
                "xgot": 0.1583,
                "ball_carries": 13.9152,
                "total_progression": 76.4865,
                "progressive_carries": 2.0063,
                "shots_off_target": 1.5865,
                "duel_xg_multiplier": 1.0965,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.9,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.546,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sergi Cardona",
                "opponent_faced": "Sergi Cardona",
                "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.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "key_pass": 1.4166,
                "expected_assists": 0.1193,
                "assist_rate": 0.1179,
                "assists": 0,
                "expected_goals": 0.1871,
                "goal_rate": 0.2414,
                "goals": 0,
                "shots_on_target": 0.7388,
                "total_shots": 2.3253,
                "rating": 6.8918,
                "minutes": 82.9,
                "total_pass": 27.1272,
                "accurate_pass": 20.347,
                "duels_won": 4.9179,
                "total_long_balls": 3.2656,
                "accurate_long_balls": 1.4383,
                "total_own_half_passes": 11.2986,
                "accurate_own_half_passes": 9.8787,
                "total_opp_half_passes": 15.8286,
                "accurate_opp_half_passes": 10.4683,
                "crosses_total": 2.1317,
                "crosses_accurate": 0.6672,
                "touches": 46.8139,
                "possession_lost": 15.9514,
                "dispossessed": 1.8319,
                "duels_lost": 6.4096,
                "aerial_won": 1.2,
                "aerial_lost": 0.8043,
                "interceptions": 0.4758,
                "tackles_won": 0.7835,
                "tackles": 1.1087,
                "clearances": 0.4643,
                "total_contest": 4.0463,
                "won_contest": 1.998,
                "challenges_lost": 0.9647,
                "fouls": 0.7582,
                "fouls_drawn": 1.083,
                "blocks": 0.0798,
                "big_chances_created": 0.3016,
                "big_chances_missed": 0.359,
                "xgot": 0.1611,
                "ball_carries": 13.9152,
                "total_progression": 76.4865,
                "progressive_carries": 2.0063,
                "shots_off_target": 1.5865,
                "duel_xg_multiplier": 1.0965,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.9,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.546,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sergi Cardona",
                "opponent_faced": "Sergi Cardona",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2458,
                "creation_factor": 1.003
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 82.0)",
              "stats": {
                "key_pass": 1.4166,
                "expected_assists": 0.1193,
                "assist_rate": 0.1179,
                "assists": 0,
                "expected_goals": 0.1871,
                "goal_rate": 0.2414,
                "goals": 0,
                "shots_on_target": 0.7388,
                "total_shots": 2.3253,
                "rating": 6.8918,
                "minutes": 82.9,
                "total_pass": 27.1272,
                "accurate_pass": 20.347,
                "duels_won": 4.9179,
                "total_long_balls": 3.2656,
                "accurate_long_balls": 1.4383,
                "total_own_half_passes": 11.2986,
                "accurate_own_half_passes": 9.8787,
                "total_opp_half_passes": 15.8286,
                "accurate_opp_half_passes": 10.4683,
                "crosses_total": 2.1317,
                "crosses_accurate": 0.6672,
                "touches": 46.8139,
                "possession_lost": 15.9514,
                "dispossessed": 1.8319,
                "duels_lost": 6.4096,
                "aerial_won": 1.2,
                "aerial_lost": 0.8043,
                "interceptions": 0.4758,
                "tackles_won": 0.7835,
                "tackles": 1.1087,
                "clearances": 0.4643,
                "total_contest": 4.0463,
                "won_contest": 1.998,
                "challenges_lost": 0.9647,
                "fouls": 0.7582,
                "fouls_drawn": 1.083,
                "blocks": 0.0798,
                "big_chances_created": 0.3016,
                "big_chances_missed": 0.359,
                "xgot": 0.1611,
                "ball_carries": 13.9152,
                "total_progression": 76.4865,
                "progressive_carries": 2.0063,
                "shots_off_target": 1.5865,
                "duel_xg_multiplier": 1.0965,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.9,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.546,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sergi Cardona",
                "opponent_faced": "Sergi Cardona",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2458,
                "creation_factor": 1.003,
                "fifa_overall": 82.0
              },
              "params": {
                "match_squad_rank": 3,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 1314,
                "fifa_rank": 428.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 82.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 1.4166,
                "expected_assists": 0.1193,
                "assist_rate": 0.1179,
                "assists": 0,
                "expected_goals": 0.1871,
                "goal_rate": 0.2414,
                "goals": 0,
                "shots_on_target": 0.7388,
                "total_shots": 2.3253,
                "rating": 6.8918,
                "minutes": 82.9,
                "total_pass": 27.1272,
                "accurate_pass": 20.347,
                "duels_won": 4.9179,
                "total_long_balls": 3.2656,
                "accurate_long_balls": 1.4383,
                "total_own_half_passes": 11.2986,
                "accurate_own_half_passes": 9.8787,
                "total_opp_half_passes": 15.8286,
                "accurate_opp_half_passes": 10.4683,
                "crosses_total": 2.1317,
                "crosses_accurate": 0.6672,
                "touches": 46.8139,
                "possession_lost": 15.9514,
                "dispossessed": 1.8319,
                "duels_lost": 6.4096,
                "aerial_won": 1.2,
                "aerial_lost": 0.8043,
                "interceptions": 0.4758,
                "tackles_won": 0.7835,
                "tackles": 1.1087,
                "clearances": 0.4643,
                "total_contest": 4.0463,
                "won_contest": 1.998,
                "challenges_lost": 0.9647,
                "fouls": 0.7582,
                "fouls_drawn": 1.083,
                "blocks": 0.0798,
                "big_chances_created": 0.3016,
                "big_chances_missed": 0.359,
                "xgot": 0.1611,
                "ball_carries": 13.9152,
                "total_progression": 76.4865,
                "progressive_carries": 2.0063,
                "shots_off_target": 1.5865,
                "duel_xg_multiplier": 1.0965,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.9,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.546,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sergi Cardona",
                "opponent_faced": "Sergi Cardona",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1706,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2458,
                "creation_factor": 1.003,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.1706,
                "goal_rate": 0.2414,
                "scorer_weight": 0.2331,
                "squad_weight_total": 0.9718,
                "weight_share": 0.2399,
                "finishing_factor": 1.2458,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 1.4166,
                "expected_assists": 0.1193,
                "assist_rate": 0.1179,
                "assists": 0,
                "expected_goals": 0.1871,
                "goal_rate": 0.2414,
                "goals": 0,
                "shots_on_target": 0.7388,
                "total_shots": 2.3253,
                "rating": 6.8918,
                "minutes": 82.9,
                "total_pass": 27.1272,
                "accurate_pass": 20.347,
                "duels_won": 4.9179,
                "total_long_balls": 3.2656,
                "accurate_long_balls": 1.4383,
                "total_own_half_passes": 11.2986,
                "accurate_own_half_passes": 9.8787,
                "total_opp_half_passes": 15.8286,
                "accurate_opp_half_passes": 10.4683,
                "crosses_total": 2.1317,
                "crosses_accurate": 0.6672,
                "touches": 46.8139,
                "possession_lost": 15.9514,
                "dispossessed": 1.8319,
                "duels_lost": 6.4096,
                "aerial_won": 1.2,
                "aerial_lost": 0.8043,
                "interceptions": 0.4758,
                "tackles_won": 0.7835,
                "tackles": 1.1087,
                "clearances": 0.4643,
                "total_contest": 4.0463,
                "won_contest": 1.998,
                "challenges_lost": 0.9647,
                "fouls": 0.7582,
                "fouls_drawn": 1.083,
                "blocks": 0.0798,
                "big_chances_created": 0.3016,
                "big_chances_missed": 0.359,
                "xgot": 0.1611,
                "ball_carries": 13.9152,
                "total_progression": 76.4865,
                "progressive_carries": 2.0063,
                "shots_off_target": 1.5865,
                "duel_xg_multiplier": 1.0965,
                "dribbles_attempted": 4.0,
                "dribbles_successful": 1.9,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.546,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Sergi Cardona",
                "opponent_faced": "Sergi Cardona",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1706,
                "projected_assists": 0,
                "assist_probability": 0.1125,
                "finishing_factor": 1.2458,
                "creation_factor": 1.003,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.1125,
                "assist_rate": 0.1179,
                "provider_weight": 0.1197,
                "squad_weight_total": 0.6412,
                "weight_share": 0.1866,
                "creation_factor": 1.003,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 13
              }
            }
          ]
        },
        "Dani Raba": {
          "player_id": 873947,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 19,
          "height": 184,
          "market_value": 1000000,
          "stats": {
            "expected_goals": 0.1522,
            "goal_rate": 0.1572,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0622,
            "key_pass": 1,
            "rating": 6.8271,
            "minutes": 62,
            "total_pass": 16,
            "accurate_pass": 11,
            "duels_won": 3,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 6,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 29,
            "possession_lost": 9.0102,
            "dispossessed": 1.1123,
            "duels_lost": 5,
            "aerial_lost": 0,
            "total_contest": 3,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 1,
            "assist_rate": 0.14,
            "assists": 0,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1704,
            "offsides": 0,
            "ball_carries": 10,
            "total_progression": 13,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.8007,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Renato Veiga, Alexander Freeman",
            "opponent_faced": "Renato Veiga, Alexander Freeman",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1412,
            "projected_assists": 0,
            "assist_probability": 0.0603,
            "finishing_factor": 1.0381,
            "creation_factor": 1.25,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 54,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0258,
                "expected_assists": 0.0033,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 16,
                "accurate_pass": 11,
                "interceptions": 1,
                "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": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 58,
                "rating": 7.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4946,
                "expected_assists": 0.0392,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 14,
                "key_pass": 1,
                "interceptions": 1,
                "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": 16416291,
              "match_date": "2026-08-30",
              "home_team": "Deportivo de A Coruña",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 8,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0113,
                "expected_assists": 0.011,
                "total_shots": 1,
                "total_pass": 9,
                "accurate_pass": 6,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083476,
              "match_date": "2026-05-02",
              "home_team": "Valencia",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 8,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1998,
                "expected_assists": 0.0046,
                "total_shots": 2,
                "total_pass": 8,
                "accurate_pass": 7,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081799,
              "match_date": "2026-03-08",
              "home_team": "Valencia",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0086,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 12,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083141,
              "match_date": "2025-12-01",
              "home_team": "Rayo Vallecano",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0206,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083133,
              "match_date": "2025-11-21",
              "home_team": "Valencia",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 14,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083116,
              "match_date": "2025-11-09",
              "home_team": "Valencia",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 13,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0556,
                "expected_assists": 0.0028,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 6,
                "tackles": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083717,
              "match_date": "2025-10-25",
              "home_team": "Valencia",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 13,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0249,
                "expected_assists": 0.0185,
                "total_shots": 1,
                "total_pass": 4,
                "accurate_pass": 4,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083655,
              "match_date": "2025-10-20",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 19,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0186,
                "expected_assists": 0.0031,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 4,
                "accurate_pass": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3861,
            "combined_rank_score": 1855.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2888.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8271,
            "source_file": "data/player_rankings.csv",
            "player_name": "Dani Raba",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Elliot Stroud",
                  "ranking": 3856
                },
                {
                  "player_name": "Rani Khedira",
                  "ranking": 3857
                },
                {
                  "player_name": "Lee Jae Sung",
                  "ranking": 3858
                },
                {
                  "player_name": "Ellyes Skhiri",
                  "ranking": 3859
                },
                {
                  "player_name": "Maximilian Eggestein",
                  "ranking": 3860
                }
              ],
              "lower": [
                {
                  "player_name": "Ragnar Ache",
                  "ranking": 3862
                },
                {
                  "player_name": "Dimitris Giannoulis",
                  "ranking": 3863
                },
                {
                  "player_name": "Marcelino Núñez",
                  "ranking": 3864
                },
                {
                  "player_name": "Finn Dahmen",
                  "ranking": 3865
                },
                {
                  "player_name": "Keven Schlotterbeck",
                  "ranking": 3866
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.751,
          "history_matches": 16,
          "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": 16,
            "data_confidence": 0.751,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9952,
            "fbref_prior_metrics": {
              "squad": "Valencia",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "minutes": 9.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 10.0,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.0067
            },
            "rationale": "XGBoost regressor (F_service) evaluated 16 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Valencia, rel: 0.01, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1877,
                "goals": 0.1975,
                "goal_rate": 0.1975,
                "shots_on_target": 0.6812,
                "total_shots": 1.603,
                "expected_assists": 0.0614,
                "key_pass": 0.7356,
                "rating": 6.8271,
                "minutes": 61.57,
                "total_pass": 15.9595,
                "accurate_pass": 11.373,
                "duels_won": 2.8477,
                "total_long_balls": 2.7069,
                "accurate_long_balls": 1.48,
                "total_opp_half_passes": 9.6371,
                "accurate_opp_half_passes": 6.2746,
                "crosses_total": 0.794,
                "crosses_accurate": 0.4584,
                "touches": 28.987,
                "possession_lost": 9.0537,
                "dispossessed": 1.1177,
                "duels_lost": 5.3946,
                "aerial_lost": 0.4645,
                "total_contest": 2.626,
                "won_contest": 0.8344,
                "ball_recovery": 2.2673,
                "challenges_lost": 0.4584,
                "fouls": 1.5624,
                "fouls_drawn": 1.1789,
                "assists": 0.1408,
                "assist_rate": 0.1408,
                "interceptions": 0.8052,
                "tackles_won": 0.3356,
                "tackles": 0.3356,
                "clearances": 0.4988,
                "blocks": 0.0,
                "big_chances_created": 0.3699,
                "big_chances_missed": 0.2292,
                "xgot": 0.2102,
                "offsides": 0.0,
                "ball_carries": 9.6643,
                "total_progression": 12.6747,
                "progressive_carries": 1.4595,
                "shots_off_target": 0.9218
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 54.0,
                    "is_starting": true,
                    "weight": 0.162,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.1377,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1171,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Atlético Madrid",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0995,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-08",
                    "opponent": "Deportivo Alavés",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0846,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2025-12-01",
                    "opponent": "Rayo Vallecano",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0719,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2025-11-21",
                    "opponent": "Levante UD",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0611,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2025-11-09",
                    "opponent": "Real Betis",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0519,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2025-10-25",
                    "opponent": "Villarreal",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0442,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2025-10-20",
                    "opponent": "Deportivo Alavés",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.0375,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 16.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.0998,
                  "totalOppositionHalfPasses": 7.6697,
                  "accurateOppositionHalfPasses": 5.5054,
                  "accuratePass": 8.3509,
                  "totalShots": 1.1578
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.18774990737438202,
                    "model_output": 0.1877,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0726
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0388
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0099
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0081
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0074
                        }
                      ],
                      "others": -0.0186,
                      "total": 0.1877,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.312562
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.154702
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.043503
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.037351
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.035059
                        }
                      ],
                      "others_margin": -0.094657
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.19748657941818237,
                    "model_output": 0.1975,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0633
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.037
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0184
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.01
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0071
                        }
                      ],
                      "others": -0.0098,
                      "total": 0.1975,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.272328
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.149864
                        },
                        {
                          "name": "goals",
                          "margin": -0.084042
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.048632
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.034859
                        }
                      ],
                      "others_margin": -0.048753
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.681212842464447,
                    "model_output": 0.6812,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1991
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0417
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0314
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0305
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0307
                        }
                      ],
                      "others": -0.0422,
                      "total": 0.6812,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.315816
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.058384
                        },
                        {
                          "name": "goals",
                          "margin": -0.04627
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.045014
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": 0.043366
                        }
                      ],
                      "others_margin": -0.06016
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.6030309200286865,
                    "model_output": 1.603,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4603
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.182
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0558
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0463
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0318
                        }
                      ],
                      "others": -0.0337,
                      "total": 1.603,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.460268
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.181972
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.055848
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.046314
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.03177
                        }
                      ],
                      "others_margin": -0.033778
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.061409033834934235,
                    "model_output": 0.0614,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0148
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0139
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0135
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0081
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0067
                        }
                      ],
                      "others": -0.0034,
                      "total": 0.0614,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.207324
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.161964
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.155941
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.107653
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.098877
                        }
                      ],
                      "others_margin": -0.055049
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.735638439655304,
                    "model_output": 0.7356,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1874
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0586
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0567
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0514
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0396
                        }
                      ],
                      "others": -0.0394,
                      "total": 0.7356,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.24329
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.069902
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.06774
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.061185
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.049773
                        }
                      ],
                      "others_margin": -0.052201
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.827095031738281,
                    "model_output": 6.8271,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0639
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0544
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0279
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0181
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0126
                        }
                      ],
                      "others": -0.0567,
                      "total": 6.8271,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.063928
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.054432
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.027869
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.018072
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.01256
                        }
                      ],
                      "others_margin": -0.056781
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 16,
                  "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.9952, quality 0.437)",
              "stats": {
                "expected_goals": 0.1868,
                "goals": 0.1965,
                "goal_rate": 0.1965,
                "shots_on_target": 0.6779,
                "total_shots": 1.5953,
                "expected_assists": 0.0611,
                "key_pass": 0.7321,
                "rating": 6.8271,
                "minutes": 61.57,
                "total_pass": 15.8829,
                "accurate_pass": 11.3184,
                "duels_won": 2.834,
                "total_long_balls": 2.6939,
                "accurate_long_balls": 1.4729,
                "total_opp_half_passes": 9.5908,
                "accurate_opp_half_passes": 6.2445,
                "crosses_total": 0.7902,
                "crosses_accurate": 0.4562,
                "touches": 28.8479,
                "possession_lost": 9.0102,
                "dispossessed": 1.1123,
                "duels_lost": 5.3687,
                "aerial_lost": 0.4623,
                "total_contest": 2.6134,
                "won_contest": 0.8304,
                "ball_recovery": 2.2564,
                "challenges_lost": 0.4562,
                "fouls": 1.5549,
                "fouls_drawn": 1.1732,
                "assists": 0.1401,
                "assist_rate": 0.1401,
                "interceptions": 0.8013,
                "tackles_won": 0.334,
                "tackles": 0.334,
                "clearances": 0.4964,
                "blocks": 0.0,
                "big_chances_created": 0.3681,
                "big_chances_missed": 0.2281,
                "xgot": 0.2092,
                "offsides": 0.0,
                "ball_carries": 9.6179,
                "total_progression": 12.6139,
                "progressive_carries": 1.4525,
                "shots_off_target": 0.9174
              },
              "params": {
                "market_value_eur": 1000000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9952,
                "reference_quality": 0.505,
                "history_matches": 16,
                "history_shrink": 0.2381,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0010)",
              "stats": {
                "expected_goals": 0.1868,
                "goals": 0.1963,
                "goal_rate": 0.1963,
                "shots_on_target": 0.6772,
                "total_shots": 1.6007,
                "expected_assists": 0.0611,
                "key_pass": 0.7321,
                "rating": 6.8271,
                "minutes": 61.57,
                "total_pass": 15.8829,
                "accurate_pass": 11.3184,
                "duels_won": 2.834,
                "total_long_balls": 2.6939,
                "accurate_long_balls": 1.4729,
                "total_opp_half_passes": 9.5908,
                "accurate_opp_half_passes": 6.2445,
                "crosses_total": 0.7965,
                "crosses_accurate": 0.4562,
                "touches": 28.8479,
                "possession_lost": 9.0102,
                "dispossessed": 1.1123,
                "duels_lost": 5.3687,
                "aerial_lost": 0.4623,
                "total_contest": 2.6134,
                "won_contest": 0.8304,
                "ball_recovery": 2.2564,
                "challenges_lost": 0.4562,
                "fouls": 1.5533,
                "fouls_drawn": 1.172,
                "assists": 0.14,
                "assist_rate": 0.14,
                "interceptions": 0.8005,
                "tackles_won": 0.3337,
                "tackles": 0.334,
                "clearances": 0.4964,
                "blocks": 0.0,
                "big_chances_created": 0.3681,
                "big_chances_missed": 0.2281,
                "xgot": 0.2092,
                "offsides": 0.0,
                "ball_carries": 9.6179,
                "total_progression": 12.6139,
                "progressive_carries": 1.4525,
                "shots_off_target": 0.9174
              },
              "params": {
                "blend_weight": 0.001,
                "history_matches": 16,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.6841,
                "prior_reliability": 0.0067,
                "competition": "La Liga",
                "squad": "Valencia"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 0.7902,
                  "after": 0.7965
                },
                {
                  "stat": "totalShots",
                  "before": 1.5953,
                  "after": 1.6007
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1868,
                "goals": 0.1963,
                "goal_rate": 0.1963,
                "shots_on_target": 0.6772,
                "total_shots": 1.6007,
                "expected_assists": 0.0611,
                "key_pass": 0.7321,
                "rating": 6.8271,
                "minutes": 61.57,
                "total_pass": 15.8829,
                "accurate_pass": 11.3184,
                "duels_won": 2.834,
                "total_long_balls": 2.6939,
                "accurate_long_balls": 1.4729,
                "total_opp_half_passes": 9.5908,
                "accurate_opp_half_passes": 6.2445,
                "crosses_total": 0.7965,
                "crosses_accurate": 0.4562,
                "touches": 28.8479,
                "possession_lost": 9.0102,
                "dispossessed": 1.1123,
                "duels_lost": 5.3687,
                "aerial_lost": 0.4623,
                "total_contest": 2.6134,
                "won_contest": 0.8304,
                "ball_recovery": 2.2564,
                "challenges_lost": 0.4562,
                "fouls": 1.5533,
                "fouls_drawn": 1.172,
                "assists": 0.14,
                "assist_rate": 0.14,
                "interceptions": 0.8005,
                "tackles_won": 0.3337,
                "tackles": 0.334,
                "clearances": 0.4964,
                "blocks": 0.0,
                "big_chances_created": 0.3681,
                "big_chances_missed": 0.2281,
                "xgot": 0.2092,
                "offsides": 0.0,
                "ball_carries": 9.6179,
                "total_progression": 12.6139,
                "progressive_carries": 1.4525,
                "shots_off_target": 0.9174
              },
              "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.1496,
                "goals": 0.1572,
                "goal_rate": 0.1572,
                "shots_on_target": 0.5422,
                "total_shots": 1.2817,
                "expected_assists": 0.0611,
                "key_pass": 0.7321,
                "rating": 6.8271,
                "minutes": 61.57,
                "total_pass": 15.8829,
                "accurate_pass": 11.3184,
                "duels_won": 2.834,
                "total_long_balls": 2.6939,
                "accurate_long_balls": 1.4729,
                "total_opp_half_passes": 9.5908,
                "accurate_opp_half_passes": 6.2445,
                "crosses_total": 0.7965,
                "crosses_accurate": 0.4562,
                "touches": 28.8479,
                "possession_lost": 9.0102,
                "dispossessed": 1.1123,
                "duels_lost": 5.3687,
                "aerial_lost": 0.4623,
                "total_contest": 2.6134,
                "won_contest": 0.8304,
                "ball_recovery": 2.2564,
                "challenges_lost": 0.4562,
                "fouls": 1.5533,
                "fouls_drawn": 1.172,
                "assists": 0.14,
                "assist_rate": 0.14,
                "interceptions": 0.8005,
                "tackles_won": 0.3337,
                "tackles": 0.334,
                "clearances": 0.4964,
                "blocks": 0.0,
                "big_chances_created": 0.3681,
                "big_chances_missed": 0.1826,
                "xgot": 0.1675,
                "offsides": 0.0,
                "ball_carries": 9.6179,
                "total_progression": 12.6139,
                "progressive_carries": 1.4525,
                "shots_off_target": 0.7346,
                "duel_xg_multiplier": 0.8007,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Renato Veiga, Alexander Freeman",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.8007,
                  "skill_edge": -0.1156,
                  "height_edge": -0.02,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.6943,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Renato Veiga",
                      "market_value": 29000000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.7736
                    },
                    {
                      "player": "Alexander Freeman",
                      "market_value": 13800000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.615
                    }
                  ],
                  "xg_override": 0.1496
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.6007,
                  "after": 1.2817
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.9174,
                  "after": 0.7346
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.6772,
                  "after": 0.5422
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.2281,
                  "after": 0.1826
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.2092,
                  "after": 0.1675
                },
                {
                  "stat": "goals",
                  "before": 0.1963,
                  "after": 0.1572
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1868,
                  "after": 0.1496
                }
              ]
            },
            {
              "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.1496,
                "goal_rate": 0.1572,
                "goals": 0,
                "shots_on_target": 0.5422,
                "total_shots": 1.2817,
                "expected_assists": 0.0611,
                "key_pass": 0.7321,
                "rating": 6.8271,
                "minutes": 61.57,
                "total_pass": 15.8829,
                "accurate_pass": 11.3184,
                "duels_won": 2.834,
                "total_long_balls": 2.6939,
                "accurate_long_balls": 1.4729,
                "total_opp_half_passes": 9.5908,
                "accurate_opp_half_passes": 6.2445,
                "crosses_total": 0.7965,
                "crosses_accurate": 0.4562,
                "touches": 28.8479,
                "possession_lost": 9.0102,
                "dispossessed": 1.1123,
                "duels_lost": 5.3687,
                "aerial_lost": 0.4623,
                "total_contest": 2.6134,
                "won_contest": 0.8304,
                "ball_recovery": 2.2564,
                "challenges_lost": 0.4562,
                "fouls": 1.5533,
                "fouls_drawn": 1.172,
                "assist_rate": 0.14,
                "assists": 0,
                "interceptions": 0.8005,
                "tackles_won": 0.3337,
                "tackles": 0.334,
                "clearances": 0.4964,
                "blocks": 0.0,
                "big_chances_created": 0.3681,
                "big_chances_missed": 0.1826,
                "xgot": 0.1675,
                "offsides": 0.0,
                "ball_carries": 9.6179,
                "total_progression": 12.6139,
                "progressive_carries": 1.4525,
                "shots_off_target": 0.7346,
                "duel_xg_multiplier": 0.8007,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "expected_goals": 0.1522,
                "goal_rate": 0.1572,
                "goals": 0,
                "shots_on_target": 0.5422,
                "total_shots": 1.2817,
                "expected_assists": 0.0622,
                "key_pass": 0.7321,
                "rating": 6.8271,
                "minutes": 61.57,
                "total_pass": 15.8829,
                "accurate_pass": 11.3184,
                "duels_won": 2.834,
                "total_long_balls": 2.6939,
                "accurate_long_balls": 1.4729,
                "total_opp_half_passes": 9.5908,
                "accurate_opp_half_passes": 6.2445,
                "crosses_total": 0.7965,
                "crosses_accurate": 0.4562,
                "touches": 28.8479,
                "possession_lost": 9.0102,
                "dispossessed": 1.1123,
                "duels_lost": 5.3687,
                "aerial_lost": 0.4623,
                "total_contest": 2.6134,
                "won_contest": 0.8304,
                "ball_recovery": 2.2564,
                "challenges_lost": 0.4562,
                "fouls": 1.5533,
                "fouls_drawn": 1.172,
                "assist_rate": 0.14,
                "assists": 0,
                "interceptions": 0.8005,
                "tackles_won": 0.3337,
                "tackles": 0.334,
                "clearances": 0.4964,
                "blocks": 0.0,
                "big_chances_created": 0.3681,
                "big_chances_missed": 0.1826,
                "xgot": 0.1704,
                "offsides": 0.0,
                "ball_carries": 9.6179,
                "total_progression": 12.6139,
                "progressive_carries": 1.4525,
                "shots_off_target": 0.7346,
                "duel_xg_multiplier": 0.8007,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0381,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "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 74.0)",
              "stats": {
                "expected_goals": 0.1522,
                "goal_rate": 0.1572,
                "goals": 0,
                "shots_on_target": 0.5422,
                "total_shots": 1.2817,
                "expected_assists": 0.0622,
                "key_pass": 0.7321,
                "rating": 6.8271,
                "minutes": 61.57,
                "total_pass": 15.8829,
                "accurate_pass": 11.3184,
                "duels_won": 2.834,
                "total_long_balls": 2.6939,
                "accurate_long_balls": 1.4729,
                "total_opp_half_passes": 9.5908,
                "accurate_opp_half_passes": 6.2445,
                "crosses_total": 0.7965,
                "crosses_accurate": 0.4562,
                "touches": 28.8479,
                "possession_lost": 9.0102,
                "dispossessed": 1.1123,
                "duels_lost": 5.3687,
                "aerial_lost": 0.4623,
                "total_contest": 2.6134,
                "won_contest": 0.8304,
                "ball_recovery": 2.2564,
                "challenges_lost": 0.4562,
                "fouls": 1.5533,
                "fouls_drawn": 1.172,
                "assist_rate": 0.14,
                "assists": 0,
                "interceptions": 0.8005,
                "tackles_won": 0.3337,
                "tackles": 0.334,
                "clearances": 0.4964,
                "blocks": 0.0,
                "big_chances_created": 0.3681,
                "big_chances_missed": 0.1826,
                "xgot": 0.1704,
                "offsides": 0.0,
                "ball_carries": 9.6179,
                "total_progression": 12.6139,
                "progressive_carries": 1.4525,
                "shots_off_target": 0.7346,
                "duel_xg_multiplier": 0.8007,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0381,
                "creation_factor": 1.25,
                "fifa_overall": 74.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": 3861,
                "fifa_rank": 2888.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": {
                "expected_goals": 0.1522,
                "goal_rate": 0.1572,
                "goals": 0,
                "shots_on_target": 0.5422,
                "total_shots": 1.2817,
                "expected_assists": 0.0622,
                "key_pass": 0.7321,
                "rating": 6.8271,
                "minutes": 61.57,
                "total_pass": 15.8829,
                "accurate_pass": 11.3184,
                "duels_won": 2.834,
                "total_long_balls": 2.6939,
                "accurate_long_balls": 1.4729,
                "total_opp_half_passes": 9.5908,
                "accurate_opp_half_passes": 6.2445,
                "crosses_total": 0.7965,
                "crosses_accurate": 0.4562,
                "touches": 28.8479,
                "possession_lost": 9.0102,
                "dispossessed": 1.1123,
                "duels_lost": 5.3687,
                "aerial_lost": 0.4623,
                "total_contest": 2.6134,
                "won_contest": 0.8304,
                "ball_recovery": 2.2564,
                "challenges_lost": 0.4562,
                "fouls": 1.5533,
                "fouls_drawn": 1.172,
                "assist_rate": 0.14,
                "assists": 0,
                "interceptions": 0.8005,
                "tackles_won": 0.3337,
                "tackles": 0.334,
                "clearances": 0.4964,
                "blocks": 0.0,
                "big_chances_created": 0.3681,
                "big_chances_missed": 0.1826,
                "xgot": 0.1704,
                "offsides": 0.0,
                "ball_carries": 9.6179,
                "total_progression": 12.6139,
                "progressive_carries": 1.4525,
                "shots_off_target": 0.7346,
                "duel_xg_multiplier": 0.8007,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1412,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0381,
                "creation_factor": 1.25,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.1412,
                "goal_rate": 0.1572,
                "scorer_weight": 0.158,
                "squad_weight_total": 0.9718,
                "weight_share": 0.1626,
                "finishing_factor": 1.0381,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.1522,
                "goal_rate": 0.1572,
                "goals": 0,
                "shots_on_target": 0.5422,
                "total_shots": 1.2817,
                "expected_assists": 0.0622,
                "key_pass": 0.7321,
                "rating": 6.8271,
                "minutes": 61.57,
                "total_pass": 15.8829,
                "accurate_pass": 11.3184,
                "duels_won": 2.834,
                "total_long_balls": 2.6939,
                "accurate_long_balls": 1.4729,
                "total_opp_half_passes": 9.5908,
                "accurate_opp_half_passes": 6.2445,
                "crosses_total": 0.7965,
                "crosses_accurate": 0.4562,
                "touches": 28.8479,
                "possession_lost": 9.0102,
                "dispossessed": 1.1123,
                "duels_lost": 5.3687,
                "aerial_lost": 0.4623,
                "total_contest": 2.6134,
                "won_contest": 0.8304,
                "ball_recovery": 2.2564,
                "challenges_lost": 0.4562,
                "fouls": 1.5533,
                "fouls_drawn": 1.172,
                "assist_rate": 0.14,
                "assists": 0,
                "interceptions": 0.8005,
                "tackles_won": 0.3337,
                "tackles": 0.334,
                "clearances": 0.4964,
                "blocks": 0.0,
                "big_chances_created": 0.3681,
                "big_chances_missed": 0.1826,
                "xgot": 0.1704,
                "offsides": 0.0,
                "ball_carries": 9.6179,
                "total_progression": 12.6139,
                "progressive_carries": 1.4525,
                "shots_off_target": 0.7346,
                "duel_xg_multiplier": 0.8007,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Renato Veiga, Alexander Freeman",
                "opponent_faced": "Renato Veiga, Alexander Freeman",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1412,
                "projected_assists": 0,
                "assist_probability": 0.0603,
                "finishing_factor": 1.0381,
                "creation_factor": 1.25,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0603,
                "assist_rate": 0.14,
                "provider_weight": 0.0777,
                "squad_weight_total": 0.6412,
                "weight_share": 0.1213,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 13
              }
            }
          ]
        },
        "Guido Rodríguez": {
          "player_id": 609752,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 2,
          "height": 185,
          "market_value": 3600000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0332,
            "assist_rate": 0.054,
            "assists": 0,
            "expected_goals": 0.0351,
            "goal_rate": 0.0484,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 7.0319,
            "minutes": 85,
            "total_pass": 46,
            "accurate_pass": 39,
            "duels_won": 7,
            "total_long_balls": 6,
            "accurate_long_balls": 3,
            "total_own_half_passes": 26,
            "accurate_own_half_passes": 23,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 16,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 64,
            "possession_lost": 10.1572,
            "dispossessed": 1.3643,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 2,
            "tackles": 3,
            "clearances": 3,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0297,
            "ball_carries": 12,
            "total_progression": 13,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "duel_xg_multiplier": 0.7604,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.4,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.237,
            "pressing_faced": "HIGH",
            "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Pape Gueye",
            "opponent_faced": "Pape Gueye",
            "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0345,
            "projected_assists": 0,
            "assist_probability": 0.0327,
            "finishing_factor": 1.1645,
            "creation_factor": 1.25,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 86,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0332,
                "total_shots": 0,
                "total_pass": 46,
                "accurate_pass": 36,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 11
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0069,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 34,
                "tackles": 6,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 7,
                "duels_won": 11,
                "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": 16416297,
              "match_date": "2026-09-20",
              "home_team": "Valencia",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 69,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0079,
                "total_shots": 0,
                "total_pass": 46,
                "accurate_pass": 42,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 4,
                "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": "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": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 70,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0485,
                "expected_assists": 0.0247,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 49,
                "accurate_pass": 35,
                "tackles": 5,
                "tackles_won": 3,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 12,
                "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": 16421049,
              "match_date": "2026-08-25",
              "home_team": "Valencia",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 88,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0138,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 43,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 4,
                "clearances": 1,
                "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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0216,
                "expected_assists": 0.0158,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 67,
                "accurate_pass": 60,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 6,
                "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": 14083739,
              "match_date": "2026-05-23",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0624,
                "expected_assists": 0.0058,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 25,
                "accurate_pass": 21,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083687,
              "match_date": "2026-05-17",
              "home_team": "Real Sociedad",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 8.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0705,
                "expected_assists": 0.0119,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 53,
                "accurate_pass": 45,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 9,
                "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": 14083639,
              "match_date": "2026-05-14",
              "home_team": "Valencia",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.021,
                "total_shots": 0,
                "total_pass": 53,
                "accurate_pass": 46,
                "tackles": 1,
                "tackles_won": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083539,
              "match_date": "2026-05-10",
              "home_team": "Athletic Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0093,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 35,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 3,
                "clearances": 5,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 1819,
            "combined_rank_score": 701.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 172.0,
            "sofascore_rating": 7.25,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1231.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0319,
            "source_file": "data/player_rankings.csv",
            "player_name": "Guido Rodríguez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jae-hun Cho",
                  "ranking": 1814
                },
                {
                  "player_name": "Abulfayz Bobomurodov",
                  "ranking": 1815
                },
                {
                  "player_name": "Alejandro Rego Mora",
                  "ranking": 1816
                },
                {
                  "player_name": "Alejandro Balde",
                  "ranking": 1817
                },
                {
                  "player_name": "José Luis Morales",
                  "ranking": 1818
                }
              ],
              "lower": [
                {
                  "player_name": "Wesley Fofana",
                  "ranking": 1820
                },
                {
                  "player_name": "Marten de Roon",
                  "ranking": 1821
                },
                {
                  "player_name": "Florentino Luís",
                  "ranking": 1822
                },
                {
                  "player_name": "Benjamin André",
                  "ranking": 1823
                },
                {
                  "player_name": "Konstantinos Mavropanos",
                  "ranking": 1824
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 28,
          "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": 28,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9973,
            "fbref_prior_metrics": {
              "squad": "Valencia",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 177.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.51,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 28 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Valencia, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.4787,
                "expected_assists": 0.0326,
                "assists": 0.0548,
                "assist_rate": 0.0548,
                "expected_goals": 0.0455,
                "goals": 0.0645,
                "goal_rate": 0.0645,
                "shots_on_target": 0.193,
                "total_shots": 0.657,
                "rating": 7.0319,
                "minutes": 84.83,
                "total_pass": 46.4895,
                "accurate_pass": 39.1676,
                "duels_won": 7.1415,
                "total_long_balls": 5.6123,
                "accurate_long_balls": 3.0332,
                "total_own_half_passes": 25.9883,
                "accurate_own_half_passes": 23.1385,
                "total_opp_half_passes": 20.5012,
                "accurate_opp_half_passes": 16.0291,
                "crosses_total": 0.1931,
                "crosses_accurate": 0.0097,
                "touches": 64.1167,
                "possession_lost": 10.1847,
                "dispossessed": 1.368,
                "duels_lost": 4.9857,
                "aerial_won": 1.1237,
                "aerial_lost": 0.8286,
                "interceptions": 1.4728,
                "tackles_won": 1.8402,
                "tackles": 3.4221,
                "clearances": 3.0444,
                "total_contest": 1.1644,
                "won_contest": 0.731,
                "challenges_lost": 1.0059,
                "fouls": 1.467,
                "fouls_drawn": 1.8647,
                "blocks": 0.4276,
                "big_chances_created": 0.0306,
                "big_chances_missed": 0.0,
                "xgot": 0.0385,
                "ball_carries": 11.7757,
                "total_progression": 12.5563,
                "progressive_carries": 0.2477,
                "shots_off_target": 0.464
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.1516,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1289,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Real Sociedad",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.1095,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Deportivo Alavés",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0931,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-25",
                    "opponent": "Real Betis",
                    "minutes": 88.0,
                    "is_starting": true,
                    "weight": 0.0791,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0673,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0572,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0486,
                    "rating": 8.4
                  },
                  {
                    "match_date": "2026-05-14",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0413,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0351,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "creative_index": 0.1507,
                  "totalShots": 0.504,
                  "expectedGoals": 0.0298,
                  "expectedAssists": 0.03,
                  "onTargetScoringAttempt": 0.2296
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.47867056727409363,
                    "model_output": 0.4787,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.1005
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0928
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0784
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0445
                        }
                      ],
                      "others": -0.1996,
                      "total": 0.4787,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.119137
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.118662
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.10956
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.103036
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.063512
                        }
                      ],
                      "others_margin": -0.348653
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.032644424587488174,
                    "model_output": 0.0326,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0193
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0123
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0091
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0065
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0042
                        }
                      ],
                      "others": -0.0149,
                      "total": 0.0326,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.25417
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.204582
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.182723
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.133913
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.083945
                        }
                      ],
                      "others_margin": -0.375856
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.054829467087984085,
                    "model_output": 0.0548,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0101
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0084
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0067
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0063
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0056
                        }
                      ],
                      "others": -0.0089,
                      "total": 0.0548,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.123259
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.115092
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.093272
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.087375
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.084901
                        }
                      ],
                      "others_margin": -0.14891
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04554169252514839,
                    "model_output": 0.0455,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0217
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0095
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0076
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0065
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0056
                        }
                      ],
                      "others": -0.0088,
                      "total": 0.0455,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.262055
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.141515
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.129179
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.126136
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.109338
                        }
                      ],
                      "others_margin": -0.174661
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.0645393505692482,
                    "model_output": 0.0645,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0142
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0118
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0095
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0066
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0062
                        }
                      ],
                      "others": 0.0003,
                      "total": 0.0645,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.154656
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.14865
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.139455
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.098699
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.091454
                        }
                      ],
                      "others_margin": 0.004481
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.19301928579807281,
                    "model_output": 0.193,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0653
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0478
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0293
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0281
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.02
                        }
                      ],
                      "others": -0.0011,
                      "total": 0.193,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.22339
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.202566
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.128938
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.123076
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.098
                        }
                      ],
                      "others_margin": -0.006097
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6570029258728027,
                    "model_output": 0.657,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2206
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1148
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0479
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0466
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0399
                        }
                      ],
                      "others": -0.0997,
                      "total": 0.657,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.220551
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.114767
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.047931
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.046601
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.039881
                        }
                      ],
                      "others_margin": -0.099695
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.0318803787231445,
                    "model_output": 7.0319,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.1328
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.05
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0277
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.017
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0141
                        }
                      ],
                      "others": -0.0036,
                      "total": 7.0319,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.132821
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.049976
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.027739
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.017044
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.014059
                        }
                      ],
                      "others_margin": -0.003606
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 28,
                  "role_matches": 22,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9973, quality 0.445)",
              "stats": {
                "key_pass": 0.4774,
                "expected_assists": 0.0326,
                "assists": 0.0547,
                "assist_rate": 0.0547,
                "expected_goals": 0.0454,
                "goals": 0.0644,
                "goal_rate": 0.0644,
                "shots_on_target": 0.1925,
                "total_shots": 0.6552,
                "rating": 7.0319,
                "minutes": 84.83,
                "total_pass": 46.364,
                "accurate_pass": 39.0618,
                "duels_won": 7.1222,
                "total_long_balls": 5.5971,
                "accurate_long_balls": 3.025,
                "total_own_half_passes": 25.9181,
                "accurate_own_half_passes": 23.076,
                "total_opp_half_passes": 20.4458,
                "accurate_opp_half_passes": 15.9858,
                "crosses_total": 0.1926,
                "crosses_accurate": 0.0097,
                "touches": 63.9436,
                "possession_lost": 10.1572,
                "dispossessed": 1.3643,
                "duels_lost": 4.9722,
                "aerial_won": 1.1207,
                "aerial_lost": 0.8264,
                "interceptions": 1.4688,
                "tackles_won": 1.8352,
                "tackles": 3.4129,
                "clearances": 3.0362,
                "total_contest": 1.1613,
                "won_contest": 0.729,
                "challenges_lost": 1.0032,
                "fouls": 1.463,
                "fouls_drawn": 1.8597,
                "blocks": 0.4264,
                "big_chances_created": 0.0305,
                "big_chances_missed": 0.0,
                "xgot": 0.0384,
                "ball_carries": 11.7439,
                "total_progression": 12.5224,
                "progressive_carries": 0.247,
                "shots_off_target": 0.4627
              },
              "params": {
                "market_value_eur": 3600000,
                "quality_factor": 0.4449,
                "boost_factor": 0.9973,
                "reference_quality": 0.505,
                "history_matches": 28,
                "history_shrink": 0.1515,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0131)",
              "stats": {
                "key_pass": 0.4774,
                "expected_assists": 0.0326,
                "assists": 0.054,
                "assist_rate": 0.054,
                "expected_goals": 0.0454,
                "goals": 0.0636,
                "goal_rate": 0.0636,
                "shots_on_target": 0.1963,
                "total_shots": 0.6529,
                "rating": 7.0319,
                "minutes": 84.83,
                "total_pass": 46.364,
                "accurate_pass": 39.0618,
                "duels_won": 7.1222,
                "total_long_balls": 5.5971,
                "accurate_long_balls": 3.025,
                "total_own_half_passes": 25.9181,
                "accurate_own_half_passes": 23.076,
                "total_opp_half_passes": 20.4458,
                "accurate_opp_half_passes": 15.9858,
                "crosses_total": 0.1901,
                "crosses_accurate": 0.0097,
                "touches": 63.9436,
                "possession_lost": 10.1572,
                "dispossessed": 1.3643,
                "duels_lost": 4.9722,
                "aerial_won": 1.1207,
                "aerial_lost": 0.8264,
                "interceptions": 1.4805,
                "tackles_won": 1.8297,
                "tackles": 3.4129,
                "clearances": 3.0362,
                "total_contest": 1.1613,
                "won_contest": 0.729,
                "challenges_lost": 1.0032,
                "fouls": 1.4685,
                "fouls_drawn": 1.86,
                "blocks": 0.4264,
                "big_chances_created": 0.0305,
                "big_chances_missed": 0.0,
                "xgot": 0.0384,
                "ball_carries": 11.7439,
                "total_progression": 12.5224,
                "progressive_carries": 0.247,
                "shots_off_target": 0.4627
              },
              "params": {
                "blend_weight": 0.0131,
                "history_matches": 28,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9426,
                "prior_reliability": 0.1333,
                "competition": "La Liga",
                "squad": "Valencia"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 1.4688,
                  "after": 1.4805
                },
                {
                  "stat": "wonTackle",
                  "before": 1.8352,
                  "after": 1.8297
                },
                {
                  "stat": "fouls",
                  "before": 1.463,
                  "after": 1.4685
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.4774,
                "expected_assists": 0.0326,
                "assists": 0.054,
                "assist_rate": 0.054,
                "expected_goals": 0.0454,
                "goals": 0.0636,
                "goal_rate": 0.0636,
                "shots_on_target": 0.1963,
                "total_shots": 0.659,
                "rating": 7.0319,
                "minutes": 84.83,
                "total_pass": 46.364,
                "accurate_pass": 39.0618,
                "duels_won": 7.1222,
                "total_long_balls": 5.5971,
                "accurate_long_balls": 3.025,
                "total_own_half_passes": 25.9181,
                "accurate_own_half_passes": 23.076,
                "total_opp_half_passes": 20.4458,
                "accurate_opp_half_passes": 15.9858,
                "crosses_total": 0.1901,
                "crosses_accurate": 0.0097,
                "touches": 63.9436,
                "possession_lost": 10.1572,
                "dispossessed": 1.3643,
                "duels_lost": 4.9722,
                "aerial_won": 1.1207,
                "aerial_lost": 0.8264,
                "interceptions": 1.4805,
                "tackles_won": 1.8297,
                "tackles": 3.4129,
                "clearances": 3.0362,
                "total_contest": 1.1613,
                "won_contest": 0.729,
                "challenges_lost": 1.0032,
                "fouls": 1.4685,
                "fouls_drawn": 1.86,
                "blocks": 0.4264,
                "big_chances_created": 0.0305,
                "big_chances_missed": 0.0,
                "xgot": 0.0384,
                "ball_carries": 11.7439,
                "total_progression": 12.5224,
                "progressive_carries": 0.247,
                "shots_off_target": 0.4627
              },
              "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.4774,
                "expected_assists": 0.0326,
                "assists": 0.054,
                "assist_rate": 0.054,
                "expected_goals": 0.0345,
                "goals": 0.0484,
                "goal_rate": 0.0484,
                "shots_on_target": 0.1493,
                "total_shots": 0.5011,
                "rating": 7.0319,
                "minutes": 84.83,
                "total_pass": 46.364,
                "accurate_pass": 39.0618,
                "duels_won": 7.1222,
                "total_long_balls": 5.5971,
                "accurate_long_balls": 3.025,
                "total_own_half_passes": 25.9181,
                "accurate_own_half_passes": 23.076,
                "total_opp_half_passes": 20.4458,
                "accurate_opp_half_passes": 15.9858,
                "crosses_total": 0.1901,
                "crosses_accurate": 0.0097,
                "touches": 63.9436,
                "possession_lost": 10.1572,
                "dispossessed": 1.3643,
                "duels_lost": 4.9722,
                "aerial_won": 1.2,
                "aerial_lost": 0.8264,
                "interceptions": 1.4805,
                "tackles_won": 1.8297,
                "tackles": 3.4129,
                "clearances": 3.0362,
                "total_contest": 1.1613,
                "won_contest": 0.729,
                "challenges_lost": 1.0032,
                "fouls": 1.4685,
                "fouls_drawn": 1.86,
                "blocks": 0.4264,
                "big_chances_created": 0.0305,
                "big_chances_missed": 0.0,
                "xgot": 0.0292,
                "ball_carries": 11.7439,
                "total_progression": 12.5224,
                "progressive_carries": 0.247,
                "shots_off_target": 0.3518,
                "duel_xg_multiplier": 0.7604,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.237,
                "pressing_faced": "HIGH",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pape Gueye",
                "opponent_faced": "Pape Gueye",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Pape Gueye",
                  "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                  "duel_win_rate": 0.237,
                  "pressing_faced": "HIGH",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.7604,
                  "skill_edge": -0.155,
                  "height_edge": -0.008,
                  "attacker_skill": 0.4527,
                  "defender_skill": 0.7972,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Pape Gueye",
                      "market_value": 39000000,
                      "role": "CM",
                      "price_index": 0.9,
                      "adjusted_quality": 0.7972
                    }
                  ],
                  "xg_override": 0.0345
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 0.659,
                  "after": 0.5011
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4627,
                  "after": 0.3518
                },
                {
                  "stat": "aerialWon",
                  "before": 1.1207,
                  "after": 1.2
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1963,
                  "after": 0.1493
                },
                {
                  "stat": "goals",
                  "before": 0.0636,
                  "after": 0.0484
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0454,
                  "after": 0.0345
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0384,
                  "after": 0.0292
                }
              ]
            },
            {
              "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.4774,
                "expected_assists": 0.0326,
                "assist_rate": 0.054,
                "assists": 0,
                "expected_goals": 0.0345,
                "goal_rate": 0.0484,
                "goals": 0,
                "shots_on_target": 0.1493,
                "total_shots": 0.5011,
                "rating": 7.0319,
                "minutes": 84.83,
                "total_pass": 46.364,
                "accurate_pass": 39.0618,
                "duels_won": 7.1222,
                "total_long_balls": 5.5971,
                "accurate_long_balls": 3.025,
                "total_own_half_passes": 25.9181,
                "accurate_own_half_passes": 23.076,
                "total_opp_half_passes": 20.4458,
                "accurate_opp_half_passes": 15.9858,
                "crosses_total": 0.1901,
                "crosses_accurate": 0.0097,
                "touches": 63.9436,
                "possession_lost": 10.1572,
                "dispossessed": 1.3643,
                "duels_lost": 4.9722,
                "aerial_won": 1.2,
                "aerial_lost": 0.8264,
                "interceptions": 1.4805,
                "tackles_won": 1.8297,
                "tackles": 3.4129,
                "clearances": 3.0362,
                "total_contest": 1.1613,
                "won_contest": 0.729,
                "challenges_lost": 1.0032,
                "fouls": 1.4685,
                "fouls_drawn": 1.86,
                "blocks": 0.4264,
                "big_chances_created": 0.0305,
                "big_chances_missed": 0.0,
                "xgot": 0.0292,
                "ball_carries": 11.7439,
                "total_progression": 12.5224,
                "progressive_carries": 0.247,
                "shots_off_target": 0.3518,
                "duel_xg_multiplier": 0.7604,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.237,
                "pressing_faced": "HIGH",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pape Gueye",
                "opponent_faced": "Pape Gueye",
                "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.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "key_pass": 0.4774,
                "expected_assists": 0.0332,
                "assist_rate": 0.054,
                "assists": 0,
                "expected_goals": 0.0351,
                "goal_rate": 0.0484,
                "goals": 0,
                "shots_on_target": 0.1493,
                "total_shots": 0.5011,
                "rating": 7.0319,
                "minutes": 84.83,
                "total_pass": 46.364,
                "accurate_pass": 39.0618,
                "duels_won": 7.1222,
                "total_long_balls": 5.5971,
                "accurate_long_balls": 3.025,
                "total_own_half_passes": 25.9181,
                "accurate_own_half_passes": 23.076,
                "total_opp_half_passes": 20.4458,
                "accurate_opp_half_passes": 15.9858,
                "crosses_total": 0.1901,
                "crosses_accurate": 0.0097,
                "touches": 63.9436,
                "possession_lost": 10.1572,
                "dispossessed": 1.3643,
                "duels_lost": 4.9722,
                "aerial_won": 1.2,
                "aerial_lost": 0.8264,
                "interceptions": 1.4805,
                "tackles_won": 1.8297,
                "tackles": 3.4129,
                "clearances": 3.0362,
                "total_contest": 1.1613,
                "won_contest": 0.729,
                "challenges_lost": 1.0032,
                "fouls": 1.4685,
                "fouls_drawn": 1.86,
                "blocks": 0.4264,
                "big_chances_created": 0.0305,
                "big_chances_missed": 0.0,
                "xgot": 0.0297,
                "ball_carries": 11.7439,
                "total_progression": 12.5224,
                "progressive_carries": 0.247,
                "shots_off_target": 0.3518,
                "duel_xg_multiplier": 0.7604,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.237,
                "pressing_faced": "HIGH",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pape Gueye",
                "opponent_faced": "Pape Gueye",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1645,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "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 78.0)",
              "stats": {
                "key_pass": 0.4774,
                "expected_assists": 0.0332,
                "assist_rate": 0.054,
                "assists": 0,
                "expected_goals": 0.0351,
                "goal_rate": 0.0484,
                "goals": 0,
                "shots_on_target": 0.1493,
                "total_shots": 0.5011,
                "rating": 7.0319,
                "minutes": 84.83,
                "total_pass": 46.364,
                "accurate_pass": 39.0618,
                "duels_won": 7.1222,
                "total_long_balls": 5.5971,
                "accurate_long_balls": 3.025,
                "total_own_half_passes": 25.9181,
                "accurate_own_half_passes": 23.076,
                "total_opp_half_passes": 20.4458,
                "accurate_opp_half_passes": 15.9858,
                "crosses_total": 0.1901,
                "crosses_accurate": 0.0097,
                "touches": 63.9436,
                "possession_lost": 10.1572,
                "dispossessed": 1.3643,
                "duels_lost": 4.9722,
                "aerial_won": 1.2,
                "aerial_lost": 0.8264,
                "interceptions": 1.4805,
                "tackles_won": 1.8297,
                "tackles": 3.4129,
                "clearances": 3.0362,
                "total_contest": 1.1613,
                "won_contest": 0.729,
                "challenges_lost": 1.0032,
                "fouls": 1.4685,
                "fouls_drawn": 1.86,
                "blocks": 0.4264,
                "big_chances_created": 0.0305,
                "big_chances_missed": 0.0,
                "xgot": 0.0297,
                "ball_carries": 11.7439,
                "total_progression": 12.5224,
                "progressive_carries": 0.247,
                "shots_off_target": 0.3518,
                "duel_xg_multiplier": 0.7604,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.237,
                "pressing_faced": "HIGH",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pape Gueye",
                "opponent_faced": "Pape Gueye",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1645,
                "creation_factor": 1.25,
                "fifa_overall": 78.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": 1819,
                "fifa_rank": 1231.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.4774,
                "expected_assists": 0.0332,
                "assist_rate": 0.054,
                "assists": 0,
                "expected_goals": 0.0351,
                "goal_rate": 0.0484,
                "goals": 0,
                "shots_on_target": 0.1493,
                "total_shots": 0.5011,
                "rating": 7.0319,
                "minutes": 84.83,
                "total_pass": 46.364,
                "accurate_pass": 39.0618,
                "duels_won": 7.1222,
                "total_long_balls": 5.5971,
                "accurate_long_balls": 3.025,
                "total_own_half_passes": 25.9181,
                "accurate_own_half_passes": 23.076,
                "total_opp_half_passes": 20.4458,
                "accurate_opp_half_passes": 15.9858,
                "crosses_total": 0.1901,
                "crosses_accurate": 0.0097,
                "touches": 63.9436,
                "possession_lost": 10.1572,
                "dispossessed": 1.3643,
                "duels_lost": 4.9722,
                "aerial_won": 1.2,
                "aerial_lost": 0.8264,
                "interceptions": 1.4805,
                "tackles_won": 1.8297,
                "tackles": 3.4129,
                "clearances": 3.0362,
                "total_contest": 1.1613,
                "won_contest": 0.729,
                "challenges_lost": 1.0032,
                "fouls": 1.4685,
                "fouls_drawn": 1.86,
                "blocks": 0.4264,
                "big_chances_created": 0.0305,
                "big_chances_missed": 0.0,
                "xgot": 0.0297,
                "ball_carries": 11.7439,
                "total_progression": 12.5224,
                "progressive_carries": 0.247,
                "shots_off_target": 0.3518,
                "duel_xg_multiplier": 0.7604,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.237,
                "pressing_faced": "HIGH",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pape Gueye",
                "opponent_faced": "Pape Gueye",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0345,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1645,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0345,
                "goal_rate": 0.0484,
                "scorer_weight": 0.0409,
                "squad_weight_total": 0.9718,
                "weight_share": 0.0421,
                "finishing_factor": 1.1645,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.4774,
                "expected_assists": 0.0332,
                "assist_rate": 0.054,
                "assists": 0,
                "expected_goals": 0.0351,
                "goal_rate": 0.0484,
                "goals": 0,
                "shots_on_target": 0.1493,
                "total_shots": 0.5011,
                "rating": 7.0319,
                "minutes": 84.83,
                "total_pass": 46.364,
                "accurate_pass": 39.0618,
                "duels_won": 7.1222,
                "total_long_balls": 5.5971,
                "accurate_long_balls": 3.025,
                "total_own_half_passes": 25.9181,
                "accurate_own_half_passes": 23.076,
                "total_opp_half_passes": 20.4458,
                "accurate_opp_half_passes": 15.9858,
                "crosses_total": 0.1901,
                "crosses_accurate": 0.0097,
                "touches": 63.9436,
                "possession_lost": 10.1572,
                "dispossessed": 1.3643,
                "duels_lost": 4.9722,
                "aerial_won": 1.2,
                "aerial_lost": 0.8264,
                "interceptions": 1.4805,
                "tackles_won": 1.8297,
                "tackles": 3.4129,
                "clearances": 3.0362,
                "total_contest": 1.1613,
                "won_contest": 0.729,
                "challenges_lost": 1.0032,
                "fouls": 1.4685,
                "fouls_drawn": 1.86,
                "blocks": 0.4264,
                "big_chances_created": 0.0305,
                "big_chances_missed": 0.0,
                "xgot": 0.0297,
                "ball_carries": 11.7439,
                "total_progression": 12.5224,
                "progressive_carries": 0.247,
                "shots_off_target": 0.3518,
                "duel_xg_multiplier": 0.7604,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.237,
                "pressing_faced": "HIGH",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pape Gueye",
                "opponent_faced": "Pape Gueye",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0345,
                "projected_assists": 0,
                "assist_probability": 0.0327,
                "finishing_factor": 1.1645,
                "creation_factor": 1.25,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0327,
                "assist_rate": 0.054,
                "provider_weight": 0.0415,
                "squad_weight_total": 0.6412,
                "weight_share": 0.0647,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 13
              }
            }
          ]
        },
        "Pepelu": {
          "player_id": 826948,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 18,
          "height": 185,
          "market_value": 7300000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0329,
            "assist_rate": 0.0456,
            "assists": 0,
            "expected_goals": 0.0239,
            "goal_rate": 0.0332,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.8837,
            "minutes": 84,
            "total_pass": 50,
            "accurate_pass": 44,
            "duels_won": 3,
            "total_long_balls": 7,
            "accurate_long_balls": 4,
            "total_own_half_passes": 29,
            "accurate_own_half_passes": 27,
            "total_opp_half_passes": 21,
            "accurate_opp_half_passes": 17,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 62,
            "possession_lost": 7.0357,
            "dispossessed": 0.296,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 5,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0133,
            "ball_carries": 16,
            "total_progression": 46,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "duel_xg_multiplier": 0.7954,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.5,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.261,
            "pressing_faced": "HIGH",
            "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Pape Gueye",
            "opponent_faced": "Pape Gueye",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0236,
            "projected_assists": 0,
            "assist_probability": 0.0324,
            "finishing_factor": 1.132,
            "creation_factor": 1.1616,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0267,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 41,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 5,
                "duels_won": 3,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.006,
                "total_shots": 0,
                "total_pass": 60,
                "accurate_pass": 53,
                "interceptions": 1,
                "clearances": 13,
                "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": 16416297,
              "match_date": "2026-09-20",
              "home_team": "Valencia",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0309,
                "expected_assists": 0.0248,
                "total_shots": 1,
                "total_pass": 51,
                "accurate_pass": 45,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0055,
                "total_shots": 0,
                "total_pass": 70,
                "accurate_pass": 65,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 12,
                "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": 16416330,
              "match_date": "2026-09-11",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0072,
                "total_shots": 0,
                "total_pass": 64,
                "accurate_pass": 53,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 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": 16416325,
              "match_date": "2026-09-06",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 54,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0064,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 16,
                "tackles": 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": 16416291,
              "match_date": "2026-08-30",
              "home_team": "Deportivo de A Coruña",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 66,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0889,
                "total_shots": 0,
                "total_pass": 48,
                "accurate_pass": 43,
                "key_pass": 1,
                "tackles": 2,
                "clearances": 1,
                "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": 16421049,
              "match_date": "2026-08-25",
              "home_team": "Valencia",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 88,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0069,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 27,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 2,
                "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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0334,
                "expected_assists": 0.0173,
                "total_shots": 1,
                "total_pass": 82,
                "accurate_pass": 75,
                "tackles": 2,
                "clearances": 8,
                "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": 14083739,
              "match_date": "2026-05-23",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.023,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 19,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3207,
            "combined_rank_score": 1161.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 362.0,
            "sofascore_rating": 6.9767,
            "sofascore_appearances": 31.0,
            "fifa_rank": 1960.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8837,
            "source_file": "data/player_rankings.csv",
            "player_name": "Pepelu",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Frederik Rønnow",
                  "ranking": 3202
                },
                {
                  "player_name": "David Affengruber",
                  "ranking": 3203
                },
                {
                  "player_name": "Kike Salas",
                  "ranking": 3204
                },
                {
                  "player_name": "Franck Honorat",
                  "ranking": 3205
                },
                {
                  "player_name": "Djibril Sow",
                  "ranking": 3206
                }
              ],
              "lower": [
                {
                  "player_name": "Dayann Methalie",
                  "ranking": 3208
                },
                {
                  "player_name": "Robin Gosens",
                  "ranking": 3209
                },
                {
                  "player_name": "Álvaro Núñez",
                  "ranking": 3210
                },
                {
                  "player_name": "Marvin Schwäbe",
                  "ranking": 3211
                },
                {
                  "player_name": "Moi Gómez",
                  "ranking": 3212
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "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.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9995,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (M_service) evaluated 40 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.5142,
                "expected_assists": 0.0323,
                "assists": 0.0456,
                "assist_rate": 0.0456,
                "expected_goals": 0.0295,
                "goals": 0.0419,
                "goal_rate": 0.0419,
                "shots_on_target": 0.114,
                "total_shots": 0.5181,
                "rating": 6.8837,
                "minutes": 83.97,
                "total_pass": 49.8968,
                "accurate_pass": 44.2005,
                "duels_won": 2.5142,
                "total_long_balls": 7.4779,
                "accurate_long_balls": 4.1829,
                "total_own_half_passes": 29.3844,
                "accurate_own_half_passes": 27.4388,
                "total_opp_half_passes": 20.5123,
                "accurate_opp_half_passes": 16.7616,
                "crosses_total": 0.2457,
                "crosses_accurate": 0.0248,
                "touches": 61.7623,
                "possession_lost": 7.0392,
                "dispossessed": 0.2961,
                "duels_lost": 2.9465,
                "aerial_won": 0.4133,
                "aerial_lost": 0.6551,
                "interceptions": 1.0579,
                "tackles_won": 0.8803,
                "tackles": 1.784,
                "clearances": 5.3091,
                "total_contest": 0.1837,
                "won_contest": 0.0528,
                "challenges_lost": 0.6489,
                "fouls": 1.2156,
                "fouls_drawn": 0.3427,
                "blocks": 0.3921,
                "big_chances_created": 0.3064,
                "big_chances_missed": 0.0158,
                "xgot": 0.0165,
                "ball_carries": 15.6995,
                "total_progression": 45.6114,
                "progressive_carries": 0.4159,
                "shots_off_target": 0.4041
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-11",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "FC Barcelona",
                    "minutes": 54.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-25",
                    "opponent": "Real Betis",
                    "minutes": 88.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "creative_index": 0.1847,
                  "totalShots": 0.2437,
                  "expectedGoals": 0.0186,
                  "expectedAssists": 0.0219,
                  "onTargetScoringAttempt": 0.0124
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5141845345497131,
                    "model_output": 0.5142,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1247
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.1203
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.1038
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0808
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0391
                        }
                      ],
                      "others": -0.161,
                      "total": 0.5142,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.130533
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.125575
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.122699
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.107219
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.0563
                        }
                      ],
                      "others_margin": -0.272405
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.032297708094120026,
                    "model_output": 0.0323,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.018
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0136
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0107
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0064
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0042
                        }
                      ],
                      "others": -0.0135,
                      "total": 0.0323,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.235035
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.22345
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.22035
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.137496
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.086773
                        }
                      ],
                      "others_margin": -0.349927
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.04560089483857155,
                    "model_output": 0.0456,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0111
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0092
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.007
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0067
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0043
                        }
                      ],
                      "others": -0.0175,
                      "total": 0.0456,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.13647
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.129095
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.099675
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.094656
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.065947
                        }
                      ],
                      "others_margin": -0.324072
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.02950313687324524,
                    "model_output": 0.0295,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.032
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0131
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0072
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0059
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0041
                        }
                      ],
                      "others": -0.014,
                      "total": 0.0295,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.415706
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.237533
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.159137
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.131352
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.089786
                        }
                      ],
                      "others_margin": -0.38753
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.04185798764228821,
                    "model_output": 0.0419,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0228
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0116
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0093
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0066
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0052
                        }
                      ],
                      "others": -0.0123,
                      "total": 0.0419,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.260811
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.164703
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.155022
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.126422
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.100874
                        }
                      ],
                      "others_margin": -0.257943
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.11403924226760864,
                    "model_output": 0.114,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0872
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0455
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0364
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0218
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0203
                        }
                      ],
                      "others": -0.0444,
                      "total": 0.114,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.311351
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.211273
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.208785
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.130163
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.120834
                        }
                      ],
                      "others_margin": -0.32836
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5181371569633484,
                    "model_output": 0.5181,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.245
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1173
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0577
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0394
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.038
                        }
                      ],
                      "others": -0.216,
                      "total": 0.5181,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.245022
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.117297
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.057672
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.039409
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.038019
                        }
                      ],
                      "others_margin": -0.215934
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.883694171905518,
                    "model_output": 6.8837,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0607
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0341
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0161
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0138
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0128
                        }
                      ],
                      "others": -0.0245,
                      "total": 6.8837,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.060657
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.034065
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.01613
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.013829
                        },
                        {
                          "name": "rating",
                          "margin": -0.012843
                        }
                      ],
                      "others_margin": -0.024277
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 40,
                  "role_matches": 35,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9995, quality 0.490)",
              "stats": {
                "key_pass": 0.5139,
                "expected_assists": 0.0323,
                "assists": 0.0456,
                "assist_rate": 0.0456,
                "expected_goals": 0.0295,
                "goals": 0.0418,
                "goal_rate": 0.0418,
                "shots_on_target": 0.114,
                "total_shots": 0.5179,
                "rating": 6.8837,
                "minutes": 83.97,
                "total_pass": 49.8719,
                "accurate_pass": 44.1784,
                "duels_won": 2.5129,
                "total_long_balls": 7.4742,
                "accurate_long_balls": 4.1808,
                "total_own_half_passes": 29.3697,
                "accurate_own_half_passes": 27.4251,
                "total_opp_half_passes": 20.502,
                "accurate_opp_half_passes": 16.7532,
                "crosses_total": 0.2456,
                "crosses_accurate": 0.0248,
                "touches": 61.7314,
                "possession_lost": 7.0357,
                "dispossessed": 0.296,
                "duels_lost": 2.945,
                "aerial_won": 0.4131,
                "aerial_lost": 0.6548,
                "interceptions": 1.0574,
                "tackles_won": 0.8799,
                "tackles": 1.7831,
                "clearances": 5.3064,
                "total_contest": 0.1836,
                "won_contest": 0.0528,
                "challenges_lost": 0.6486,
                "fouls": 1.215,
                "fouls_drawn": 0.3425,
                "blocks": 0.3919,
                "big_chances_created": 0.3062,
                "big_chances_missed": 0.0158,
                "xgot": 0.0165,
                "ball_carries": 15.6917,
                "total_progression": 45.5886,
                "progressive_carries": 0.4157,
                "shots_off_target": 0.4039
              },
              "params": {
                "market_value_eur": 7300000,
                "quality_factor": 0.4903,
                "boost_factor": 0.9995,
                "reference_quality": 0.505,
                "history_matches": 40,
                "history_shrink": 0.1111,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5139,
                "expected_assists": 0.0323,
                "assists": 0.0456,
                "assist_rate": 0.0456,
                "expected_goals": 0.0295,
                "goals": 0.0418,
                "goal_rate": 0.0418,
                "shots_on_target": 0.114,
                "total_shots": 0.5179,
                "rating": 6.8837,
                "minutes": 83.97,
                "total_pass": 49.8719,
                "accurate_pass": 44.1784,
                "duels_won": 2.5129,
                "total_long_balls": 7.4742,
                "accurate_long_balls": 4.1808,
                "total_own_half_passes": 29.3697,
                "accurate_own_half_passes": 27.4251,
                "total_opp_half_passes": 20.502,
                "accurate_opp_half_passes": 16.7532,
                "crosses_total": 0.2456,
                "crosses_accurate": 0.0248,
                "touches": 61.7314,
                "possession_lost": 7.0357,
                "dispossessed": 0.296,
                "duels_lost": 2.945,
                "aerial_won": 0.4131,
                "aerial_lost": 0.6548,
                "interceptions": 1.0574,
                "tackles_won": 0.8799,
                "tackles": 1.7831,
                "clearances": 5.3064,
                "total_contest": 0.1836,
                "won_contest": 0.0528,
                "challenges_lost": 0.6486,
                "fouls": 1.215,
                "fouls_drawn": 0.3425,
                "blocks": 0.3919,
                "big_chances_created": 0.3062,
                "big_chances_missed": 0.0158,
                "xgot": 0.0165,
                "ball_carries": 15.6917,
                "total_progression": 45.5886,
                "progressive_carries": 0.4157,
                "shots_off_target": 0.4039
              },
              "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.5139,
                "expected_assists": 0.0323,
                "assists": 0.0456,
                "assist_rate": 0.0456,
                "expected_goals": 0.0235,
                "goals": 0.0332,
                "goal_rate": 0.0332,
                "shots_on_target": 0.0907,
                "total_shots": 0.412,
                "rating": 6.8837,
                "minutes": 83.97,
                "total_pass": 49.8719,
                "accurate_pass": 44.1784,
                "duels_won": 2.5129,
                "total_long_balls": 7.4742,
                "accurate_long_balls": 4.1808,
                "total_own_half_passes": 29.3697,
                "accurate_own_half_passes": 27.4251,
                "total_opp_half_passes": 20.502,
                "accurate_opp_half_passes": 16.7532,
                "crosses_total": 0.2456,
                "crosses_accurate": 0.0248,
                "touches": 61.7314,
                "possession_lost": 7.0357,
                "dispossessed": 0.296,
                "duels_lost": 2.945,
                "aerial_won": 1.2,
                "aerial_lost": 0.6548,
                "interceptions": 1.0574,
                "tackles_won": 0.8799,
                "tackles": 1.7831,
                "clearances": 5.3064,
                "total_contest": 0.1836,
                "won_contest": 0.0528,
                "challenges_lost": 0.6486,
                "fouls": 1.215,
                "fouls_drawn": 0.3425,
                "blocks": 0.3919,
                "big_chances_created": 0.3062,
                "big_chances_missed": 0.0126,
                "xgot": 0.0131,
                "ball_carries": 15.6917,
                "total_progression": 45.5886,
                "progressive_carries": 0.4157,
                "shots_off_target": 0.3213,
                "duel_xg_multiplier": 0.7954,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.261,
                "pressing_faced": "HIGH",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pape Gueye",
                "opponent_faced": "Pape Gueye",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Pape Gueye",
                  "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                  "duel_win_rate": 0.261,
                  "pressing_faced": "HIGH",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.7954,
                  "skill_edge": -0.1312,
                  "height_edge": -0.008,
                  "attacker_skill": 0.5057,
                  "defender_skill": 0.7972,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Pape Gueye",
                      "market_value": 39000000,
                      "role": "CM",
                      "price_index": 0.9,
                      "adjusted_quality": 0.7972
                    }
                  ],
                  "xg_override": 0.0235
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.4131,
                  "after": 1.2
                },
                {
                  "stat": "totalShots",
                  "before": 0.5179,
                  "after": 0.412
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4039,
                  "after": 0.3213
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.114,
                  "after": 0.0907
                },
                {
                  "stat": "goals",
                  "before": 0.0418,
                  "after": 0.0332
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0295,
                  "after": 0.0235
                }
              ]
            },
            {
              "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.5139,
                "expected_assists": 0.0323,
                "assist_rate": 0.0456,
                "assists": 0,
                "expected_goals": 0.0235,
                "goal_rate": 0.0332,
                "goals": 0,
                "shots_on_target": 0.0907,
                "total_shots": 0.412,
                "rating": 6.8837,
                "minutes": 83.97,
                "total_pass": 49.8719,
                "accurate_pass": 44.1784,
                "duels_won": 2.5129,
                "total_long_balls": 7.4742,
                "accurate_long_balls": 4.1808,
                "total_own_half_passes": 29.3697,
                "accurate_own_half_passes": 27.4251,
                "total_opp_half_passes": 20.502,
                "accurate_opp_half_passes": 16.7532,
                "crosses_total": 0.2456,
                "crosses_accurate": 0.0248,
                "touches": 61.7314,
                "possession_lost": 7.0357,
                "dispossessed": 0.296,
                "duels_lost": 2.945,
                "aerial_won": 1.2,
                "aerial_lost": 0.6548,
                "interceptions": 1.0574,
                "tackles_won": 0.8799,
                "tackles": 1.7831,
                "clearances": 5.3064,
                "total_contest": 0.1836,
                "won_contest": 0.0528,
                "challenges_lost": 0.6486,
                "fouls": 1.215,
                "fouls_drawn": 0.3425,
                "blocks": 0.3919,
                "big_chances_created": 0.3062,
                "big_chances_missed": 0.0126,
                "xgot": 0.0131,
                "ball_carries": 15.6917,
                "total_progression": 45.5886,
                "progressive_carries": 0.4157,
                "shots_off_target": 0.3213,
                "duel_xg_multiplier": 0.7954,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.261,
                "pressing_faced": "HIGH",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pape Gueye",
                "opponent_faced": "Pape Gueye",
                "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.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "key_pass": 0.5139,
                "expected_assists": 0.0329,
                "assist_rate": 0.0456,
                "assists": 0,
                "expected_goals": 0.0239,
                "goal_rate": 0.0332,
                "goals": 0,
                "shots_on_target": 0.0907,
                "total_shots": 0.412,
                "rating": 6.8837,
                "minutes": 83.97,
                "total_pass": 49.8719,
                "accurate_pass": 44.1784,
                "duels_won": 2.5129,
                "total_long_balls": 7.4742,
                "accurate_long_balls": 4.1808,
                "total_own_half_passes": 29.3697,
                "accurate_own_half_passes": 27.4251,
                "total_opp_half_passes": 20.502,
                "accurate_opp_half_passes": 16.7532,
                "crosses_total": 0.2456,
                "crosses_accurate": 0.0248,
                "touches": 61.7314,
                "possession_lost": 7.0357,
                "dispossessed": 0.296,
                "duels_lost": 2.945,
                "aerial_won": 1.2,
                "aerial_lost": 0.6548,
                "interceptions": 1.0574,
                "tackles_won": 0.8799,
                "tackles": 1.7831,
                "clearances": 5.3064,
                "total_contest": 0.1836,
                "won_contest": 0.0528,
                "challenges_lost": 0.6486,
                "fouls": 1.215,
                "fouls_drawn": 0.3425,
                "blocks": 0.3919,
                "big_chances_created": 0.3062,
                "big_chances_missed": 0.0126,
                "xgot": 0.0133,
                "ball_carries": 15.6917,
                "total_progression": 45.5886,
                "progressive_carries": 0.4157,
                "shots_off_target": 0.3213,
                "duel_xg_multiplier": 0.7954,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.261,
                "pressing_faced": "HIGH",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pape Gueye",
                "opponent_faced": "Pape Gueye",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.132,
                "creation_factor": 1.1616
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 76.0)",
              "stats": {
                "key_pass": 0.5139,
                "expected_assists": 0.0329,
                "assist_rate": 0.0456,
                "assists": 0,
                "expected_goals": 0.0239,
                "goal_rate": 0.0332,
                "goals": 0,
                "shots_on_target": 0.0907,
                "total_shots": 0.412,
                "rating": 6.8837,
                "minutes": 83.97,
                "total_pass": 49.8719,
                "accurate_pass": 44.1784,
                "duels_won": 2.5129,
                "total_long_balls": 7.4742,
                "accurate_long_balls": 4.1808,
                "total_own_half_passes": 29.3697,
                "accurate_own_half_passes": 27.4251,
                "total_opp_half_passes": 20.502,
                "accurate_opp_half_passes": 16.7532,
                "crosses_total": 0.2456,
                "crosses_accurate": 0.0248,
                "touches": 61.7314,
                "possession_lost": 7.0357,
                "dispossessed": 0.296,
                "duels_lost": 2.945,
                "aerial_won": 1.2,
                "aerial_lost": 0.6548,
                "interceptions": 1.0574,
                "tackles_won": 0.8799,
                "tackles": 1.7831,
                "clearances": 5.3064,
                "total_contest": 0.1836,
                "won_contest": 0.0528,
                "challenges_lost": 0.6486,
                "fouls": 1.215,
                "fouls_drawn": 0.3425,
                "blocks": 0.3919,
                "big_chances_created": 0.3062,
                "big_chances_missed": 0.0126,
                "xgot": 0.0133,
                "ball_carries": 15.6917,
                "total_progression": 45.5886,
                "progressive_carries": 0.4157,
                "shots_off_target": 0.3213,
                "duel_xg_multiplier": 0.7954,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.261,
                "pressing_faced": "HIGH",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pape Gueye",
                "opponent_faced": "Pape Gueye",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.132,
                "creation_factor": 1.1616,
                "fifa_overall": 76.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": 3207,
                "fifa_rank": 1960.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 0.5139,
                "expected_assists": 0.0329,
                "assist_rate": 0.0456,
                "assists": 0,
                "expected_goals": 0.0239,
                "goal_rate": 0.0332,
                "goals": 0,
                "shots_on_target": 0.0907,
                "total_shots": 0.412,
                "rating": 6.8837,
                "minutes": 83.97,
                "total_pass": 49.8719,
                "accurate_pass": 44.1784,
                "duels_won": 2.5129,
                "total_long_balls": 7.4742,
                "accurate_long_balls": 4.1808,
                "total_own_half_passes": 29.3697,
                "accurate_own_half_passes": 27.4251,
                "total_opp_half_passes": 20.502,
                "accurate_opp_half_passes": 16.7532,
                "crosses_total": 0.2456,
                "crosses_accurate": 0.0248,
                "touches": 61.7314,
                "possession_lost": 7.0357,
                "dispossessed": 0.296,
                "duels_lost": 2.945,
                "aerial_won": 1.2,
                "aerial_lost": 0.6548,
                "interceptions": 1.0574,
                "tackles_won": 0.8799,
                "tackles": 1.7831,
                "clearances": 5.3064,
                "total_contest": 0.1836,
                "won_contest": 0.0528,
                "challenges_lost": 0.6486,
                "fouls": 1.215,
                "fouls_drawn": 0.3425,
                "blocks": 0.3919,
                "big_chances_created": 0.3062,
                "big_chances_missed": 0.0126,
                "xgot": 0.0133,
                "ball_carries": 15.6917,
                "total_progression": 45.5886,
                "progressive_carries": 0.4157,
                "shots_off_target": 0.3213,
                "duel_xg_multiplier": 0.7954,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.261,
                "pressing_faced": "HIGH",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pape Gueye",
                "opponent_faced": "Pape Gueye",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0236,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.132,
                "creation_factor": 1.1616,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0236,
                "goal_rate": 0.0332,
                "scorer_weight": 0.0271,
                "squad_weight_total": 0.9718,
                "weight_share": 0.0278,
                "finishing_factor": 1.132,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.5139,
                "expected_assists": 0.0329,
                "assist_rate": 0.0456,
                "assists": 0,
                "expected_goals": 0.0239,
                "goal_rate": 0.0332,
                "goals": 0,
                "shots_on_target": 0.0907,
                "total_shots": 0.412,
                "rating": 6.8837,
                "minutes": 83.97,
                "total_pass": 49.8719,
                "accurate_pass": 44.1784,
                "duels_won": 2.5129,
                "total_long_balls": 7.4742,
                "accurate_long_balls": 4.1808,
                "total_own_half_passes": 29.3697,
                "accurate_own_half_passes": 27.4251,
                "total_opp_half_passes": 20.502,
                "accurate_opp_half_passes": 16.7532,
                "crosses_total": 0.2456,
                "crosses_accurate": 0.0248,
                "touches": 61.7314,
                "possession_lost": 7.0357,
                "dispossessed": 0.296,
                "duels_lost": 2.945,
                "aerial_won": 1.2,
                "aerial_lost": 0.6548,
                "interceptions": 1.0574,
                "tackles_won": 0.8799,
                "tackles": 1.7831,
                "clearances": 5.3064,
                "total_contest": 0.1836,
                "won_contest": 0.0528,
                "challenges_lost": 0.6486,
                "fouls": 1.215,
                "fouls_drawn": 0.3425,
                "blocks": 0.3919,
                "big_chances_created": 0.3062,
                "big_chances_missed": 0.0126,
                "xgot": 0.0133,
                "ball_carries": 15.6917,
                "total_progression": 45.5886,
                "progressive_carries": 0.4157,
                "shots_off_target": 0.3213,
                "duel_xg_multiplier": 0.7954,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.261,
                "pressing_faced": "HIGH",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pape Gueye",
                "opponent_faced": "Pape Gueye",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0236,
                "projected_assists": 0,
                "assist_probability": 0.0324,
                "finishing_factor": 1.132,
                "creation_factor": 1.1616,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0324,
                "assist_rate": 0.0456,
                "provider_weight": 0.0382,
                "squad_weight_total": 0.6412,
                "weight_share": 0.0596,
                "creation_factor": 1.1616,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 13
              }
            }
          ]
        },
        "José Luis Gayà": {
          "player_id": 227922,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 14,
          "height": 172,
          "market_value": 4300000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.7737,
            "minutes": 82,
            "total_pass": 31,
            "accurate_pass": 28,
            "duels_won": 4,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 19,
            "accurate_own_half_passes": 18,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 10,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 50,
            "possession_lost": 5.8851,
            "dispossessed": 0.1298,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0063,
            "goals": 0,
            "assist_rate": 0.0368,
            "assists": 0,
            "expected_goals": 0.0476,
            "expected_assists": 0.0642,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0149,
            "ball_carries": 12,
            "total_progression": 56,
            "progressive_carries": 1,
            "key_pass": 1,
            "shots_off_target": 0,
            "opponent_faced": "Ayoze Pérez",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0465,
            "projected_assists": 0,
            "assist_probability": 0.0622,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 85,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2282,
                "expected_assists": 0.093,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 28,
                "accurate_pass": 27,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "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": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0341,
                "expected_assists": 0.083,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 38,
                "accurate_pass": 35,
                "key_pass": 2,
                "clearances": 2,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416297,
              "match_date": "2026-09-20",
              "home_team": "Valencia",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 82,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0102,
                "expected_assists": 0.0318,
                "total_shots": 1,
                "total_pass": 27,
                "accurate_pass": 27,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.008,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 45,
                "tackles": 5,
                "tackles_won": 3,
                "clearances": 5,
                "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": 16416330,
              "match_date": "2026-09-11",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 83,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.006,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 30,
                "tackles": 5,
                "tackles_won": 4,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 8,
                "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": 16416325,
              "match_date": "2026-09-06",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 36,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0029,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 13,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 69,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.011,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 20,
                "key_pass": 1,
                "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": 14083639,
              "match_date": "2026-05-14",
              "home_team": "Valencia",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 63,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0443,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 22,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083539,
              "match_date": "2026-05-10",
              "home_team": "Athletic Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0075,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 24,
                "tackles": 6,
                "tackles_won": 6,
                "clearances": 4,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083476,
              "match_date": "2026-05-02",
              "home_team": "Valencia",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 73,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0378,
                "expected_assists": 0.0452,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 30,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 996,
            "combined_rank_score": 607.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 770.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7737,
            "source_file": "data/player_rankings.csv",
            "player_name": "José Luis Gayà",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Abduvokhid Gulomov",
                  "ranking": 991
                },
                {
                  "player_name": "Danila Forov",
                  "ranking": 992
                },
                {
                  "player_name": "Bradley Lyons",
                  "ranking": 993
                },
                {
                  "player_name": "Dario Šarić",
                  "ranking": 994
                },
                {
                  "player_name": "José Ángel Carmona",
                  "ranking": 995
                }
              ],
              "lower": [
                {
                  "player_name": "Rafael Bauzà",
                  "ranking": 997
                },
                {
                  "player_name": "Asier Osambela",
                  "ranking": 998
                },
                {
                  "player_name": "Nurbek Sarsenbaev",
                  "ranking": 999
                },
                {
                  "player_name": "Diyorbek Mamataliev",
                  "ranking": 1000
                },
                {
                  "player_name": "Vicente Villegas",
                  "ranking": 1001
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.758,
          "history_matches": 39,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 39,
            "data_confidence": 0.758,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9982,
            "fbref_prior_metrics": {
              "squad": "Valencia",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "minutes": 68.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0533
            },
            "rationale": "XGBoost regressor (D_service) evaluated 39 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Valencia, rel: 0.05, 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.853,
                "tackles": 1.8836,
                "tackles_won": 1.2351,
                "clearances": 2.3936,
                "aerial_won": 0.7987,
                "total_shots": 0.5712,
                "rating": 6.7737,
                "minutes": 82.24,
                "total_pass": 31.1492,
                "accurate_pass": 28.4171,
                "duels_won": 3.5171,
                "total_long_balls": 1.6151,
                "accurate_long_balls": 0.7699,
                "total_own_half_passes": 19.0913,
                "accurate_own_half_passes": 18.0331,
                "total_opp_half_passes": 12.0579,
                "accurate_opp_half_passes": 10.384,
                "crosses_total": 2.2565,
                "crosses_accurate": 0.7157,
                "touches": 50.535,
                "possession_lost": 5.8957,
                "dispossessed": 0.13,
                "duels_lost": 2.7133,
                "aerial_lost": 0.6797,
                "total_contest": 0.5867,
                "won_contest": 0.4812,
                "ball_recovery": 3.7488,
                "challenges_lost": 0.877,
                "fouls": 0.9247,
                "fouls_drawn": 0.617,
                "blocks": 0.2136,
                "goals": 0.0063,
                "goal_rate": 0.0063,
                "assists": 0.037,
                "assist_rate": 0.037,
                "expected_goals": 0.0469,
                "expected_assists": 0.0632,
                "shots_on_target": 0.1959,
                "big_chances_created": 0.1922,
                "xgot": 0.0146,
                "ball_carries": 11.6395,
                "total_progression": 55.9615,
                "progressive_carries": 1.4073,
                "key_pass": 1.2062,
                "shots_off_target": 0.3753
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Real Sociedad",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-11",
                    "opponent": "Sevilla",
                    "minutes": 83.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "FC Barcelona",
                    "minutes": 36.0,
                    "is_starting": false,
                    "weight": 0.0667,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Celta Vigo",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-14",
                    "opponent": "Rayo Vallecano",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Atlético Madrid",
                    "minutes": 73.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 2.465,
                  "aerialWon": 0.2607,
                  "totalClearance_p90": 2.8,
                  "totalTackle": 2.1882,
                  "defensive_actions": 2.74
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.8529913425445557,
                    "model_output": 0.853,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1045
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0918
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0334
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0142
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0139
                        }
                      ],
                      "others": 0.0137,
                      "total": 0.853,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.114635
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.10003
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.038996
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.017022
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.01668
                        }
                      ],
                      "others_margin": 0.016174
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.8836361169815063,
                    "model_output": 1.8836,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1826
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1088
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.1009
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0761
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0685
                        }
                      ],
                      "others": -0.0364,
                      "total": 1.8836,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.12403
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.067202
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.058486
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.041992
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.036324
                        }
                      ],
                      "others_margin": -0.019131
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.2351388931274414,
                    "model_output": 1.2351,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.122
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1005
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0589
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.055
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0415
                        }
                      ],
                      "others": 0.0122,
                      "total": 1.2351,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.134848
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.098868
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.053671
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.047696
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.034527
                        }
                      ],
                      "others_margin": 0.009974
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.3935649394989014,
                    "model_output": 2.3936,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": -0.5075
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3991
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.3009
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2656
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1966
                        }
                      ],
                      "others": -0.16,
                      "total": 2.3936,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.160369
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.128195
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.095124
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.092199
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.074168
                        }
                      ],
                      "others_margin": -0.064675
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.7987393736839294,
                    "model_output": 0.7987,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.4909
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1259
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0924
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0829
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0741
                        }
                      ],
                      "others": -0.1569,
                      "total": 0.7987,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.437542
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.13167
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.086716
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.077421
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.074679
                        }
                      ],
                      "others_margin": -0.17928
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5712451934814453,
                    "model_output": 0.5712,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0628
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0266
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0257
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0142
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0138
                        }
                      ],
                      "others": -0.0192,
                      "total": 0.5712,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.062819
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.026568
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.025694
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.014228
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.0138
                        }
                      ],
                      "others_margin": -0.019203
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.773721694946289,
                    "model_output": 6.7737,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0262
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0133
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0121
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0118
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0115
                        }
                      ],
                      "others": -0.0178,
                      "total": 6.7737,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.026246
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.013272
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.012055
                        },
                        {
                          "name": "touches",
                          "margin": 0.011804
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.011465
                        }
                      ],
                      "others_margin": -0.017919
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 39,
                  "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.9982, quality 0.454)",
              "stats": {
                "interceptions": 0.8515,
                "tackles": 1.8802,
                "tackles_won": 1.2329,
                "clearances": 2.3893,
                "aerial_won": 0.7973,
                "total_shots": 0.5702,
                "rating": 6.7737,
                "minutes": 82.24,
                "total_pass": 31.0931,
                "accurate_pass": 28.3659,
                "duels_won": 3.5108,
                "total_long_balls": 1.6122,
                "accurate_long_balls": 0.7685,
                "total_own_half_passes": 19.0569,
                "accurate_own_half_passes": 18.0006,
                "total_opp_half_passes": 12.0362,
                "accurate_opp_half_passes": 10.3653,
                "crosses_total": 2.2524,
                "crosses_accurate": 0.7144,
                "touches": 50.444,
                "possession_lost": 5.8851,
                "dispossessed": 0.1298,
                "duels_lost": 2.7084,
                "aerial_lost": 0.6785,
                "total_contest": 0.5856,
                "won_contest": 0.4803,
                "ball_recovery": 3.7421,
                "challenges_lost": 0.8754,
                "fouls": 0.923,
                "fouls_drawn": 0.6159,
                "blocks": 0.2132,
                "goals": 0.0063,
                "goal_rate": 0.0063,
                "assists": 0.0369,
                "assist_rate": 0.0369,
                "expected_goals": 0.0468,
                "expected_assists": 0.0631,
                "shots_on_target": 0.1955,
                "big_chances_created": 0.1919,
                "xgot": 0.0146,
                "ball_carries": 11.6185,
                "total_progression": 55.8608,
                "progressive_carries": 1.4048,
                "key_pass": 1.204,
                "shots_off_target": 0.3746
              },
              "params": {
                "market_value_eur": 4300000,
                "quality_factor": 0.4535,
                "boost_factor": 0.9982,
                "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.0039)",
              "stats": {
                "interceptions": 0.8481,
                "tackles": 1.8802,
                "tackles_won": 1.228,
                "clearances": 2.3893,
                "aerial_won": 0.7973,
                "total_shots": 0.568,
                "rating": 6.7737,
                "minutes": 82.24,
                "total_pass": 31.0931,
                "accurate_pass": 28.3659,
                "duels_won": 3.5108,
                "total_long_balls": 1.6122,
                "accurate_long_balls": 0.7685,
                "total_own_half_passes": 19.0569,
                "accurate_own_half_passes": 18.0006,
                "total_opp_half_passes": 12.0362,
                "accurate_opp_half_passes": 10.3653,
                "crosses_total": 2.248,
                "crosses_accurate": 0.7144,
                "touches": 50.444,
                "possession_lost": 5.8851,
                "dispossessed": 0.1298,
                "duels_lost": 2.7084,
                "aerial_lost": 0.6785,
                "total_contest": 0.5856,
                "won_contest": 0.4803,
                "ball_recovery": 3.7421,
                "challenges_lost": 0.8754,
                "fouls": 0.9239,
                "fouls_drawn": 0.6225,
                "blocks": 0.2132,
                "goals": 0.0063,
                "goal_rate": 0.0063,
                "assists": 0.0368,
                "assist_rate": 0.0368,
                "expected_goals": 0.0468,
                "expected_assists": 0.0631,
                "shots_on_target": 0.1947,
                "big_chances_created": 0.1919,
                "xgot": 0.0146,
                "ball_carries": 11.6185,
                "total_progression": 55.8608,
                "progressive_carries": 1.4048,
                "key_pass": 1.204,
                "shots_off_target": 0.3746
              },
              "params": {
                "blend_weight": 0.0039,
                "history_matches": 39,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9138,
                "prior_reliability": 0.0533,
                "competition": "La Liga",
                "squad": "Valencia"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 0.6159,
                  "after": 0.6225
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.8481,
                "tackles": 1.8802,
                "tackles_won": 1.228,
                "clearances": 2.3893,
                "aerial_won": 0.7973,
                "total_shots": 0.5693,
                "rating": 6.7737,
                "minutes": 82.24,
                "total_pass": 31.0931,
                "accurate_pass": 28.3659,
                "duels_won": 3.5108,
                "total_long_balls": 1.6122,
                "accurate_long_balls": 0.7685,
                "total_own_half_passes": 19.0569,
                "accurate_own_half_passes": 18.0006,
                "total_opp_half_passes": 12.0362,
                "accurate_opp_half_passes": 10.3653,
                "crosses_total": 2.248,
                "crosses_accurate": 0.7144,
                "touches": 50.444,
                "possession_lost": 5.8851,
                "dispossessed": 0.1298,
                "duels_lost": 2.7084,
                "aerial_lost": 0.6785,
                "total_contest": 0.5856,
                "won_contest": 0.4803,
                "ball_recovery": 3.7421,
                "challenges_lost": 0.8754,
                "fouls": 0.9239,
                "fouls_drawn": 0.6225,
                "blocks": 0.2132,
                "goals": 0.0063,
                "goal_rate": 0.0063,
                "assists": 0.0368,
                "assist_rate": 0.0368,
                "expected_goals": 0.0468,
                "expected_assists": 0.0631,
                "shots_on_target": 0.1947,
                "big_chances_created": 0.1919,
                "xgot": 0.0146,
                "ball_carries": 11.6185,
                "total_progression": 55.8608,
                "progressive_carries": 1.4048,
                "key_pass": 1.204,
                "shots_off_target": 0.3746
              },
              "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.8481,
                "tackles": 1.8802,
                "tackles_won": 1.228,
                "clearances": 2.3893,
                "aerial_won": 0.7973,
                "total_shots": 0.5693,
                "rating": 6.7737,
                "minutes": 82.24,
                "total_pass": 31.0931,
                "accurate_pass": 28.3659,
                "duels_won": 3.5108,
                "total_long_balls": 1.6122,
                "accurate_long_balls": 0.7685,
                "total_own_half_passes": 19.0569,
                "accurate_own_half_passes": 18.0006,
                "total_opp_half_passes": 12.0362,
                "accurate_opp_half_passes": 10.3653,
                "crosses_total": 2.248,
                "crosses_accurate": 0.7144,
                "touches": 50.444,
                "possession_lost": 5.8851,
                "dispossessed": 0.1298,
                "duels_lost": 2.7084,
                "aerial_lost": 0.6785,
                "total_contest": 0.5856,
                "won_contest": 0.4803,
                "ball_recovery": 3.7421,
                "challenges_lost": 0.8754,
                "fouls": 0.9239,
                "fouls_drawn": 0.6225,
                "blocks": 0.2132,
                "goals": 0.0063,
                "goal_rate": 0.0063,
                "assists": 0.0368,
                "assist_rate": 0.0368,
                "expected_goals": 0.0468,
                "expected_assists": 0.0631,
                "shots_on_target": 0.1947,
                "big_chances_created": 0.1919,
                "xgot": 0.0146,
                "ball_carries": 11.6185,
                "total_progression": 55.8608,
                "progressive_carries": 1.4048,
                "key_pass": 1.204,
                "shots_off_target": 0.3746,
                "opponent_faced": "Ayoze Pérez",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ayoze Pérez",
                  "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.8481,
                "tackles": 1.8802,
                "tackles_won": 1.228,
                "clearances": 2.3893,
                "aerial_won": 0.7973,
                "total_shots": 0.5693,
                "rating": 6.7737,
                "minutes": 82.24,
                "total_pass": 31.0931,
                "accurate_pass": 28.3659,
                "duels_won": 3.5108,
                "total_long_balls": 1.6122,
                "accurate_long_balls": 0.7685,
                "total_own_half_passes": 19.0569,
                "accurate_own_half_passes": 18.0006,
                "total_opp_half_passes": 12.0362,
                "accurate_opp_half_passes": 10.3653,
                "crosses_total": 2.248,
                "crosses_accurate": 0.7144,
                "touches": 50.444,
                "possession_lost": 5.8851,
                "dispossessed": 0.1298,
                "duels_lost": 2.7084,
                "aerial_lost": 0.6785,
                "total_contest": 0.5856,
                "won_contest": 0.4803,
                "ball_recovery": 3.7421,
                "challenges_lost": 0.8754,
                "fouls": 0.9239,
                "fouls_drawn": 0.6225,
                "blocks": 0.2132,
                "goal_rate": 0.0063,
                "goals": 0,
                "assist_rate": 0.0368,
                "assists": 0,
                "expected_goals": 0.0468,
                "expected_assists": 0.0631,
                "shots_on_target": 0.1947,
                "big_chances_created": 0.1919,
                "xgot": 0.0146,
                "ball_carries": 11.6185,
                "total_progression": 55.8608,
                "progressive_carries": 1.4048,
                "key_pass": 1.204,
                "shots_off_target": 0.3746,
                "opponent_faced": "Ayoze Pérez",
                "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.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "interceptions": 0.8481,
                "tackles": 1.8802,
                "tackles_won": 1.228,
                "clearances": 2.3893,
                "aerial_won": 0.7973,
                "total_shots": 0.5693,
                "rating": 6.7737,
                "minutes": 82.24,
                "total_pass": 31.0931,
                "accurate_pass": 28.3659,
                "duels_won": 3.5108,
                "total_long_balls": 1.6122,
                "accurate_long_balls": 0.7685,
                "total_own_half_passes": 19.0569,
                "accurate_own_half_passes": 18.0006,
                "total_opp_half_passes": 12.0362,
                "accurate_opp_half_passes": 10.3653,
                "crosses_total": 2.248,
                "crosses_accurate": 0.7144,
                "touches": 50.444,
                "possession_lost": 5.8851,
                "dispossessed": 0.1298,
                "duels_lost": 2.7084,
                "aerial_lost": 0.6785,
                "total_contest": 0.5856,
                "won_contest": 0.4803,
                "ball_recovery": 3.7421,
                "challenges_lost": 0.8754,
                "fouls": 0.9239,
                "fouls_drawn": 0.6225,
                "blocks": 0.2132,
                "goal_rate": 0.0063,
                "goals": 0,
                "assist_rate": 0.0368,
                "assists": 0,
                "expected_goals": 0.0476,
                "expected_assists": 0.0642,
                "shots_on_target": 0.1947,
                "big_chances_created": 0.1919,
                "xgot": 0.0149,
                "ball_carries": 11.6185,
                "total_progression": 55.8608,
                "progressive_carries": 1.4048,
                "key_pass": 1.204,
                "shots_off_target": 0.3746,
                "opponent_faced": "Ayoze Pérez",
                "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.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 10 by projected rating, fifa_overall 80.0)",
              "stats": {
                "interceptions": 0.8481,
                "tackles": 1.8802,
                "tackles_won": 1.228,
                "clearances": 2.3893,
                "aerial_won": 0.7973,
                "total_shots": 0.5693,
                "rating": 6.7737,
                "minutes": 82.24,
                "total_pass": 31.0931,
                "accurate_pass": 28.3659,
                "duels_won": 3.5108,
                "total_long_balls": 1.6122,
                "accurate_long_balls": 0.7685,
                "total_own_half_passes": 19.0569,
                "accurate_own_half_passes": 18.0006,
                "total_opp_half_passes": 12.0362,
                "accurate_opp_half_passes": 10.3653,
                "crosses_total": 2.248,
                "crosses_accurate": 0.7144,
                "touches": 50.444,
                "possession_lost": 5.8851,
                "dispossessed": 0.1298,
                "duels_lost": 2.7084,
                "aerial_lost": 0.6785,
                "total_contest": 0.5856,
                "won_contest": 0.4803,
                "ball_recovery": 3.7421,
                "challenges_lost": 0.8754,
                "fouls": 0.9239,
                "fouls_drawn": 0.6225,
                "blocks": 0.2132,
                "goal_rate": 0.0063,
                "goals": 0,
                "assist_rate": 0.0368,
                "assists": 0,
                "expected_goals": 0.0476,
                "expected_assists": 0.0642,
                "shots_on_target": 0.1947,
                "big_chances_created": 0.1919,
                "xgot": 0.0149,
                "ball_carries": 11.6185,
                "total_progression": 55.8608,
                "progressive_carries": 1.4048,
                "key_pass": 1.204,
                "shots_off_target": 0.3746,
                "opponent_faced": "Ayoze Pérez",
                "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": 80.0
              },
              "params": {
                "match_squad_rank": 10,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 996,
                "fifa_rank": 770.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 80.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 0.8481,
                "tackles": 1.8802,
                "tackles_won": 1.228,
                "clearances": 2.3893,
                "aerial_won": 0.7973,
                "total_shots": 0.5693,
                "rating": 6.7737,
                "minutes": 82.24,
                "total_pass": 31.0931,
                "accurate_pass": 28.3659,
                "duels_won": 3.5108,
                "total_long_balls": 1.6122,
                "accurate_long_balls": 0.7685,
                "total_own_half_passes": 19.0569,
                "accurate_own_half_passes": 18.0006,
                "total_opp_half_passes": 12.0362,
                "accurate_opp_half_passes": 10.3653,
                "crosses_total": 2.248,
                "crosses_accurate": 0.7144,
                "touches": 50.444,
                "possession_lost": 5.8851,
                "dispossessed": 0.1298,
                "duels_lost": 2.7084,
                "aerial_lost": 0.6785,
                "total_contest": 0.5856,
                "won_contest": 0.4803,
                "ball_recovery": 3.7421,
                "challenges_lost": 0.8754,
                "fouls": 0.9239,
                "fouls_drawn": 0.6225,
                "blocks": 0.2132,
                "goal_rate": 0.0063,
                "goals": 0,
                "assist_rate": 0.0368,
                "assists": 0,
                "expected_goals": 0.0476,
                "expected_assists": 0.0642,
                "shots_on_target": 0.1947,
                "big_chances_created": 0.1919,
                "xgot": 0.0149,
                "ball_carries": 11.6185,
                "total_progression": 55.8608,
                "progressive_carries": 1.4048,
                "key_pass": 1.204,
                "shots_off_target": 0.3746,
                "opponent_faced": "Ayoze Pérez",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0465,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0465,
                "goal_rate": 0.0063,
                "scorer_weight": 0.0381,
                "squad_weight_total": 0.9718,
                "weight_share": 0.0392,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 0.8481,
                "tackles": 1.8802,
                "tackles_won": 1.228,
                "clearances": 2.3893,
                "aerial_won": 0.7973,
                "total_shots": 0.5693,
                "rating": 6.7737,
                "minutes": 82.24,
                "total_pass": 31.0931,
                "accurate_pass": 28.3659,
                "duels_won": 3.5108,
                "total_long_balls": 1.6122,
                "accurate_long_balls": 0.7685,
                "total_own_half_passes": 19.0569,
                "accurate_own_half_passes": 18.0006,
                "total_opp_half_passes": 12.0362,
                "accurate_opp_half_passes": 10.3653,
                "crosses_total": 2.248,
                "crosses_accurate": 0.7144,
                "touches": 50.444,
                "possession_lost": 5.8851,
                "dispossessed": 0.1298,
                "duels_lost": 2.7084,
                "aerial_lost": 0.6785,
                "total_contest": 0.5856,
                "won_contest": 0.4803,
                "ball_recovery": 3.7421,
                "challenges_lost": 0.8754,
                "fouls": 0.9239,
                "fouls_drawn": 0.6225,
                "blocks": 0.2132,
                "goal_rate": 0.0063,
                "goals": 0,
                "assist_rate": 0.0368,
                "assists": 0,
                "expected_goals": 0.0476,
                "expected_assists": 0.0642,
                "shots_on_target": 0.1947,
                "big_chances_created": 0.1919,
                "xgot": 0.0149,
                "ball_carries": 11.6185,
                "total_progression": 55.8608,
                "progressive_carries": 1.4048,
                "key_pass": 1.204,
                "shots_off_target": 0.3746,
                "opponent_faced": "Ayoze Pérez",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0465,
                "projected_assists": 0,
                "assist_probability": 0.0622,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0622,
                "assist_rate": 0.0368,
                "provider_weight": 0.0514,
                "squad_weight_total": 0.6412,
                "weight_share": 0.0801,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 13
              }
            }
          ]
        },
        "Justin De Haas": {
          "player_id": 876255,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 12,
          "height": 192,
          "market_value": 7700000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 2,
            "total_shots": 0,
            "rating": 6.7505,
            "minutes": 81,
            "total_pass": 47,
            "accurate_pass": 40,
            "duels_won": 3,
            "total_long_balls": 5,
            "accurate_long_balls": 2,
            "total_own_half_passes": 36,
            "accurate_own_half_passes": 32,
            "total_opp_half_passes": 11,
            "accurate_opp_half_passes": 8,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 57,
            "possession_lost": 7.1963,
            "dispossessed": 0.1654,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.2264,
            "assists": 0,
            "expected_goals": 0.0035,
            "expected_assists": 0.0127,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 10,
            "total_progression": 26,
            "progressive_carries": 0,
            "key_pass": 1,
            "shots_off_target": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.9,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Ayoze Pérez",
            "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.0035,
            "projected_assists": 0,
            "assist_probability": 0.0126,
            "finishing_factor": 0.9363,
            "creation_factor": 1.25,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 74,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0029,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 26,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0113,
                "total_shots": 0,
                "total_pass": 46,
                "accurate_pass": 41,
                "key_pass": 1,
                "clearances": 3,
                "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": 16416297,
              "match_date": "2026-09-20",
              "home_team": "Valencia",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0175,
                "expected_assists": 0.0416,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 54,
                "accurate_pass": 47,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 7,
                "aerial_won": 4,
                "duels_won": 9,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 82,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0033,
                "total_shots": 0,
                "total_pass": 67,
                "accurate_pass": 59,
                "tackles": 1,
                "interceptions": 2,
                "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": "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": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 45,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0033,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 34,
                "clearances": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3412,
            "combined_rank_score": 1395.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1968.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7505,
            "source_file": "data/player_rankings.csv",
            "player_name": "Justin De Haas",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jordy Clasie",
                  "ranking": 3407
                },
                {
                  "player_name": "Ethan Pinnock",
                  "ranking": 3408
                },
                {
                  "player_name": "Alassane Pléa",
                  "ranking": 3409
                },
                {
                  "player_name": "Caio Henrique",
                  "ranking": 3410
                },
                {
                  "player_name": "William Osula",
                  "ranking": 3411
                }
              ],
              "lower": [
                {
                  "player_name": "Nahuel Losada",
                  "ranking": 3413
                },
                {
                  "player_name": "Sven Mijnans",
                  "ranking": 3414
                },
                {
                  "player_name": "Dário Essugo",
                  "ranking": 3415
                },
                {
                  "player_name": "Niclas Füllkrug",
                  "ranking": 3416
                },
                {
                  "player_name": "Arthur",
                  "ranking": 3417
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.567,
          "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.567,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9985,
            "fbref_prior_metrics": {
              "squad": "Valencia",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "minutes": 45.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 5 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Valencia, rel: 0.03, 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.0448,
                "tackles": 1.1336,
                "tackles_won": 0.6247,
                "clearances": 5.5499,
                "aerial_won": 2.2398,
                "total_shots": 0.4311,
                "rating": 6.7505,
                "minutes": 81.45,
                "total_pass": 46.932,
                "accurate_pass": 40.1196,
                "duels_won": 3.0822,
                "total_long_balls": 4.9777,
                "accurate_long_balls": 1.9416,
                "total_own_half_passes": 35.8906,
                "accurate_own_half_passes": 32.4343,
                "total_opp_half_passes": 11.0414,
                "accurate_opp_half_passes": 7.6854,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 57.5813,
                "possession_lost": 7.2071,
                "dispossessed": 0.1656,
                "duels_lost": 2.1509,
                "aerial_lost": 1.4841,
                "total_contest": 0.6188,
                "won_contest": 0.6188,
                "ball_recovery": 2.6997,
                "challenges_lost": 0.0,
                "fouls": 0.5012,
                "fouls_drawn": 0.1948,
                "blocks": 0.75,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2292,
                "assist_rate": 0.2292,
                "expected_goals": 0.0034,
                "expected_assists": 0.0125,
                "shots_on_target": 0.0,
                "big_chances_created": 0.2292,
                "xgot": 0.0,
                "ball_carries": 9.6963,
                "total_progression": 26.2808,
                "progressive_carries": 0.3896,
                "key_pass": 0.6188,
                "shots_off_target": 0.4311
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Deportivo Alavés",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Celta Vigo",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 4.613,
                  "aerialWon": 1.7133,
                  "totalClearance_p90": 5.309,
                  "totalTackle": 0.5552,
                  "defensive_actions": 1.5457
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.0448237657546997,
                    "model_output": 1.0448,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1143
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0451
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0234
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0206
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0159
                        }
                      ],
                      "others": -0.003,
                      "total": 1.0448,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124711
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.045266
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.02272
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.019543
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.015102
                        }
                      ],
                      "others_margin": -0.002844
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.1335736513137817,
                    "model_output": 1.1336,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1768
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1412
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.1016
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0652
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.061
                        }
                      ],
                      "others": -0.0573,
                      "total": 1.1336,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.120294
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.094885
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.074276
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.050753
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.049978
                        }
                      ],
                      "others_margin": -0.049326
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.6247383952140808,
                    "model_output": 0.6247,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0944
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.088
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0763
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0339
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0251
                        }
                      ],
                      "others": -0.0786,
                      "total": 0.6247,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.118412
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.110839
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.095389
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.045511
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.035129
                        }
                      ],
                      "others_margin": -0.118419
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 5.549938678741455,
                    "model_output": 5.5499,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.4387
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4847
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.4083
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2476
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.1532
                        }
                      ],
                      "others": 0.3923,
                      "total": 5.5499,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.120518
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.118188
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.089743
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.05074
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.030162
                        }
                      ],
                      "others_margin": 0.073312
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.2398393154144287,
                    "model_output": 2.2398,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.1841
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1562
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0901
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0814
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0618
                        }
                      ],
                      "others": 0.281,
                      "total": 2.2398,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.124797
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.094879
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.050915
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.043854
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.032043
                        }
                      ],
                      "others_margin": 0.134102
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.43111452460289,
                    "model_output": 0.4311,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1013
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0487
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0158
                        },
                        {
                          "name": "wonTackle",
                          "contribution": 0.0136
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0108
                        }
                      ],
                      "others": -0.0314,
                      "total": 0.4311,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.101272
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.048747
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.015783
                        },
                        {
                          "name": "wonTackle",
                          "margin": 0.013622
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.010755
                        }
                      ],
                      "others_margin": -0.031461
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7505412101745605,
                    "model_output": 6.7505,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0164
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": -0.0154
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0143
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0112
                        },
                        {
                          "name": "touches",
                          "contribution": 0.009
                        }
                      ],
                      "others": -0.014,
                      "total": 6.7505,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.016369
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": -0.015369
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.014341
                        },
                        {
                          "name": "rating",
                          "margin": 0.011205
                        },
                        {
                          "name": "touches",
                          "margin": 0.009028
                        }
                      ],
                      "others_margin": -0.013996
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 5,
                  "role_matches": 5,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9985, quality 0.495)",
              "stats": {
                "interceptions": 1.0433,
                "tackles": 1.1319,
                "tackles_won": 0.6238,
                "clearances": 5.5416,
                "aerial_won": 2.2365,
                "total_shots": 0.4305,
                "rating": 6.7505,
                "minutes": 81.45,
                "total_pass": 46.8616,
                "accurate_pass": 40.0594,
                "duels_won": 3.0776,
                "total_long_balls": 4.9702,
                "accurate_long_balls": 1.9387,
                "total_own_half_passes": 35.8368,
                "accurate_own_half_passes": 32.3856,
                "total_opp_half_passes": 11.0248,
                "accurate_opp_half_passes": 7.6739,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 57.4949,
                "possession_lost": 7.1963,
                "dispossessed": 0.1654,
                "duels_lost": 2.1477,
                "aerial_lost": 1.4819,
                "total_contest": 0.6179,
                "won_contest": 0.6179,
                "ball_recovery": 2.6957,
                "challenges_lost": 0.0,
                "fouls": 0.5004,
                "fouls_drawn": 0.1945,
                "blocks": 0.7489,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2289,
                "assist_rate": 0.2289,
                "expected_goals": 0.0034,
                "expected_assists": 0.0125,
                "shots_on_target": 0.0,
                "big_chances_created": 0.2289,
                "xgot": 0.0,
                "ball_carries": 9.6818,
                "total_progression": 26.2414,
                "progressive_carries": 0.389,
                "key_pass": 0.6179,
                "shots_off_target": 0.4305
              },
              "params": {
                "market_value_eur": 7700000,
                "quality_factor": 0.4951,
                "boost_factor": 0.9985,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0108)",
              "stats": {
                "interceptions": 1.032,
                "tackles": 1.1319,
                "tackles_won": 0.617,
                "clearances": 5.5416,
                "aerial_won": 2.2365,
                "total_shots": 0.4258,
                "rating": 6.7505,
                "minutes": 81.45,
                "total_pass": 46.8616,
                "accurate_pass": 40.0594,
                "duels_won": 3.0776,
                "total_long_balls": 4.9702,
                "accurate_long_balls": 1.9387,
                "total_own_half_passes": 35.8368,
                "accurate_own_half_passes": 32.3856,
                "total_opp_half_passes": 11.0248,
                "accurate_opp_half_passes": 7.6739,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 57.4949,
                "possession_lost": 7.1963,
                "dispossessed": 0.1654,
                "duels_lost": 2.1477,
                "aerial_lost": 1.4819,
                "total_contest": 0.6179,
                "won_contest": 0.6179,
                "ball_recovery": 2.6957,
                "challenges_lost": 0.0,
                "fouls": 0.5146,
                "fouls_drawn": 0.1924,
                "blocks": 0.7489,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2264,
                "assist_rate": 0.2264,
                "expected_goals": 0.0034,
                "expected_assists": 0.0125,
                "shots_on_target": 0.0,
                "big_chances_created": 0.2289,
                "xgot": 0.0,
                "ball_carries": 9.6818,
                "total_progression": 26.2414,
                "progressive_carries": 0.389,
                "key_pass": 0.6179,
                "shots_off_target": 0.4305
              },
              "params": {
                "blend_weight": 0.0108,
                "history_matches": 5,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.905,
                "prior_reliability": 0.0333,
                "competition": "La Liga",
                "squad": "Valencia"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.5004,
                  "after": 0.5146
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.0433,
                  "after": 1.032
                },
                {
                  "stat": "wonTackle",
                  "before": 0.6238,
                  "after": 0.617
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.032,
                "tackles": 1.1319,
                "tackles_won": 0.617,
                "clearances": 5.5416,
                "aerial_won": 2.2365,
                "total_shots": 0.4305,
                "rating": 6.7505,
                "minutes": 81.45,
                "total_pass": 46.8616,
                "accurate_pass": 40.0594,
                "duels_won": 3.0776,
                "total_long_balls": 4.9702,
                "accurate_long_balls": 1.9387,
                "total_own_half_passes": 35.8368,
                "accurate_own_half_passes": 32.3856,
                "total_opp_half_passes": 11.0248,
                "accurate_opp_half_passes": 7.6739,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 57.4949,
                "possession_lost": 7.1963,
                "dispossessed": 0.1654,
                "duels_lost": 2.1477,
                "aerial_lost": 1.4819,
                "total_contest": 0.6179,
                "won_contest": 0.6179,
                "ball_recovery": 2.6957,
                "challenges_lost": 0.0,
                "fouls": 0.5146,
                "fouls_drawn": 0.1924,
                "blocks": 0.7489,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2264,
                "assist_rate": 0.2264,
                "expected_goals": 0.0034,
                "expected_assists": 0.0125,
                "shots_on_target": 0.0,
                "big_chances_created": 0.2289,
                "xgot": 0.0,
                "ball_carries": 9.6818,
                "total_progression": 26.2414,
                "progressive_carries": 0.389,
                "key_pass": 0.6179,
                "shots_off_target": 0.4305
              },
              "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.032,
                "tackles": 1.1319,
                "tackles_won": 0.617,
                "clearances": 5.5416,
                "aerial_won": 2.2365,
                "total_shots": 0.4305,
                "rating": 6.7505,
                "minutes": 81.45,
                "total_pass": 46.8616,
                "accurate_pass": 40.0594,
                "duels_won": 3.0776,
                "total_long_balls": 4.9702,
                "accurate_long_balls": 1.9387,
                "total_own_half_passes": 35.8368,
                "accurate_own_half_passes": 32.3856,
                "total_opp_half_passes": 11.0248,
                "accurate_opp_half_passes": 7.6739,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 57.4949,
                "possession_lost": 7.1963,
                "dispossessed": 0.1654,
                "duels_lost": 2.1477,
                "aerial_lost": 1.4819,
                "total_contest": 0.6179,
                "won_contest": 0.6179,
                "ball_recovery": 2.6957,
                "challenges_lost": 0.0,
                "fouls": 0.5146,
                "fouls_drawn": 0.1924,
                "blocks": 0.7489,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.2264,
                "assist_rate": 0.2264,
                "expected_goals": 0.0034,
                "expected_assists": 0.0125,
                "shots_on_target": 0.0,
                "big_chances_created": 0.2289,
                "xgot": 0.0,
                "ball_carries": 9.6818,
                "total_progression": 26.2414,
                "progressive_carries": 0.389,
                "key_pass": 0.6179,
                "shots_off_target": 0.4305,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Ayoze Pérez",
                "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": "Ayoze Pérez",
                  "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.032,
                "tackles": 1.1319,
                "tackles_won": 0.617,
                "clearances": 5.5416,
                "aerial_won": 2.2365,
                "total_shots": 0.4305,
                "rating": 6.7505,
                "minutes": 81.45,
                "total_pass": 46.8616,
                "accurate_pass": 40.0594,
                "duels_won": 3.0776,
                "total_long_balls": 4.9702,
                "accurate_long_balls": 1.9387,
                "total_own_half_passes": 35.8368,
                "accurate_own_half_passes": 32.3856,
                "total_opp_half_passes": 11.0248,
                "accurate_opp_half_passes": 7.6739,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 57.4949,
                "possession_lost": 7.1963,
                "dispossessed": 0.1654,
                "duels_lost": 2.1477,
                "aerial_lost": 1.4819,
                "total_contest": 0.6179,
                "won_contest": 0.6179,
                "ball_recovery": 2.6957,
                "challenges_lost": 0.0,
                "fouls": 0.5146,
                "fouls_drawn": 0.1924,
                "blocks": 0.7489,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.2264,
                "assists": 0,
                "expected_goals": 0.0034,
                "expected_assists": 0.0125,
                "shots_on_target": 0.0,
                "big_chances_created": 0.2289,
                "xgot": 0.0,
                "ball_carries": 9.6818,
                "total_progression": 26.2414,
                "progressive_carries": 0.389,
                "key_pass": 0.6179,
                "shots_off_target": 0.4305,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Ayoze Pérez",
                "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.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "interceptions": 1.032,
                "tackles": 1.1319,
                "tackles_won": 0.617,
                "clearances": 5.5416,
                "aerial_won": 2.2365,
                "total_shots": 0.4305,
                "rating": 6.7505,
                "minutes": 81.45,
                "total_pass": 46.8616,
                "accurate_pass": 40.0594,
                "duels_won": 3.0776,
                "total_long_balls": 4.9702,
                "accurate_long_balls": 1.9387,
                "total_own_half_passes": 35.8368,
                "accurate_own_half_passes": 32.3856,
                "total_opp_half_passes": 11.0248,
                "accurate_opp_half_passes": 7.6739,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 57.4949,
                "possession_lost": 7.1963,
                "dispossessed": 0.1654,
                "duels_lost": 2.1477,
                "aerial_lost": 1.4819,
                "total_contest": 0.6179,
                "won_contest": 0.6179,
                "ball_recovery": 2.6957,
                "challenges_lost": 0.0,
                "fouls": 0.5146,
                "fouls_drawn": 0.1924,
                "blocks": 0.7489,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.2264,
                "assists": 0,
                "expected_goals": 0.0035,
                "expected_assists": 0.0127,
                "shots_on_target": 0.0,
                "big_chances_created": 0.2289,
                "xgot": 0.0,
                "ball_carries": 9.6818,
                "total_progression": 26.2414,
                "progressive_carries": 0.389,
                "key_pass": 0.6179,
                "shots_off_target": 0.4305,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Ayoze Pérez",
                "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.9363,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 76.0)",
              "stats": {
                "interceptions": 1.032,
                "tackles": 1.1319,
                "tackles_won": 0.617,
                "clearances": 5.5416,
                "aerial_won": 2.2365,
                "total_shots": 0.4305,
                "rating": 6.7505,
                "minutes": 81.45,
                "total_pass": 46.8616,
                "accurate_pass": 40.0594,
                "duels_won": 3.0776,
                "total_long_balls": 4.9702,
                "accurate_long_balls": 1.9387,
                "total_own_half_passes": 35.8368,
                "accurate_own_half_passes": 32.3856,
                "total_opp_half_passes": 11.0248,
                "accurate_opp_half_passes": 7.6739,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 57.4949,
                "possession_lost": 7.1963,
                "dispossessed": 0.1654,
                "duels_lost": 2.1477,
                "aerial_lost": 1.4819,
                "total_contest": 0.6179,
                "won_contest": 0.6179,
                "ball_recovery": 2.6957,
                "challenges_lost": 0.0,
                "fouls": 0.5146,
                "fouls_drawn": 0.1924,
                "blocks": 0.7489,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.2264,
                "assists": 0,
                "expected_goals": 0.0035,
                "expected_assists": 0.0127,
                "shots_on_target": 0.0,
                "big_chances_created": 0.2289,
                "xgot": 0.0,
                "ball_carries": 9.6818,
                "total_progression": 26.2414,
                "progressive_carries": 0.389,
                "key_pass": 0.6179,
                "shots_off_target": 0.4305,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Ayoze Pérez",
                "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.9363,
                "creation_factor": 1.25,
                "fifa_overall": 76.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": 3412,
                "fifa_rank": 1968.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": 1.032,
                "tackles": 1.1319,
                "tackles_won": 0.617,
                "clearances": 5.5416,
                "aerial_won": 2.2365,
                "total_shots": 0.4305,
                "rating": 6.7505,
                "minutes": 81.45,
                "total_pass": 46.8616,
                "accurate_pass": 40.0594,
                "duels_won": 3.0776,
                "total_long_balls": 4.9702,
                "accurate_long_balls": 1.9387,
                "total_own_half_passes": 35.8368,
                "accurate_own_half_passes": 32.3856,
                "total_opp_half_passes": 11.0248,
                "accurate_opp_half_passes": 7.6739,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 57.4949,
                "possession_lost": 7.1963,
                "dispossessed": 0.1654,
                "duels_lost": 2.1477,
                "aerial_lost": 1.4819,
                "total_contest": 0.6179,
                "won_contest": 0.6179,
                "ball_recovery": 2.6957,
                "challenges_lost": 0.0,
                "fouls": 0.5146,
                "fouls_drawn": 0.1924,
                "blocks": 0.7489,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.2264,
                "assists": 0,
                "expected_goals": 0.0035,
                "expected_assists": 0.0127,
                "shots_on_target": 0.0,
                "big_chances_created": 0.2289,
                "xgot": 0.0,
                "ball_carries": 9.6818,
                "total_progression": 26.2414,
                "progressive_carries": 0.389,
                "key_pass": 0.6179,
                "shots_off_target": 0.4305,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Ayoze Pérez",
                "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.0035,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9363,
                "creation_factor": 1.25,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0035,
                "goal_rate": 0.0,
                "scorer_weight": 0.0033,
                "squad_weight_total": 0.9718,
                "weight_share": 0.0034,
                "finishing_factor": 0.9363,
                "appearance_weight": 1.0,
                "weight_rank": 13,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 1.032,
                "tackles": 1.1319,
                "tackles_won": 0.617,
                "clearances": 5.5416,
                "aerial_won": 2.2365,
                "total_shots": 0.4305,
                "rating": 6.7505,
                "minutes": 81.45,
                "total_pass": 46.8616,
                "accurate_pass": 40.0594,
                "duels_won": 3.0776,
                "total_long_balls": 4.9702,
                "accurate_long_balls": 1.9387,
                "total_own_half_passes": 35.8368,
                "accurate_own_half_passes": 32.3856,
                "total_opp_half_passes": 11.0248,
                "accurate_opp_half_passes": 7.6739,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 57.4949,
                "possession_lost": 7.1963,
                "dispossessed": 0.1654,
                "duels_lost": 2.1477,
                "aerial_lost": 1.4819,
                "total_contest": 0.6179,
                "won_contest": 0.6179,
                "ball_recovery": 2.6957,
                "challenges_lost": 0.0,
                "fouls": 0.5146,
                "fouls_drawn": 0.1924,
                "blocks": 0.7489,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.2264,
                "assists": 0,
                "expected_goals": 0.0035,
                "expected_assists": 0.0127,
                "shots_on_target": 0.0,
                "big_chances_created": 0.2289,
                "xgot": 0.0,
                "ball_carries": 9.6818,
                "total_progression": 26.2414,
                "progressive_carries": 0.389,
                "key_pass": 0.6179,
                "shots_off_target": 0.4305,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Ayoze Pérez",
                "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.0035,
                "projected_assists": 0,
                "assist_probability": 0.0126,
                "finishing_factor": 0.9363,
                "creation_factor": 1.25,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0126,
                "assist_rate": 0.2264,
                "provider_weight": 0.0159,
                "squad_weight_total": 0.6412,
                "weight_share": 0.0248,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 13
              }
            }
          ]
        },
        "César Tárrega": {
          "player_id": 996928,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 5,
          "height": 193,
          "market_value": 9300000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 2,
            "total_shots": 1,
            "rating": 6.8342,
            "minutes": 81,
            "total_pass": 41,
            "accurate_pass": 36,
            "duels_won": 5,
            "total_long_balls": 5,
            "accurate_long_balls": 2,
            "total_own_half_passes": 28,
            "accurate_own_half_passes": 26,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 9,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 55,
            "possession_lost": 6.8724,
            "dispossessed": 0.0543,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0286,
            "expected_assists": 0.0062,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0005,
            "ball_carries": 15,
            "total_progression": 45,
            "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.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Ayoze Pérez",
            "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.0282,
            "projected_assists": 0,
            "assist_probability": 0.0062,
            "finishing_factor": 0.8,
            "creation_factor": 0.8913,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 8.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 24,
                "tackles": 1,
                "interceptions": 5,
                "clearances": 6,
                "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": 16416330,
              "match_date": "2026-09-11",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 24,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0037,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 18,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416325,
              "match_date": "2026-09-06",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 36,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 5,
                "interceptions": 3,
                "clearances": 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": 16416291,
              "match_date": "2026-08-30",
              "home_team": "Deportivo de A Coruña",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 5.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0214,
                "expected_assists": 0.0109,
                "total_shots": 1,
                "total_pass": 64,
                "accurate_pass": 57,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 6,
                "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": 16421049,
              "match_date": "2026-08-25",
              "home_team": "Valencia",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1193,
                "expected_assists": 0.0176,
                "total_shots": 2,
                "total_pass": 54,
                "accurate_pass": 49,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_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": "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": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0184,
                "total_shots": 0,
                "total_pass": 59,
                "accurate_pass": 54,
                "tackles": 5,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 7,
                "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": 14083739,
              "match_date": "2026-05-23",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0344,
                "expected_assists": 0.0002,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 20,
                "accurate_pass": 17,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "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": 14083687,
              "match_date": "2026-05-17",
              "home_team": "Real Sociedad",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 5.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0023,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 45,
                "tackles": 4,
                "tackles_won": 2,
                "clearances": 7,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083639,
              "match_date": "2026-05-14",
              "home_team": "Valencia",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1487,
                "expected_assists": 0.0009,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 31,
                "accurate_pass": 23,
                "tackles": 3,
                "interceptions": 3,
                "clearances": 9,
                "aerial_won": 7,
                "duels_won": 12,
                "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": 14083539,
              "match_date": "2026-05-10",
              "home_team": "Athletic Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 36,
                "interceptions": 1,
                "clearances": 13,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3439,
            "combined_rank_score": 1429.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 3.0,
            "fifa_rank": 2413.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.8342,
            "source_file": "data/player_rankings.csv",
            "player_name": "César Tárrega",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ryan Manning",
                  "ranking": 3434
                },
                {
                  "player_name": "Sebastiaan Bornauw",
                  "ranking": 3435
                },
                {
                  "player_name": "Lorenzo Melgarejo",
                  "ranking": 3436
                },
                {
                  "player_name": "Tomáš Chorý",
                  "ranking": 3437
                },
                {
                  "player_name": "Ferran Jutglà",
                  "ranking": 3438
                }
              ],
              "lower": [
                {
                  "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
                },
                {
                  "player_name": "Ethan Nwaneri",
                  "ranking": 3444
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "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.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0003,
            "fbref_prior_metrics": {
              "squad": "Valencia",
              "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.0,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.2
            },
            "rationale": "XGBoost regressor (D_service) evaluated 38 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Valencia, rel: 0.20, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.165,
                "tackles": 1.3375,
                "tackles_won": 0.8145,
                "clearances": 6.1616,
                "aerial_won": 2.1174,
                "total_shots": 0.5078,
                "rating": 6.8342,
                "minutes": 81.39,
                "total_pass": 40.9984,
                "accurate_pass": 35.5353,
                "duels_won": 4.6953,
                "total_long_balls": 5.2037,
                "accurate_long_balls": 1.826,
                "total_own_half_passes": 28.1098,
                "accurate_own_half_passes": 26.3699,
                "total_opp_half_passes": 12.8886,
                "accurate_opp_half_passes": 9.1654,
                "crosses_total": 0.1989,
                "crosses_accurate": 0.0,
                "touches": 54.5276,
                "possession_lost": 6.8703,
                "dispossessed": 0.0543,
                "duels_lost": 3.1455,
                "aerial_lost": 1.4123,
                "total_contest": 0.3107,
                "won_contest": 0.1005,
                "ball_recovery": 2.6528,
                "challenges_lost": 0.3031,
                "fouls": 1.1944,
                "fouls_drawn": 0.699,
                "blocks": 0.3404,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0281,
                "expected_assists": 0.0061,
                "shots_on_target": 0.0022,
                "big_chances_created": 0.0,
                "xgot": 0.0005,
                "ball_carries": 14.8692,
                "total_progression": 45.1042,
                "progressive_carries": 0.3648,
                "key_pass": 0.0036,
                "shots_off_target": 0.5056
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 8.2
                  },
                  {
                    "match_date": "2026-09-11",
                    "opponent": "Sevilla",
                    "minutes": 24.0,
                    "is_starting": true,
                    "weight": 0.1278,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "FC Barcelona",
                    "minutes": 36.0,
                    "is_starting": false,
                    "weight": 0.1086,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 5.6
                  },
                  {
                    "match_date": "2026-08-25",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 5.4
                  },
                  {
                    "match_date": "2026-05-14",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 5.4211,
                  "aerialWon": 1.9106,
                  "totalClearance_p90": 7.7158,
                  "totalTackle": 1.4872,
                  "defensive_actions": 3.0218
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1650464534759521,
                    "model_output": 1.165,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1118
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.084
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0589
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0261
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0261
                        }
                      ],
                      "others": -0.0022,
                      "total": 1.165,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.122134
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.082856
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.0543
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.023158
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.022604
                        }
                      ],
                      "others_margin": -0.001845
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.337459683418274,
                    "model_output": 1.3375,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1849
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0796
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0701
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0504
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0374
                        }
                      ],
                      "others": -0.0678,
                      "total": 1.3375,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.125496
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.052075
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.048253
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.03617
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.026994
                        }
                      ],
                      "others_margin": -0.04952
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.8145347237586975,
                    "model_output": 0.8145,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.114
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0501
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0456
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0442
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0427
                        }
                      ],
                      "others": -0.0503,
                      "total": 0.8145,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.126584
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.053693
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.051463
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.049951
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.048236
                        }
                      ],
                      "others_margin": -0.059881
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 6.161579608917236,
                    "model_output": 6.1616,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.8071
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5752
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.3553
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.3737
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.1235
                        }
                      ],
                      "others": 0.5017,
                      "total": 6.1616,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.211583
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.127436
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.071307
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.069884
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.022067
                        }
                      ],
                      "others_margin": 0.084932
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.117380380630493,
                    "model_output": 2.1174,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.1725
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1794
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.1867
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1073
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0778
                        }
                      ],
                      "others": 0.0085,
                      "total": 2.1174,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.117386
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.109013
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.102104
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.054289
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.037577
                        }
                      ],
                      "others_margin": 0.003994
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5078476667404175,
                    "model_output": 0.5078,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0624
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0201
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0141
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.01
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0099
                        }
                      ],
                      "others": -0.0356,
                      "total": 0.5078,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.062433
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.02012
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.014075
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.010004
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.009889
                        }
                      ],
                      "others_margin": -0.035685
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.834203720092773,
                    "model_output": 6.8342,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0152
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0139
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0131
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0115
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0094
                        }
                      ],
                      "others": 0.0225,
                      "total": 6.8342,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.015153
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.013877
                        },
                        {
                          "name": "touches",
                          "margin": 0.013095
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.011451
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.009402
                        }
                      ],
                      "others_margin": 0.022548
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 38,
                  "role_matches": 34,
                  "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.0003, quality 0.514)",
              "stats": {
                "interceptions": 1.1654,
                "tackles": 1.3379,
                "tackles_won": 0.8148,
                "clearances": 6.1634,
                "aerial_won": 2.118,
                "total_shots": 0.508,
                "rating": 6.8342,
                "minutes": 81.39,
                "total_pass": 41.0107,
                "accurate_pass": 35.546,
                "duels_won": 4.6967,
                "total_long_balls": 5.2053,
                "accurate_long_balls": 1.8265,
                "total_own_half_passes": 28.1182,
                "accurate_own_half_passes": 26.3778,
                "total_opp_half_passes": 12.8925,
                "accurate_opp_half_passes": 9.1681,
                "crosses_total": 0.199,
                "crosses_accurate": 0.0,
                "touches": 54.544,
                "possession_lost": 6.8724,
                "dispossessed": 0.0543,
                "duels_lost": 3.1464,
                "aerial_lost": 1.4127,
                "total_contest": 0.3108,
                "won_contest": 0.1005,
                "ball_recovery": 2.6536,
                "challenges_lost": 0.3032,
                "fouls": 1.1948,
                "fouls_drawn": 0.6992,
                "blocks": 0.3405,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0281,
                "expected_assists": 0.0061,
                "shots_on_target": 0.0022,
                "big_chances_created": 0.0,
                "xgot": 0.0005,
                "ball_carries": 14.8737,
                "total_progression": 45.1177,
                "progressive_carries": 0.3649,
                "key_pass": 0.0036,
                "shots_off_target": 0.5058
              },
              "params": {
                "market_value_eur": 9300000,
                "quality_factor": 0.5142,
                "boost_factor": 1.0003,
                "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.0151)",
              "stats": {
                "interceptions": 1.1523,
                "tackles": 1.3379,
                "tackles_won": 0.8253,
                "clearances": 6.1634,
                "aerial_won": 2.118,
                "total_shots": 0.514,
                "rating": 6.8342,
                "minutes": 81.39,
                "total_pass": 41.0107,
                "accurate_pass": 35.546,
                "duels_won": 4.6967,
                "total_long_balls": 5.2053,
                "accurate_long_balls": 1.8265,
                "total_own_half_passes": 28.1182,
                "accurate_own_half_passes": 26.3778,
                "total_opp_half_passes": 12.8925,
                "accurate_opp_half_passes": 9.1681,
                "crosses_total": 0.196,
                "crosses_accurate": 0.0,
                "touches": 54.544,
                "possession_lost": 6.8724,
                "dispossessed": 0.0543,
                "duels_lost": 3.1464,
                "aerial_lost": 1.4127,
                "total_contest": 0.3108,
                "won_contest": 0.1005,
                "ball_recovery": 2.6536,
                "challenges_lost": 0.3032,
                "fouls": 1.1995,
                "fouls_drawn": 0.7023,
                "blocks": 0.3405,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0281,
                "expected_assists": 0.0061,
                "shots_on_target": 0.0022,
                "big_chances_created": 0.0,
                "xgot": 0.0005,
                "ball_carries": 14.8737,
                "total_progression": 45.1177,
                "progressive_carries": 0.3649,
                "key_pass": 0.0036,
                "shots_off_target": 0.5058
              },
              "params": {
                "blend_weight": 0.0151,
                "history_matches": 38,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9043,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Valencia"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 1.1654,
                  "after": 1.1523
                },
                {
                  "stat": "wonTackle",
                  "before": 0.8148,
                  "after": 0.8253
                },
                {
                  "stat": "totalShots",
                  "before": 0.508,
                  "after": 0.514
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1523,
                "tackles": 1.3379,
                "tackles_won": 0.8253,
                "clearances": 6.1634,
                "aerial_won": 2.118,
                "total_shots": 0.514,
                "rating": 6.8342,
                "minutes": 81.39,
                "total_pass": 41.0107,
                "accurate_pass": 35.546,
                "duels_won": 4.6967,
                "total_long_balls": 5.2053,
                "accurate_long_balls": 1.8265,
                "total_own_half_passes": 28.1182,
                "accurate_own_half_passes": 26.3778,
                "total_opp_half_passes": 12.8925,
                "accurate_opp_half_passes": 9.1681,
                "crosses_total": 0.196,
                "crosses_accurate": 0.0,
                "touches": 54.544,
                "possession_lost": 6.8724,
                "dispossessed": 0.0543,
                "duels_lost": 3.1464,
                "aerial_lost": 1.4127,
                "total_contest": 0.3108,
                "won_contest": 0.1005,
                "ball_recovery": 2.6536,
                "challenges_lost": 0.3032,
                "fouls": 1.1995,
                "fouls_drawn": 0.7023,
                "blocks": 0.3405,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0281,
                "expected_assists": 0.0061,
                "shots_on_target": 0.0022,
                "big_chances_created": 0.0,
                "xgot": 0.0005,
                "ball_carries": 14.8737,
                "total_progression": 45.1177,
                "progressive_carries": 0.3649,
                "key_pass": 0.0036,
                "shots_off_target": 0.5058
              },
              "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.1523,
                "tackles": 1.3379,
                "tackles_won": 0.8253,
                "clearances": 6.1634,
                "aerial_won": 2.118,
                "total_shots": 0.514,
                "rating": 6.8342,
                "minutes": 81.39,
                "total_pass": 41.0107,
                "accurate_pass": 35.546,
                "duels_won": 4.6967,
                "total_long_balls": 5.2053,
                "accurate_long_balls": 1.8265,
                "total_own_half_passes": 28.1182,
                "accurate_own_half_passes": 26.3778,
                "total_opp_half_passes": 12.8925,
                "accurate_opp_half_passes": 9.1681,
                "crosses_total": 0.196,
                "crosses_accurate": 0.0,
                "touches": 54.544,
                "possession_lost": 6.8724,
                "dispossessed": 0.0543,
                "duels_lost": 3.1464,
                "aerial_lost": 1.4127,
                "total_contest": 0.3108,
                "won_contest": 0.1005,
                "ball_recovery": 2.6536,
                "challenges_lost": 0.3032,
                "fouls": 1.1995,
                "fouls_drawn": 0.7023,
                "blocks": 0.3405,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0281,
                "expected_assists": 0.0061,
                "shots_on_target": 0.0022,
                "big_chances_created": 0.0,
                "xgot": 0.0005,
                "ball_carries": 14.8737,
                "total_progression": 45.1177,
                "progressive_carries": 0.3649,
                "key_pass": 0.0036,
                "shots_off_target": 0.5058,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Ayoze Pérez",
                "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": "Ayoze Pérez",
                  "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.1523,
                "tackles": 1.3379,
                "tackles_won": 0.8253,
                "clearances": 6.1634,
                "aerial_won": 2.118,
                "total_shots": 0.514,
                "rating": 6.8342,
                "minutes": 81.39,
                "total_pass": 41.0107,
                "accurate_pass": 35.546,
                "duels_won": 4.6967,
                "total_long_balls": 5.2053,
                "accurate_long_balls": 1.8265,
                "total_own_half_passes": 28.1182,
                "accurate_own_half_passes": 26.3778,
                "total_opp_half_passes": 12.8925,
                "accurate_opp_half_passes": 9.1681,
                "crosses_total": 0.196,
                "crosses_accurate": 0.0,
                "touches": 54.544,
                "possession_lost": 6.8724,
                "dispossessed": 0.0543,
                "duels_lost": 3.1464,
                "aerial_lost": 1.4127,
                "total_contest": 0.3108,
                "won_contest": 0.1005,
                "ball_recovery": 2.6536,
                "challenges_lost": 0.3032,
                "fouls": 1.1995,
                "fouls_drawn": 0.7023,
                "blocks": 0.3405,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0281,
                "expected_assists": 0.0061,
                "shots_on_target": 0.0022,
                "big_chances_created": 0.0,
                "xgot": 0.0005,
                "ball_carries": 14.8737,
                "total_progression": 45.1177,
                "progressive_carries": 0.3649,
                "key_pass": 0.0036,
                "shots_off_target": 0.5058,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Ayoze Pérez",
                "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.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "interceptions": 1.1523,
                "tackles": 1.3379,
                "tackles_won": 0.8253,
                "clearances": 6.1634,
                "aerial_won": 2.118,
                "total_shots": 0.514,
                "rating": 6.8342,
                "minutes": 81.39,
                "total_pass": 41.0107,
                "accurate_pass": 35.546,
                "duels_won": 4.6967,
                "total_long_balls": 5.2053,
                "accurate_long_balls": 1.8265,
                "total_own_half_passes": 28.1182,
                "accurate_own_half_passes": 26.3778,
                "total_opp_half_passes": 12.8925,
                "accurate_opp_half_passes": 9.1681,
                "crosses_total": 0.196,
                "crosses_accurate": 0.0,
                "touches": 54.544,
                "possession_lost": 6.8724,
                "dispossessed": 0.0543,
                "duels_lost": 3.1464,
                "aerial_lost": 1.4127,
                "total_contest": 0.3108,
                "won_contest": 0.1005,
                "ball_recovery": 2.6536,
                "challenges_lost": 0.3032,
                "fouls": 1.1995,
                "fouls_drawn": 0.7023,
                "blocks": 0.3405,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0286,
                "expected_assists": 0.0062,
                "shots_on_target": 0.0022,
                "big_chances_created": 0.0,
                "xgot": 0.0005,
                "ball_carries": 14.8737,
                "total_progression": 45.1177,
                "progressive_carries": 0.3649,
                "key_pass": 0.0036,
                "shots_off_target": 0.5058,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Ayoze Pérez",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8913
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 75.0)",
              "stats": {
                "interceptions": 1.1523,
                "tackles": 1.3379,
                "tackles_won": 0.8253,
                "clearances": 6.1634,
                "aerial_won": 2.118,
                "total_shots": 0.514,
                "rating": 6.8342,
                "minutes": 81.39,
                "total_pass": 41.0107,
                "accurate_pass": 35.546,
                "duels_won": 4.6967,
                "total_long_balls": 5.2053,
                "accurate_long_balls": 1.8265,
                "total_own_half_passes": 28.1182,
                "accurate_own_half_passes": 26.3778,
                "total_opp_half_passes": 12.8925,
                "accurate_opp_half_passes": 9.1681,
                "crosses_total": 0.196,
                "crosses_accurate": 0.0,
                "touches": 54.544,
                "possession_lost": 6.8724,
                "dispossessed": 0.0543,
                "duels_lost": 3.1464,
                "aerial_lost": 1.4127,
                "total_contest": 0.3108,
                "won_contest": 0.1005,
                "ball_recovery": 2.6536,
                "challenges_lost": 0.3032,
                "fouls": 1.1995,
                "fouls_drawn": 0.7023,
                "blocks": 0.3405,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0286,
                "expected_assists": 0.0062,
                "shots_on_target": 0.0022,
                "big_chances_created": 0.0,
                "xgot": 0.0005,
                "ball_carries": 14.8737,
                "total_progression": 45.1177,
                "progressive_carries": 0.3649,
                "key_pass": 0.0036,
                "shots_off_target": 0.5058,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Ayoze Pérez",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8913,
                "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": 3439,
                "fifa_rank": 2413.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.1523,
                "tackles": 1.3379,
                "tackles_won": 0.8253,
                "clearances": 6.1634,
                "aerial_won": 2.118,
                "total_shots": 0.514,
                "rating": 6.8342,
                "minutes": 81.39,
                "total_pass": 41.0107,
                "accurate_pass": 35.546,
                "duels_won": 4.6967,
                "total_long_balls": 5.2053,
                "accurate_long_balls": 1.8265,
                "total_own_half_passes": 28.1182,
                "accurate_own_half_passes": 26.3778,
                "total_opp_half_passes": 12.8925,
                "accurate_opp_half_passes": 9.1681,
                "crosses_total": 0.196,
                "crosses_accurate": 0.0,
                "touches": 54.544,
                "possession_lost": 6.8724,
                "dispossessed": 0.0543,
                "duels_lost": 3.1464,
                "aerial_lost": 1.4127,
                "total_contest": 0.3108,
                "won_contest": 0.1005,
                "ball_recovery": 2.6536,
                "challenges_lost": 0.3032,
                "fouls": 1.1995,
                "fouls_drawn": 0.7023,
                "blocks": 0.3405,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0286,
                "expected_assists": 0.0062,
                "shots_on_target": 0.0022,
                "big_chances_created": 0.0,
                "xgot": 0.0005,
                "ball_carries": 14.8737,
                "total_progression": 45.1177,
                "progressive_carries": 0.3649,
                "key_pass": 0.0036,
                "shots_off_target": 0.5058,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Ayoze Pérez",
                "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.0282,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8913,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0282,
                "goal_rate": 0.0,
                "scorer_weight": 0.0229,
                "squad_weight_total": 0.9718,
                "weight_share": 0.0235,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 1.1523,
                "tackles": 1.3379,
                "tackles_won": 0.8253,
                "clearances": 6.1634,
                "aerial_won": 2.118,
                "total_shots": 0.514,
                "rating": 6.8342,
                "minutes": 81.39,
                "total_pass": 41.0107,
                "accurate_pass": 35.546,
                "duels_won": 4.6967,
                "total_long_balls": 5.2053,
                "accurate_long_balls": 1.8265,
                "total_own_half_passes": 28.1182,
                "accurate_own_half_passes": 26.3778,
                "total_opp_half_passes": 12.8925,
                "accurate_opp_half_passes": 9.1681,
                "crosses_total": 0.196,
                "crosses_accurate": 0.0,
                "touches": 54.544,
                "possession_lost": 6.8724,
                "dispossessed": 0.0543,
                "duels_lost": 3.1464,
                "aerial_lost": 1.4127,
                "total_contest": 0.3108,
                "won_contest": 0.1005,
                "ball_recovery": 2.6536,
                "challenges_lost": 0.3032,
                "fouls": 1.1995,
                "fouls_drawn": 0.7023,
                "blocks": 0.3405,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0286,
                "expected_assists": 0.0062,
                "shots_on_target": 0.0022,
                "big_chances_created": 0.0,
                "xgot": 0.0005,
                "ball_carries": 14.8737,
                "total_progression": 45.1177,
                "progressive_carries": 0.3649,
                "key_pass": 0.0036,
                "shots_off_target": 0.5058,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Ayoze Pérez",
                "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.0282,
                "projected_assists": 0,
                "assist_probability": 0.0062,
                "finishing_factor": 0.8,
                "creation_factor": 0.8913,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0062,
                "assist_rate": 0.0,
                "provider_weight": 0.0055,
                "squad_weight_total": 0.6412,
                "weight_share": 0.0086,
                "creation_factor": 0.8913,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 13
              }
            }
          ]
        },
        "Pablo Maffeo": {
          "player_id": 788216,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 24,
          "height": 173,
          "market_value": 2400000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.7882,
            "minutes": 83,
            "total_pass": 34,
            "accurate_pass": 26,
            "duels_won": 5,
            "total_long_balls": 6,
            "accurate_long_balls": 2,
            "total_own_half_passes": 16,
            "accurate_own_half_passes": 14,
            "total_opp_half_passes": 17,
            "accurate_opp_half_passes": 12,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 58,
            "possession_lost": 14.0093,
            "dispossessed": 0.315,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0012,
            "goals": 0,
            "assist_rate": 0.0744,
            "assists": 0,
            "expected_goals": 0.0202,
            "expected_assists": 0.0645,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0121,
            "ball_carries": 12,
            "total_progression": 32,
            "progressive_carries": 1,
            "key_pass": 1,
            "shots_off_target": 0,
            "tackles_in_zone": 1.9,
            "tackles_won_in_zone": 1.4,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.452,
            "opponent_faced": "Santi Comesaña",
            "pressing_zone": "Left Mid vs Right Back — Wide Channel",
            "matchup_zone": "Left Mid vs Right Back — Wide Channel",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.02,
            "projected_assists": 0,
            "assist_probability": 0.0625,
            "finishing_factor": 0.8,
            "creation_factor": 1.097,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 8.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0589,
                "expected_assists": 0.0576,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 36,
                "accurate_pass": 25,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 3,
                "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": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 86,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0102,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 27,
                "tackles": 1,
                "interceptions": 4,
                "clearances": 2,
                "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": 16416297,
              "match_date": "2026-09-20",
              "home_team": "Valencia",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0195,
                "expected_assists": 0.0247,
                "total_shots": 1,
                "total_pass": 47,
                "accurate_pass": 41,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 7,
                "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": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 82,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0453,
                "expected_assists": 0.0486,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 41,
                "accurate_pass": 31,
                "interceptions": 2,
                "clearances": 2,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416330,
              "match_date": "2026-09-11",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 28,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 6,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416325,
              "match_date": "2026-09-06",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 54,
                "rating": 5.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 3,
                "clearances": 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": 16421049,
              "match_date": "2026-08-25",
              "home_team": "Valencia",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 55,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0102,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 16,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 21,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0017,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5,
                "key_pass": 1,
                "clearances": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083727,
              "match_date": "2026-05-23",
              "home_team": "Mallorca",
              "away_team": "Real Oviedo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Mallorca",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.4961,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 32,
                "key_pass": 2,
                "interceptions": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083676,
              "match_date": "2026-05-17",
              "home_team": "Levante UD",
              "away_team": "Mallorca",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Mallorca",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0989,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 35,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 883,
            "combined_rank_score": 407.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 417.0,
            "sofascore_rating": 6.9258,
            "sofascore_appearances": 31.0,
            "fifa_rank": 398.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7882,
            "source_file": "data/player_rankings.csv",
            "player_name": "Pablo Maffeo",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kim Hyeong-jin",
                  "ranking": 878
                },
                {
                  "player_name": "Sancet",
                  "ranking": 879
                },
                {
                  "player_name": "Jaloliddin Jumaboyev",
                  "ranking": 880
                },
                {
                  "player_name": "Vivian",
                  "ranking": 881
                },
                {
                  "player_name": "Edmond Tapsoba",
                  "ranking": 882
                }
              ],
              "lower": [
                {
                  "player_name": "Giuliano",
                  "ranking": 884
                },
                {
                  "player_name": "Odin Luras Bjørtuft",
                  "ranking": 885
                },
                {
                  "player_name": "Young-woo Jang",
                  "ranking": 886
                },
                {
                  "player_name": "Shaylon",
                  "ranking": 887
                },
                {
                  "player_name": "Yeferson Soteldo",
                  "ranking": 888
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.758,
          "history_matches": 39,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 39,
            "data_confidence": 0.758,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9977,
            "fbref_prior_metrics": {
              "squad": "Valencia",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "minutes": 76.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0533
            },
            "rationale": "XGBoost regressor (D_service) evaluated 39 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Valencia, rel: 0.05, 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.1324,
                "tackles": 2.0071,
                "tackles_won": 1.3565,
                "clearances": 3.0085,
                "aerial_won": 0.9872,
                "total_shots": 0.5549,
                "rating": 6.7882,
                "minutes": 83.24,
                "total_pass": 33.7352,
                "accurate_pass": 25.6288,
                "duels_won": 4.8558,
                "total_long_balls": 5.8984,
                "accurate_long_balls": 1.7042,
                "total_own_half_passes": 16.2262,
                "accurate_own_half_passes": 13.6751,
                "total_opp_half_passes": 17.509,
                "accurate_opp_half_passes": 11.9538,
                "crosses_total": 2.8661,
                "crosses_accurate": 0.5933,
                "touches": 57.8281,
                "possession_lost": 14.0416,
                "dispossessed": 0.3157,
                "duels_lost": 3.8757,
                "aerial_lost": 0.9134,
                "total_contest": 2.0645,
                "won_contest": 1.3074,
                "ball_recovery": 4.2576,
                "challenges_lost": 1.0716,
                "fouls": 0.818,
                "fouls_drawn": 0.7084,
                "blocks": 0.4729,
                "goals": 0.0012,
                "goal_rate": 0.0012,
                "assists": 0.0749,
                "assist_rate": 0.0749,
                "expected_goals": 0.0199,
                "expected_assists": 0.0635,
                "shots_on_target": 0.0934,
                "big_chances_created": 0.1328,
                "xgot": 0.0119,
                "ball_carries": 12.2345,
                "total_progression": 32.5318,
                "progressive_carries": 0.632,
                "key_pass": 0.75,
                "shots_off_target": 0.4615
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1503,
                    "rating": 8.4
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Deportivo Alavés",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-11",
                    "opponent": "Sevilla",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "FC Barcelona",
                    "minutes": 54.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 5.6
                  },
                  {
                    "match_date": "2026-08-25",
                    "opponent": "Real Betis",
                    "minutes": 55.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Celta Vigo",
                    "minutes": 21.0,
                    "is_starting": false,
                    "weight": 0.0482,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Real Oviedo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 2.1325,
                  "aerialWon": 1.0216,
                  "totalClearance_p90": 2.9232,
                  "totalTackle": 1.6498,
                  "defensive_actions": 3.2549
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.132350206375122,
                    "model_output": 1.1324,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1085
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0807
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.033
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.02
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0168
                        }
                      ],
                      "others": 0.0867,
                      "total": 1.1324,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.118754
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.079978
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.03099
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.018623
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.015915
                        }
                      ],
                      "others_margin": 0.079558
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 2.007106065750122,
                    "model_output": 2.0071,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2046
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0967
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0854
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0779
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0516
                        }
                      ],
                      "others": 0.1078,
                      "total": 2.0071,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.137982
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.059106
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.049457
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.043101
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.027551
                        }
                      ],
                      "others_margin": 0.055198
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.3564904928207397,
                    "model_output": 1.3565,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1309
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0861
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0745
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0776
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.025
                        }
                      ],
                      "others": 0.1174,
                      "total": 1.3565,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.144039
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.084575
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.0678
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.066048
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.020409
                        }
                      ],
                      "others_margin": 0.090431
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 3.0084609985351562,
                    "model_output": 3.0085,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": -0.5066
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3945
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.2246
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.2233
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2086
                        }
                      ],
                      "others": -0.0946,
                      "total": 3.0085,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.160048
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.126794
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.070187
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.069821
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.065059
                        }
                      ],
                      "others_margin": -0.031016
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.9872484803199768,
                    "model_output": 0.9872,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.2403
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1488
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0961
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0881
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.031
                        }
                      ],
                      "others": -0.0913,
                      "total": 0.9872,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.190519
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.122163
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.077203
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.07644
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.028348
                        }
                      ],
                      "others_margin": -0.088303
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5548872351646423,
                    "model_output": 0.5549,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0654
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0155
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0144
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0131
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0097
                        }
                      ],
                      "others": -0.0187,
                      "total": 0.5549,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.065379
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.015517
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.014416
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.013112
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.009674
                        }
                      ],
                      "others_margin": -0.018803
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.788209915161133,
                    "model_output": 6.7882,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.0143
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.014
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0133
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.012
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0108
                        }
                      ],
                      "others": -0.0426,
                      "total": 6.7882,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.014343
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.014018
                        },
                        {
                          "name": "touches",
                          "margin": 0.013334
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.012015
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.010814
                        }
                      ],
                      "others_margin": -0.042667
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 39,
                  "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.9977, quality 0.437)",
              "stats": {
                "interceptions": 1.1297,
                "tackles": 2.0025,
                "tackles_won": 1.3534,
                "clearances": 3.0015,
                "aerial_won": 0.985,
                "total_shots": 0.5536,
                "rating": 6.7882,
                "minutes": 83.24,
                "total_pass": 33.6576,
                "accurate_pass": 25.5699,
                "duels_won": 4.8446,
                "total_long_balls": 5.8848,
                "accurate_long_balls": 1.7003,
                "total_own_half_passes": 16.1889,
                "accurate_own_half_passes": 13.6436,
                "total_opp_half_passes": 17.4687,
                "accurate_opp_half_passes": 11.9263,
                "crosses_total": 2.8595,
                "crosses_accurate": 0.5919,
                "touches": 57.6951,
                "possession_lost": 14.0093,
                "dispossessed": 0.315,
                "duels_lost": 3.8668,
                "aerial_lost": 0.9113,
                "total_contest": 2.0598,
                "won_contest": 1.3044,
                "ball_recovery": 4.2478,
                "challenges_lost": 1.0691,
                "fouls": 0.8161,
                "fouls_drawn": 0.7068,
                "blocks": 0.4718,
                "goals": 0.0012,
                "goal_rate": 0.0012,
                "assists": 0.0747,
                "assist_rate": 0.0747,
                "expected_goals": 0.0199,
                "expected_assists": 0.0634,
                "shots_on_target": 0.0932,
                "big_chances_created": 0.1325,
                "xgot": 0.0119,
                "ball_carries": 12.2064,
                "total_progression": 32.457,
                "progressive_carries": 0.6305,
                "key_pass": 0.7483,
                "shots_off_target": 0.4604
              },
              "params": {
                "market_value_eur": 2400000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9977,
                "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.0039)",
              "stats": {
                "interceptions": 1.1298,
                "tackles": 2.0025,
                "tackles_won": 1.3526,
                "clearances": 3.0015,
                "aerial_won": 0.985,
                "total_shots": 0.5514,
                "rating": 6.7882,
                "minutes": 83.24,
                "total_pass": 33.6576,
                "accurate_pass": 25.5699,
                "duels_won": 4.8446,
                "total_long_balls": 5.8848,
                "accurate_long_balls": 1.7003,
                "total_own_half_passes": 16.1889,
                "accurate_own_half_passes": 13.6436,
                "total_opp_half_passes": 17.4687,
                "accurate_opp_half_passes": 11.9263,
                "crosses_total": 2.871,
                "crosses_accurate": 0.5919,
                "touches": 57.6951,
                "possession_lost": 14.0093,
                "dispossessed": 0.315,
                "duels_lost": 3.8668,
                "aerial_lost": 0.9113,
                "total_contest": 2.0598,
                "won_contest": 1.3044,
                "ball_recovery": 4.2478,
                "challenges_lost": 1.0691,
                "fouls": 0.8129,
                "fouls_drawn": 0.7086,
                "blocks": 0.4718,
                "goals": 0.0012,
                "goal_rate": 0.0012,
                "assists": 0.0744,
                "assist_rate": 0.0744,
                "expected_goals": 0.0199,
                "expected_assists": 0.0634,
                "shots_on_target": 0.0928,
                "big_chances_created": 0.1325,
                "xgot": 0.0119,
                "ball_carries": 12.2064,
                "total_progression": 32.457,
                "progressive_carries": 0.6305,
                "key_pass": 0.7483,
                "shots_off_target": 0.4604
              },
              "params": {
                "blend_weight": 0.0039,
                "history_matches": 39,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9249,
                "prior_reliability": 0.0533,
                "competition": "La Liga",
                "squad": "Valencia"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 2.8595,
                  "after": 2.871
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1298,
                "tackles": 2.0025,
                "tackles_won": 1.3526,
                "clearances": 3.0015,
                "aerial_won": 0.985,
                "total_shots": 0.5532,
                "rating": 6.7882,
                "minutes": 83.24,
                "total_pass": 33.6576,
                "accurate_pass": 25.5699,
                "duels_won": 4.8446,
                "total_long_balls": 5.8848,
                "accurate_long_balls": 1.7003,
                "total_own_half_passes": 16.1889,
                "accurate_own_half_passes": 13.6436,
                "total_opp_half_passes": 17.4687,
                "accurate_opp_half_passes": 11.9263,
                "crosses_total": 2.871,
                "crosses_accurate": 0.5919,
                "touches": 57.6951,
                "possession_lost": 14.0093,
                "dispossessed": 0.315,
                "duels_lost": 3.8668,
                "aerial_lost": 0.9113,
                "total_contest": 2.0598,
                "won_contest": 1.3044,
                "ball_recovery": 4.2478,
                "challenges_lost": 1.0691,
                "fouls": 0.8129,
                "fouls_drawn": 0.7086,
                "blocks": 0.4718,
                "goals": 0.0012,
                "goal_rate": 0.0012,
                "assists": 0.0744,
                "assist_rate": 0.0744,
                "expected_goals": 0.0199,
                "expected_assists": 0.0634,
                "shots_on_target": 0.0928,
                "big_chances_created": 0.1325,
                "xgot": 0.0119,
                "ball_carries": 12.2064,
                "total_progression": 32.457,
                "progressive_carries": 0.6305,
                "key_pass": 0.7483,
                "shots_off_target": 0.4604
              },
              "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.1298,
                "tackles": 2.0025,
                "tackles_won": 1.3526,
                "clearances": 3.0015,
                "aerial_won": 0.985,
                "total_shots": 0.5532,
                "rating": 6.7882,
                "minutes": 83.24,
                "total_pass": 33.6576,
                "accurate_pass": 25.5699,
                "duels_won": 4.8446,
                "total_long_balls": 5.8848,
                "accurate_long_balls": 1.7003,
                "total_own_half_passes": 16.1889,
                "accurate_own_half_passes": 13.6436,
                "total_opp_half_passes": 17.4687,
                "accurate_opp_half_passes": 11.9263,
                "crosses_total": 2.871,
                "crosses_accurate": 0.5919,
                "touches": 57.6951,
                "possession_lost": 14.0093,
                "dispossessed": 0.315,
                "duels_lost": 3.8668,
                "aerial_lost": 0.9113,
                "total_contest": 2.0598,
                "won_contest": 1.3044,
                "ball_recovery": 4.2478,
                "challenges_lost": 1.0691,
                "fouls": 0.8129,
                "fouls_drawn": 0.7086,
                "blocks": 0.4718,
                "goals": 0.0012,
                "goal_rate": 0.0012,
                "assists": 0.0744,
                "assist_rate": 0.0744,
                "expected_goals": 0.0199,
                "expected_assists": 0.0634,
                "shots_on_target": 0.0928,
                "big_chances_created": 0.1325,
                "xgot": 0.0119,
                "ball_carries": 12.2064,
                "total_progression": 32.457,
                "progressive_carries": 0.6305,
                "key_pass": 0.7483,
                "shots_off_target": 0.4604,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.4,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.452,
                "opponent_faced": "Santi Comesaña",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Santi Comesaña",
                  "matchup_zone": "Left Mid vs Right Back — Wide Channel"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.1298,
                "tackles": 2.0025,
                "tackles_won": 1.3526,
                "clearances": 3.0015,
                "aerial_won": 0.985,
                "total_shots": 0.5532,
                "rating": 6.7882,
                "minutes": 83.24,
                "total_pass": 33.6576,
                "accurate_pass": 25.5699,
                "duels_won": 4.8446,
                "total_long_balls": 5.8848,
                "accurate_long_balls": 1.7003,
                "total_own_half_passes": 16.1889,
                "accurate_own_half_passes": 13.6436,
                "total_opp_half_passes": 17.4687,
                "accurate_opp_half_passes": 11.9263,
                "crosses_total": 2.871,
                "crosses_accurate": 0.5919,
                "touches": 57.6951,
                "possession_lost": 14.0093,
                "dispossessed": 0.315,
                "duels_lost": 3.8668,
                "aerial_lost": 0.9113,
                "total_contest": 2.0598,
                "won_contest": 1.3044,
                "ball_recovery": 4.2478,
                "challenges_lost": 1.0691,
                "fouls": 0.8129,
                "fouls_drawn": 0.7086,
                "blocks": 0.4718,
                "goal_rate": 0.0012,
                "goals": 0,
                "assist_rate": 0.0744,
                "assists": 0,
                "expected_goals": 0.0199,
                "expected_assists": 0.0634,
                "shots_on_target": 0.0928,
                "big_chances_created": 0.1325,
                "xgot": 0.0119,
                "ball_carries": 12.2064,
                "total_progression": 32.457,
                "progressive_carries": 0.6305,
                "key_pass": 0.7483,
                "shots_off_target": 0.4604,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.4,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.452,
                "opponent_faced": "Santi Comesaña",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "interceptions": 1.1298,
                "tackles": 2.0025,
                "tackles_won": 1.3526,
                "clearances": 3.0015,
                "aerial_won": 0.985,
                "total_shots": 0.5532,
                "rating": 6.7882,
                "minutes": 83.24,
                "total_pass": 33.6576,
                "accurate_pass": 25.5699,
                "duels_won": 4.8446,
                "total_long_balls": 5.8848,
                "accurate_long_balls": 1.7003,
                "total_own_half_passes": 16.1889,
                "accurate_own_half_passes": 13.6436,
                "total_opp_half_passes": 17.4687,
                "accurate_opp_half_passes": 11.9263,
                "crosses_total": 2.871,
                "crosses_accurate": 0.5919,
                "touches": 57.6951,
                "possession_lost": 14.0093,
                "dispossessed": 0.315,
                "duels_lost": 3.8668,
                "aerial_lost": 0.9113,
                "total_contest": 2.0598,
                "won_contest": 1.3044,
                "ball_recovery": 4.2478,
                "challenges_lost": 1.0691,
                "fouls": 0.8129,
                "fouls_drawn": 0.7086,
                "blocks": 0.4718,
                "goal_rate": 0.0012,
                "goals": 0,
                "assist_rate": 0.0744,
                "assists": 0,
                "expected_goals": 0.0202,
                "expected_assists": 0.0645,
                "shots_on_target": 0.0928,
                "big_chances_created": 0.1325,
                "xgot": 0.0121,
                "ball_carries": 12.2064,
                "total_progression": 32.457,
                "progressive_carries": 0.6305,
                "key_pass": 0.7483,
                "shots_off_target": 0.4604,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.4,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.452,
                "opponent_faced": "Santi Comesaña",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.097
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 82.0)",
              "stats": {
                "interceptions": 1.1298,
                "tackles": 2.0025,
                "tackles_won": 1.3526,
                "clearances": 3.0015,
                "aerial_won": 0.985,
                "total_shots": 0.5532,
                "rating": 6.7882,
                "minutes": 83.24,
                "total_pass": 33.6576,
                "accurate_pass": 25.5699,
                "duels_won": 4.8446,
                "total_long_balls": 5.8848,
                "accurate_long_balls": 1.7003,
                "total_own_half_passes": 16.1889,
                "accurate_own_half_passes": 13.6436,
                "total_opp_half_passes": 17.4687,
                "accurate_opp_half_passes": 11.9263,
                "crosses_total": 2.871,
                "crosses_accurate": 0.5919,
                "touches": 57.6951,
                "possession_lost": 14.0093,
                "dispossessed": 0.315,
                "duels_lost": 3.8668,
                "aerial_lost": 0.9113,
                "total_contest": 2.0598,
                "won_contest": 1.3044,
                "ball_recovery": 4.2478,
                "challenges_lost": 1.0691,
                "fouls": 0.8129,
                "fouls_drawn": 0.7086,
                "blocks": 0.4718,
                "goal_rate": 0.0012,
                "goals": 0,
                "assist_rate": 0.0744,
                "assists": 0,
                "expected_goals": 0.0202,
                "expected_assists": 0.0645,
                "shots_on_target": 0.0928,
                "big_chances_created": 0.1325,
                "xgot": 0.0121,
                "ball_carries": 12.2064,
                "total_progression": 32.457,
                "progressive_carries": 0.6305,
                "key_pass": 0.7483,
                "shots_off_target": 0.4604,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.4,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.452,
                "opponent_faced": "Santi Comesaña",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.097,
                "fifa_overall": 82.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": 883,
                "fifa_rank": 398.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 82.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 1.1298,
                "tackles": 2.0025,
                "tackles_won": 1.3526,
                "clearances": 3.0015,
                "aerial_won": 0.985,
                "total_shots": 0.5532,
                "rating": 6.7882,
                "minutes": 83.24,
                "total_pass": 33.6576,
                "accurate_pass": 25.5699,
                "duels_won": 4.8446,
                "total_long_balls": 5.8848,
                "accurate_long_balls": 1.7003,
                "total_own_half_passes": 16.1889,
                "accurate_own_half_passes": 13.6436,
                "total_opp_half_passes": 17.4687,
                "accurate_opp_half_passes": 11.9263,
                "crosses_total": 2.871,
                "crosses_accurate": 0.5919,
                "touches": 57.6951,
                "possession_lost": 14.0093,
                "dispossessed": 0.315,
                "duels_lost": 3.8668,
                "aerial_lost": 0.9113,
                "total_contest": 2.0598,
                "won_contest": 1.3044,
                "ball_recovery": 4.2478,
                "challenges_lost": 1.0691,
                "fouls": 0.8129,
                "fouls_drawn": 0.7086,
                "blocks": 0.4718,
                "goal_rate": 0.0012,
                "goals": 0,
                "assist_rate": 0.0744,
                "assists": 0,
                "expected_goals": 0.0202,
                "expected_assists": 0.0645,
                "shots_on_target": 0.0928,
                "big_chances_created": 0.1325,
                "xgot": 0.0121,
                "ball_carries": 12.2064,
                "total_progression": 32.457,
                "progressive_carries": 0.6305,
                "key_pass": 0.7483,
                "shots_off_target": 0.4604,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.4,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.452,
                "opponent_faced": "Santi Comesaña",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.02,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.097,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.02,
                "goal_rate": 0.0012,
                "scorer_weight": 0.0162,
                "squad_weight_total": 0.9718,
                "weight_share": 0.0166,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 1.1298,
                "tackles": 2.0025,
                "tackles_won": 1.3526,
                "clearances": 3.0015,
                "aerial_won": 0.985,
                "total_shots": 0.5532,
                "rating": 6.7882,
                "minutes": 83.24,
                "total_pass": 33.6576,
                "accurate_pass": 25.5699,
                "duels_won": 4.8446,
                "total_long_balls": 5.8848,
                "accurate_long_balls": 1.7003,
                "total_own_half_passes": 16.1889,
                "accurate_own_half_passes": 13.6436,
                "total_opp_half_passes": 17.4687,
                "accurate_opp_half_passes": 11.9263,
                "crosses_total": 2.871,
                "crosses_accurate": 0.5919,
                "touches": 57.6951,
                "possession_lost": 14.0093,
                "dispossessed": 0.315,
                "duels_lost": 3.8668,
                "aerial_lost": 0.9113,
                "total_contest": 2.0598,
                "won_contest": 1.3044,
                "ball_recovery": 4.2478,
                "challenges_lost": 1.0691,
                "fouls": 0.8129,
                "fouls_drawn": 0.7086,
                "blocks": 0.4718,
                "goal_rate": 0.0012,
                "goals": 0,
                "assist_rate": 0.0744,
                "assists": 0,
                "expected_goals": 0.0202,
                "expected_assists": 0.0645,
                "shots_on_target": 0.0928,
                "big_chances_created": 0.1325,
                "xgot": 0.0121,
                "ball_carries": 12.2064,
                "total_progression": 32.457,
                "progressive_carries": 0.6305,
                "key_pass": 0.7483,
                "shots_off_target": 0.4604,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.4,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.5,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.452,
                "opponent_faced": "Santi Comesaña",
                "pressing_zone": "Left Mid vs Right Back — Wide Channel",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.02,
                "projected_assists": 0,
                "assist_probability": 0.0625,
                "finishing_factor": 0.8,
                "creation_factor": 1.097,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0625,
                "assist_rate": 0.0744,
                "provider_weight": 0.0708,
                "squad_weight_total": 0.6412,
                "weight_share": 0.1104,
                "creation_factor": 1.097,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 13
              }
            }
          ]
        }
      },
      "bench_players": {
        "Kayne van Oevelen": {
          "player_id": 1393970,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 25,
          "height": 199,
          "market_value": 4099999,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0227,
            "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.0148,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.1186,
            "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.111,
            "bench_expected_minutes": 4.45,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.447,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 69.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 5230,
            "combined_rank_score": 3406.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 6597.0,
            "fifa_overall": 69.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "Kayne van Oevelen",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Grady Diangana",
                  "ranking": 5225
                },
                {
                  "player_name": "Max Rosenfelder",
                  "ranking": 5226
                },
                {
                  "player_name": "Bilal Nadir",
                  "ranking": 5227
                },
                {
                  "player_name": "Stephen Mfuni",
                  "ranking": 5228
                },
                {
                  "player_name": "Yukhym Konoplia",
                  "ranking": 5229
                }
              ],
              "lower": [
                {
                  "player_name": "Martin Adeline",
                  "ranking": 5231
                },
                {
                  "player_name": "Abdülkadir Ömür",
                  "ranking": 5232
                },
                {
                  "player_name": "Tom Rothe",
                  "ranking": 5233
                },
                {
                  "player_name": "Derry Scherhant",
                  "ranking": 5234
                },
                {
                  "player_name": "Pierce Charles",
                  "ranking": 5235
                }
              ]
            }
          },
          "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.446242177473513,
            "bench_appearance_prob": 0.11119282624879602,
            "market_value_adjustment": 0.4511,
            "fbref_prior_metrics": {
              "squad": "Valencia",
              "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 (€4,099,999) 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.45)",
              "stats": {
                "saves": 2.9,
                "goals_prevented": 0.46,
                "rating": 6.8,
                "minutes": 90.0,
                "total_pass": 27.0,
                "accurate_pass": 20.0,
                "total_long_balls": 9.0,
                "accurate_long_balls": 4.0,
                "touches": 32.0,
                "clearances": 1.0,
                "ball_recovery": 1.2,
                "high_claims": 0.6,
                "punches": 0.3,
                "aerial_won": 0.7,
                "sweeper_actions": 1.2,
                "sweeper_accurate": 0.8,
                "saves_inside_box": 1.2,
                "possession_lost": 2.4,
                "duels_won": 0.4,
                "duels_lost": 0.2,
                "total_contest": 0.4,
                "won_contest": 0.2,
                "fouls": 0.2,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 21.0,
                "accurate_own_half_passes": 17.0
              },
              "params": {
                "market_value_eur": 4099999,
                "quality_factor": 0.4511
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 4.4 expected minutes (appearance prob 0.11)",
              "stats": {
                "saves": 0.1433,
                "goals_prevented": 0.0227,
                "rating": 6.8,
                "minutes": 4.45,
                "total_pass": 1.3339,
                "accurate_pass": 0.9881,
                "total_long_balls": 0.4446,
                "accurate_long_balls": 0.1976,
                "touches": 1.5809,
                "clearances": 0.0494,
                "ball_recovery": 0.0593,
                "high_claims": 0.0296,
                "punches": 0.0148,
                "aerial_won": 0.0346,
                "sweeper_actions": 0.0593,
                "sweeper_accurate": 0.0395,
                "saves_inside_box": 0.0593,
                "possession_lost": 0.1186,
                "duels_won": 0.0198,
                "duels_lost": 0.0099,
                "total_contest": 0.0198,
                "won_contest": 0.0099,
                "fouls": 0.0099,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0375,
                "accurate_own_half_passes": 0.8398,
                "bench_appearance_probability": 0.111,
                "bench_expected_minutes": 4.45
              },
              "params": {
                "expected_minutes": 4.45,
                "projection_minutes": 90.0,
                "minutes_scale": 0.0494,
                "appearance_probability": 0.111
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.1433,
                "goals_prevented": 0.0227,
                "rating": 6.8,
                "minutes": 4.45,
                "total_pass": 1.3339,
                "accurate_pass": 0.9881,
                "total_long_balls": 0.4446,
                "accurate_long_balls": 0.1976,
                "touches": 1.5809,
                "clearances": 0.0494,
                "ball_recovery": 0.0593,
                "high_claims": 0.0296,
                "punches": 0.0148,
                "aerial_won": 0.0346,
                "sweeper_actions": 0.0593,
                "sweeper_accurate": 0.0395,
                "saves_inside_box": 0.0593,
                "possession_lost": 0.1186,
                "duels_won": 0.0198,
                "duels_lost": 0.0099,
                "total_contest": 0.0198,
                "won_contest": 0.0099,
                "fouls": 0.0099,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0375,
                "accurate_own_half_passes": 0.8398,
                "bench_appearance_probability": 0.111,
                "bench_expected_minutes": 4.45
              },
              "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.1433,
                "goals_prevented": 0.0227,
                "rating": 6.8,
                "minutes": 4.45,
                "total_pass": 1.3339,
                "accurate_pass": 0.9881,
                "total_long_balls": 0.4446,
                "accurate_long_balls": 0.1976,
                "touches": 1.5809,
                "clearances": 0.0494,
                "ball_recovery": 0.0593,
                "high_claims": 0.0296,
                "punches": 0.0148,
                "aerial_won": 0.0346,
                "sweeper_actions": 0.0593,
                "sweeper_accurate": 0.0395,
                "saves_inside_box": 0.0593,
                "possession_lost": 0.1186,
                "duels_won": 0.0198,
                "duels_lost": 0.0099,
                "total_contest": 0.0198,
                "won_contest": 0.0099,
                "fouls": 0.0099,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0375,
                "accurate_own_half_passes": 0.8398,
                "bench_appearance_probability": 0.111,
                "bench_expected_minutes": 4.45,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.111,
                "projected_substitutes": 3,
                "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 69.0)",
              "stats": {
                "saves": 0.1433,
                "goals_prevented": 0.0227,
                "rating": 6.8,
                "minutes": 4.45,
                "total_pass": 1.3339,
                "accurate_pass": 0.9881,
                "total_long_balls": 0.4446,
                "accurate_long_balls": 0.1976,
                "touches": 1.5809,
                "clearances": 0.0494,
                "ball_recovery": 0.0593,
                "high_claims": 0.0296,
                "punches": 0.0148,
                "aerial_won": 0.0346,
                "sweeper_actions": 0.0593,
                "sweeper_accurate": 0.0395,
                "saves_inside_box": 0.0593,
                "possession_lost": 0.1186,
                "duels_won": 0.0198,
                "duels_lost": 0.0099,
                "total_contest": 0.0198,
                "won_contest": 0.0099,
                "fouls": 0.0099,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0375,
                "accurate_own_half_passes": 0.8398,
                "bench_appearance_probability": 0.111,
                "bench_expected_minutes": 4.45,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 69.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": 5230,
                "fifa_rank": 6597.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 69.0
              }
            }
          ]
        },
        "Arnau Martínez": {
          "player_id": 1084081,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 22,
          "height": 181,
          "market_value": 10800000,
          "stats": {
            "interceptions": 0,
            "tackles": 1,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.6967,
            "minutes": 14,
            "total_pass": 6,
            "accurate_pass": 4,
            "duels_won": 1,
            "total_long_balls": 2,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 3.6081,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0151,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 1,
            "total_progression": 0,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.225,
            "bench_expected_minutes": 13.95,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.447,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 9,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 2,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 8,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 1,
                "tackles": 2,
                "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": 16416330,
              "match_date": "2026-09-11",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 62,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0228,
                "expected_assists": 0.0197,
                "total_shots": 1,
                "total_pass": 25,
                "accurate_pass": 16,
                "interceptions": 1,
                "clearances": 1,
                "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": 16416325,
              "match_date": "2026-09-06",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 18,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416291,
              "match_date": "2026-08-30",
              "home_team": "Deportivo de A Coruña",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 82,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0251,
                "total_shots": 0,
                "total_pass": 63,
                "accurate_pass": 59,
                "tackles": 1,
                "tackles_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": "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": "home",
              "is_starting_11": 1,
              "team": "Girona FC",
              "opponent": "Elche",
              "stats": {
                "minutes": 58,
                "rating": 6.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1542,
                "expected_assists": 0.0014,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 17,
                "accurate_pass": 11,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083661,
              "match_date": "2026-05-17",
              "home_team": "Atlético Madrid",
              "away_team": "Girona FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Girona FC",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 77,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0598,
                "expected_assists": 0.0295,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 43,
                "accurate_pass": 39,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083624,
              "match_date": "2026-05-14",
              "home_team": "Girona FC",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Girona FC",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.4528,
                "expected_assists": 0.3026,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 66,
                "accurate_pass": 56,
                "key_pass": 5,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 4,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083598,
              "match_date": "2026-05-11",
              "home_team": "Rayo Vallecano",
              "away_team": "Girona FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Girona FC",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 72,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0086,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 16,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083457,
              "match_date": "2026-05-01",
              "home_team": "Girona FC",
              "away_team": "Mallorca",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Girona FC",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0275,
                "expected_assists": 0.0966,
                "total_shots": 1,
                "total_pass": 46,
                "accurate_pass": 38,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3113,
            "combined_rank_score": 1076.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 565.0,
            "sofascore_rating": 6.8114,
            "sofascore_appearances": 35.0,
            "fifa_rank": 1587.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6967,
            "source_file": "data/player_rankings.csv",
            "player_name": "Arnau Martínez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Zakaria El Ouahdi",
                  "ranking": 3108
                },
                {
                  "player_name": "Haris Tabaković",
                  "ranking": 3109
                },
                {
                  "player_name": "Guus Til",
                  "ranking": 3110
                },
                {
                  "player_name": "Carlos Álvarez",
                  "ranking": 3111
                },
                {
                  "player_name": "Tsuyoshi Watanabe",
                  "ranking": 3112
                }
              ],
              "lower": [
                {
                  "player_name": "Ayase Ueda",
                  "ranking": 3114
                },
                {
                  "player_name": "Mika Godts",
                  "ranking": 3115
                },
                {
                  "player_name": "Youri Baas",
                  "ranking": 3116
                },
                {
                  "player_name": "Martín Satriano",
                  "ranking": 3117
                },
                {
                  "player_name": "Marcos Leonardo",
                  "ranking": 3118
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.759,
          "history_matches": 40,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 40,
            "data_confidence": 0.759,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 13.945977174234963,
            "bench_appearance_prob": 0.225,
            "market_value_adjustment": 1.0009,
            "fbref_prior_metrics": {
              "squad": "Valencia",
              "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.06
            },
            "rationale": "Bench projection scaled from XGBoost D_service (40 historical appearances) to 13.9 expected mins (appearance prob 0.23); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.2607,
                "tackles": 0.5984,
                "tackles_won": 0.4201,
                "clearances": 0.896,
                "aerial_won": 0.2778,
                "total_shots": 0.1511,
                "rating": 6.6967,
                "minutes": 12.92,
                "total_pass": 5.9725,
                "accurate_pass": 3.9665,
                "duels_won": 1.04,
                "total_long_balls": 1.4725,
                "accurate_long_balls": 0.1927,
                "total_own_half_passes": 3.3018,
                "accurate_own_half_passes": 2.6742,
                "total_opp_half_passes": 2.6707,
                "accurate_opp_half_passes": 1.2923,
                "crosses_total": 0.2267,
                "crosses_accurate": 0.2267,
                "touches": 9.2932,
                "possession_lost": 3.3397,
                "dispossessed": 0.0,
                "duels_lost": 0.9189,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.4194,
                "challenges_lost": 0.2667,
                "fouls": 0.6522,
                "fouls_drawn": 0.5065,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.014,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.5405,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1511
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.1502,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Deportivo Alavés",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1277,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-11",
                    "opponent": "Sevilla",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Elche",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-14",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-11",
                    "opponent": "Rayo Vallecano",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-01",
                    "opponent": "Mallorca",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 1.5263,
                  "aerialWon": 0.6215,
                  "totalClearance_p90": 1.7008,
                  "totalTackle": 1.1624,
                  "defensive_actions": 1.705
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.2606653571128845,
                    "model_output": 0.2607,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.487
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0362
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.016
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0135
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.008
                        }
                      ],
                      "others": -0.0389,
                      "total": 0.2607,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.834821
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.102139
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.048496
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.043092
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.026244
                        }
                      ],
                      "others_margin": -0.13928
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.598435640335083,
                    "model_output": 0.5984,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7995
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0248
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0228
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0165
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0163
                        }
                      ],
                      "others": 0.0166,
                      "total": 0.5984,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.862987
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.043374
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.039942
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.027905
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.027656
                        }
                      ],
                      "others_margin": 0.028435
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.42005041241645813,
                    "model_output": 0.4201,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4569
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0242
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0189
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0143
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0116
                        }
                      ],
                      "others": 0.0148,
                      "total": 0.4201,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.778015
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.060482
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.044757
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.033828
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.028269
                        }
                      ],
                      "others_margin": 0.035893
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.8960019946098328,
                    "model_output": 0.896,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.081
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.2756
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0697
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0223
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0216
                        }
                      ],
                      "others": -0.0589,
                      "total": 0.896,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.935438
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.229436
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.067458
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.022554
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.022337
                        }
                      ],
                      "others_margin": -0.063712
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.2778420150279999,
                    "model_output": 0.2778,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7965
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1699
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0575
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0301
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0091
                        }
                      ],
                      "others": -0.0443,
                      "total": 0.2778,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.855678
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.340546
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.147575
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.086911
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.027863
                        }
                      ],
                      "others_margin": -0.147946
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.15110212564468384,
                    "model_output": 0.1511,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2428
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0232
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0098
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0075
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0069
                        }
                      ],
                      "others": -0.0474,
                      "total": 0.1511,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.242807
                        },
                        {
                          "name": "rating",
                          "margin": -0.023225
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.009784
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.007474
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.006857
                        }
                      ],
                      "others_margin": -0.047404
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.696659564971924,
                    "model_output": 6.6967,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": -0.0186
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.014
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0134
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0088
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0082
                        }
                      ],
                      "others": -0.0307,
                      "total": 6.6967,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.018618
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.014028
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.013396
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.008834
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.008217
                        }
                      ],
                      "others_margin": -0.030631
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 40,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0009, quality 0.532)",
              "stats": {
                "interceptions": 0.2609,
                "tackles": 0.599,
                "tackles_won": 0.4204,
                "clearances": 0.8968,
                "aerial_won": 0.2781,
                "total_shots": 0.1512,
                "rating": 6.6967,
                "minutes": 12.92,
                "total_pass": 5.9779,
                "accurate_pass": 3.9701,
                "duels_won": 1.0409,
                "total_long_balls": 1.4738,
                "accurate_long_balls": 0.1929,
                "total_own_half_passes": 3.3048,
                "accurate_own_half_passes": 2.6766,
                "total_opp_half_passes": 2.6731,
                "accurate_opp_half_passes": 1.2935,
                "crosses_total": 0.2269,
                "crosses_accurate": 0.2269,
                "touches": 9.3016,
                "possession_lost": 3.3427,
                "dispossessed": 0.0,
                "duels_lost": 0.9197,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.4198,
                "challenges_lost": 0.2669,
                "fouls": 0.6528,
                "fouls_drawn": 0.507,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.014,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.541,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1512
              },
              "params": {
                "market_value_eur": 10800000,
                "quality_factor": 0.5318,
                "boost_factor": 1.0009,
                "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.0043)",
              "stats": {
                "interceptions": 0.2605,
                "tackles": 0.599,
                "tackles_won": 0.4193,
                "clearances": 0.8968,
                "aerial_won": 0.2781,
                "total_shots": 0.1505,
                "rating": 6.6967,
                "minutes": 12.92,
                "total_pass": 5.9779,
                "accurate_pass": 3.9701,
                "duels_won": 1.0409,
                "total_long_balls": 1.4738,
                "accurate_long_balls": 0.1929,
                "total_own_half_passes": 3.3048,
                "accurate_own_half_passes": 2.6766,
                "total_opp_half_passes": 2.6731,
                "accurate_opp_half_passes": 1.2935,
                "crosses_total": 0.2273,
                "crosses_accurate": 0.2269,
                "touches": 9.3016,
                "possession_lost": 3.3427,
                "dispossessed": 0.0,
                "duels_lost": 0.9197,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.4198,
                "challenges_lost": 0.2669,
                "fouls": 0.65,
                "fouls_drawn": 0.5048,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.014,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.541,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1512
              },
              "params": {
                "blend_weight": 0.0043,
                "history_matches": 40,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1436,
                "prior_reliability": 0.06,
                "competition": "La Liga",
                "squad": "Valencia"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 12.9 to 13.9 expected minutes (appearance prob 0.23)",
              "stats": {
                "interceptions": 0.2812,
                "tackles": 0.6466,
                "tackles_won": 0.4526,
                "clearances": 0.968,
                "aerial_won": 0.3002,
                "total_shots": 0.1632,
                "rating": 6.6967,
                "minutes": 13.95,
                "total_pass": 6.4526,
                "accurate_pass": 4.2854,
                "duels_won": 1.1236,
                "total_long_balls": 1.5908,
                "accurate_long_balls": 0.2082,
                "total_own_half_passes": 3.5672,
                "accurate_own_half_passes": 2.8891,
                "total_opp_half_passes": 2.8854,
                "accurate_opp_half_passes": 1.3962,
                "crosses_total": 0.2453,
                "crosses_accurate": 0.2449,
                "touches": 10.0402,
                "possession_lost": 3.6081,
                "dispossessed": 0.0,
                "duels_lost": 0.9927,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.4531,
                "challenges_lost": 0.2669,
                "fouls": 0.7016,
                "fouls_drawn": 0.5449,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0151,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.584,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1632,
                "bench_appearance_probability": 0.225,
                "bench_expected_minutes": 13.95
              },
              "params": {
                "expected_minutes": 13.95,
                "projection_minutes": 12.92,
                "minutes_scale": 1.0794,
                "appearance_probability": 0.225
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2812,
                "tackles": 0.6466,
                "tackles_won": 0.4526,
                "clearances": 0.968,
                "aerial_won": 0.3002,
                "total_shots": 0.1632,
                "rating": 6.6967,
                "minutes": 13.95,
                "total_pass": 6.4526,
                "accurate_pass": 4.2854,
                "duels_won": 1.1236,
                "total_long_balls": 1.5908,
                "accurate_long_balls": 0.2082,
                "total_own_half_passes": 3.5672,
                "accurate_own_half_passes": 2.8891,
                "total_opp_half_passes": 2.8854,
                "accurate_opp_half_passes": 1.3962,
                "crosses_total": 0.2453,
                "crosses_accurate": 0.2449,
                "touches": 10.0402,
                "possession_lost": 3.6081,
                "dispossessed": 0.0,
                "duels_lost": 0.9927,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.4531,
                "challenges_lost": 0.2669,
                "fouls": 0.7016,
                "fouls_drawn": 0.5449,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0151,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.584,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1632,
                "bench_appearance_probability": 0.225,
                "bench_expected_minutes": 13.95
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "interceptions": 0.2812,
                "tackles": 0.6466,
                "tackles_won": 0.4526,
                "clearances": 0.968,
                "aerial_won": 0.3002,
                "total_shots": 0.1632,
                "rating": 6.6967,
                "minutes": 13.95,
                "total_pass": 6.4526,
                "accurate_pass": 4.2854,
                "duels_won": 1.1236,
                "total_long_balls": 1.5908,
                "accurate_long_balls": 0.2082,
                "total_own_half_passes": 3.5672,
                "accurate_own_half_passes": 2.8891,
                "total_opp_half_passes": 2.8854,
                "accurate_opp_half_passes": 1.3962,
                "crosses_total": 0.2453,
                "crosses_accurate": 0.2449,
                "touches": 10.0402,
                "possession_lost": 3.6081,
                "dispossessed": 0.0,
                "duels_lost": 0.9927,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.4531,
                "challenges_lost": 0.2669,
                "fouls": 0.7016,
                "fouls_drawn": 0.5449,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0151,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.584,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1632,
                "bench_appearance_probability": 0.225,
                "bench_expected_minutes": 13.95,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.225,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 15 by projected rating, fifa_overall 77.0)",
              "stats": {
                "interceptions": 0.2812,
                "tackles": 0.6466,
                "tackles_won": 0.4526,
                "clearances": 0.968,
                "aerial_won": 0.3002,
                "total_shots": 0.1632,
                "rating": 6.6967,
                "minutes": 13.95,
                "total_pass": 6.4526,
                "accurate_pass": 4.2854,
                "duels_won": 1.1236,
                "total_long_balls": 1.5908,
                "accurate_long_balls": 0.2082,
                "total_own_half_passes": 3.5672,
                "accurate_own_half_passes": 2.8891,
                "total_opp_half_passes": 2.8854,
                "accurate_opp_half_passes": 1.3962,
                "crosses_total": 0.2453,
                "crosses_accurate": 0.2449,
                "touches": 10.0402,
                "possession_lost": 3.6081,
                "dispossessed": 0.0,
                "duels_lost": 0.9927,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.4531,
                "challenges_lost": 0.2669,
                "fouls": 0.7016,
                "fouls_drawn": 0.5449,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0151,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 0.584,
                "total_progression": 0.0,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1632,
                "bench_appearance_probability": 0.225,
                "bench_expected_minutes": 13.95,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3113,
                "fifa_rank": 1587.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            }
          ]
        },
        "José Copete": {
          "player_id": 913695,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 3,
          "height": 190,
          "market_value": 4500000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.7208,
            "minutes": 14,
            "total_pass": 19,
            "accurate_pass": 16,
            "duels_won": 1,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 11,
            "accurate_own_half_passes": 10,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 6,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 24,
            "possession_lost": 3.3602,
            "dispossessed": 0.1466,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0125,
            "expected_assists": 0.0106,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 6,
            "total_progression": 21,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.302,
            "bench_expected_minutes": 13.65,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.447,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 14081796,
              "match_date": "2026-02-22",
              "home_team": "Villarreal",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0445,
                "expected_assists": 0.0092,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 66,
                "accurate_pass": 52,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083327,
              "match_date": "2026-02-08",
              "home_team": "Valencia",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 31,
                "interceptions": 2,
                "clearances": 5,
                "duels_won": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083207,
              "match_date": "2026-02-01",
              "home_team": "Real Betis",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 80,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0554,
                "expected_assists": 0.0058,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 41,
                "accurate_pass": 38,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083156,
              "match_date": "2026-01-24",
              "home_team": "Valencia",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0087,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 40,
                "interceptions": 3,
                "clearances": 13,
                "aerial_won": 4,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083230,
              "match_date": "2026-01-18",
              "home_team": "Getafe",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0078,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 24,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 10,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083220,
              "match_date": "2026-01-10",
              "home_team": "Valencia",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0067,
                "expected_assists": 0.1005,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 31,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 2,
                "clearances": 7,
                "aerial_won": 2,
                "duels_won": 7
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083196,
              "match_date": "2026-01-03",
              "home_team": "Celta Vigo",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 81,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0643,
                "expected_assists": 0.0289,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 73,
                "accurate_pass": 64,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083193,
              "match_date": "2025-12-19",
              "home_team": "Valencia",
              "away_team": "Mallorca",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0484,
                "total_shots": 0,
                "total_pass": 75,
                "accurate_pass": 69,
                "tackles": 3,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 4
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083165,
              "match_date": "2025-12-13",
              "home_team": "Atlético Madrid",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1158,
                "expected_assists": 0.1864,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 65,
                "accurate_pass": 56,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083163,
              "match_date": "2025-12-07",
              "home_team": "Valencia",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0605,
                "total_shots": 0,
                "total_pass": 71,
                "accurate_pass": 59,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 3,
                "duels_won": 7,
                "ball_recovery": 5
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 2102,
            "combined_rank_score": 1109.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 797.0,
            "sofascore_rating": 6.6238,
            "sofascore_appearances": 21.0,
            "fifa_rank": 1422.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7208,
            "source_file": "data/player_rankings.csv",
            "player_name": "José Copete",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Zdravko Dimitrov",
                  "ranking": 2097
                },
                {
                  "player_name": "Iñigo Vicente",
                  "ranking": 2098
                },
                {
                  "player_name": "Nahitan Nández",
                  "ranking": 2099
                },
                {
                  "player_name": "Lewis Cook",
                  "ranking": 2100
                },
                {
                  "player_name": "Keane Lewis-Potter",
                  "ranking": 2101
                }
              ],
              "lower": [
                {
                  "player_name": "Diego Moreira",
                  "ranking": 2103
                },
                {
                  "player_name": "Chris Long",
                  "ranking": 2104
                },
                {
                  "player_name": "Richard Ríos",
                  "ranking": 2105
                },
                {
                  "player_name": "Abdel Rahim",
                  "ranking": 2106
                },
                {
                  "player_name": "Matthew Sheridan",
                  "ranking": 2107
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 21,
          "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": 21,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 13.645815006556695,
            "bench_appearance_prob": 0.3020825002980316,
            "market_value_adjustment": 0.9972,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost D_service (21 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.4121,
                "tackles": 0.593,
                "tackles_won": 0.3418,
                "clearances": 2.1297,
                "aerial_won": 0.5937,
                "total_shots": 0.1836,
                "rating": 6.7208,
                "minutes": 35.15,
                "total_pass": 50.0856,
                "accurate_pass": 42.0802,
                "duels_won": 3.7747,
                "total_long_balls": 6.2152,
                "accurate_long_balls": 2.5434,
                "total_own_half_passes": 28.4204,
                "accurate_own_half_passes": 26.1145,
                "total_opp_half_passes": 21.6652,
                "accurate_opp_half_passes": 15.9657,
                "crosses_total": 0.1768,
                "crosses_accurate": 0.1345,
                "touches": 62.5846,
                "possession_lost": 8.6799,
                "dispossessed": 0.147,
                "duels_lost": 3.2365,
                "aerial_lost": 1.2758,
                "total_contest": 0.4699,
                "won_contest": 0.353,
                "ball_recovery": 2.8412,
                "challenges_lost": 0.7329,
                "fouls": 0.9638,
                "fouls_drawn": 0.534,
                "blocks": 0.7018,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0324,
                "expected_assists": 0.0275,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 16.5216,
                "total_progression": 54.931,
                "progressive_carries": 0.533,
                "key_pass": 0.2215,
                "shots_off_target": 0.1836
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-02-22",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1551,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-02-08",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1318,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-02-01",
                    "opponent": "Real Betis",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.1121,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-01-24",
                    "opponent": "Espanyol",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0953,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-01-18",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.081,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-01-10",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0688,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-01-03",
                    "opponent": "Celta Vigo",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.0585,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2025-12-19",
                    "opponent": "Mallorca",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0497,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2025-12-13",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0423,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2025-12-07",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0359,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 5.4255,
                  "aerialWon": 1.8318,
                  "totalClearance_p90": 5.599,
                  "totalTackle": 1.0559,
                  "defensive_actions": 2.1365
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.41211992502212524,
                    "model_output": 0.4121,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4888
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0177
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0139
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0091
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0089
                        }
                      ],
                      "others": 0.0088,
                      "total": 0.4121,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.839813
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.046437
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.035175
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.022346
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.021909
                        }
                      ],
                      "others_margin": 0.02177
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.592951774597168,
                    "model_output": 0.593,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7305
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0351
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0182
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0173
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0164
                        }
                      ],
                      "others": -0.009,
                      "total": 0.593,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.751092
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.055225
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.029067
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.027584
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.026864
                        }
                      ],
                      "others_margin": -0.015244
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.34180688858032227,
                    "model_output": 0.3418,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4303
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0221
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0184
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.016
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0123
                        }
                      ],
                      "others": -0.0409,
                      "total": 0.3418,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.711725
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.054643
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.04577
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.039809
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.031724
                        }
                      ],
                      "others_margin": -0.112977
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.129735231399536,
                    "model_output": 2.1297,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.0666
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.4085
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.1533
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0744
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0497
                        }
                      ],
                      "others": 0.1847,
                      "total": 2.1297,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.924742
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.262902
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.083188
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.03801
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.025239
                        }
                      ],
                      "others_margin": 0.090755
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.5937213897705078,
                    "model_output": 0.5937,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.8387
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1008
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0435
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0348
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0243
                        }
                      ],
                      "others": -0.0866,
                      "total": 0.5937,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.930021
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.169257
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.065063
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.051669
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.036409
                        }
                      ],
                      "others_margin": -0.136201
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.1836368441581726,
                    "model_output": 0.1836,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.244
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0293
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0224
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0109
                        },
                        {
                          "name": "touches",
                          "contribution": -0.009
                        }
                      ],
                      "others": -0.0205,
                      "total": 0.1836,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.244019
                        },
                        {
                          "name": "rating",
                          "margin": -0.029263
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.022358
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.010882
                        },
                        {
                          "name": "touches",
                          "margin": -0.008957
                        }
                      ],
                      "others_margin": -0.02054
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7207865715026855,
                    "model_output": 6.7208,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0466
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0239
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0223
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0201
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0141
                        }
                      ],
                      "others": -0.011,
                      "total": 6.7208,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.046562
                        },
                        {
                          "name": "rating",
                          "margin": -0.023922
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.022349
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.020143
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.014133
                        }
                      ],
                      "others_margin": -0.011038
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 21,
                  "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.9972, quality 0.456)",
              "stats": {
                "interceptions": 0.411,
                "tackles": 0.5913,
                "tackles_won": 0.3408,
                "clearances": 2.1238,
                "aerial_won": 0.5921,
                "total_shots": 0.1831,
                "rating": 6.7208,
                "minutes": 35.15,
                "total_pass": 49.9454,
                "accurate_pass": 41.9624,
                "duels_won": 3.7641,
                "total_long_balls": 6.1978,
                "accurate_long_balls": 2.5363,
                "total_own_half_passes": 28.3408,
                "accurate_own_half_passes": 26.0414,
                "total_opp_half_passes": 21.6045,
                "accurate_opp_half_passes": 15.921,
                "crosses_total": 0.1763,
                "crosses_accurate": 0.1341,
                "touches": 62.4094,
                "possession_lost": 8.6556,
                "dispossessed": 0.1466,
                "duels_lost": 3.2274,
                "aerial_lost": 1.2722,
                "total_contest": 0.4686,
                "won_contest": 0.352,
                "ball_recovery": 2.8332,
                "challenges_lost": 0.7308,
                "fouls": 0.9611,
                "fouls_drawn": 0.5325,
                "blocks": 0.6998,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0323,
                "expected_assists": 0.0274,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 16.4753,
                "total_progression": 54.7772,
                "progressive_carries": 0.5315,
                "key_pass": 0.2209,
                "shots_off_target": 0.1831
              },
              "params": {
                "market_value_eur": 4500000,
                "quality_factor": 0.456,
                "boost_factor": 0.9972,
                "reference_quality": 0.505,
                "history_matches": 21,
                "history_shrink": 0.1923,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 35.1 to 13.6 expected minutes (appearance prob 0.30)",
              "stats": {
                "interceptions": 0.1596,
                "tackles": 0.2296,
                "tackles_won": 0.1323,
                "clearances": 0.8245,
                "aerial_won": 0.2299,
                "total_shots": 0.0711,
                "rating": 6.7208,
                "minutes": 13.65,
                "total_pass": 19.3896,
                "accurate_pass": 16.2905,
                "duels_won": 1.4613,
                "total_long_balls": 2.4061,
                "accurate_long_balls": 0.9846,
                "total_own_half_passes": 11.0024,
                "accurate_own_half_passes": 10.1097,
                "total_opp_half_passes": 8.3872,
                "accurate_opp_half_passes": 6.1808,
                "crosses_total": 0.0684,
                "crosses_accurate": 0.0521,
                "touches": 24.2284,
                "possession_lost": 3.3602,
                "dispossessed": 0.1466,
                "duels_lost": 1.2529,
                "aerial_lost": 1.2722,
                "total_contest": 0.1819,
                "won_contest": 0.1367,
                "ball_recovery": 1.0999,
                "challenges_lost": 0.7308,
                "fouls": 0.3731,
                "fouls_drawn": 0.2067,
                "blocks": 0.2717,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0125,
                "expected_assists": 0.0106,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.396,
                "total_progression": 21.2654,
                "progressive_carries": 0.2063,
                "key_pass": 0.0858,
                "shots_off_target": 0.0711,
                "bench_appearance_probability": 0.302,
                "bench_expected_minutes": 13.65
              },
              "params": {
                "expected_minutes": 13.65,
                "projection_minutes": 35.15,
                "minutes_scale": 0.3882,
                "appearance_probability": 0.302
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.1596,
                "tackles": 0.2296,
                "tackles_won": 0.1323,
                "clearances": 0.8245,
                "aerial_won": 0.2299,
                "total_shots": 0.0711,
                "rating": 6.7208,
                "minutes": 13.65,
                "total_pass": 19.3896,
                "accurate_pass": 16.2905,
                "duels_won": 1.4613,
                "total_long_balls": 2.4061,
                "accurate_long_balls": 0.9846,
                "total_own_half_passes": 11.0024,
                "accurate_own_half_passes": 10.1097,
                "total_opp_half_passes": 8.3872,
                "accurate_opp_half_passes": 6.1808,
                "crosses_total": 0.0684,
                "crosses_accurate": 0.0521,
                "touches": 24.2284,
                "possession_lost": 3.3602,
                "dispossessed": 0.1466,
                "duels_lost": 1.2529,
                "aerial_lost": 1.2722,
                "total_contest": 0.1819,
                "won_contest": 0.1367,
                "ball_recovery": 1.0999,
                "challenges_lost": 0.7308,
                "fouls": 0.3731,
                "fouls_drawn": 0.2067,
                "blocks": 0.2717,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0125,
                "expected_assists": 0.0106,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.396,
                "total_progression": 21.2654,
                "progressive_carries": 0.2063,
                "key_pass": 0.0858,
                "shots_off_target": 0.0711,
                "bench_appearance_probability": 0.302,
                "bench_expected_minutes": 13.65
              },
              "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.1596,
                "tackles": 0.2296,
                "tackles_won": 0.1323,
                "clearances": 0.8245,
                "aerial_won": 0.2299,
                "total_shots": 0.0711,
                "rating": 6.7208,
                "minutes": 13.65,
                "total_pass": 19.3896,
                "accurate_pass": 16.2905,
                "duels_won": 1.4613,
                "total_long_balls": 2.4061,
                "accurate_long_balls": 0.9846,
                "total_own_half_passes": 11.0024,
                "accurate_own_half_passes": 10.1097,
                "total_opp_half_passes": 8.3872,
                "accurate_opp_half_passes": 6.1808,
                "crosses_total": 0.0684,
                "crosses_accurate": 0.0521,
                "touches": 24.2284,
                "possession_lost": 3.3602,
                "dispossessed": 0.1466,
                "duels_lost": 1.2529,
                "aerial_lost": 1.2722,
                "total_contest": 0.1819,
                "won_contest": 0.1367,
                "ball_recovery": 1.0999,
                "challenges_lost": 0.7308,
                "fouls": 0.3731,
                "fouls_drawn": 0.2067,
                "blocks": 0.2717,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0125,
                "expected_assists": 0.0106,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.396,
                "total_progression": 21.2654,
                "progressive_carries": 0.2063,
                "key_pass": 0.0858,
                "shots_off_target": 0.0711,
                "bench_appearance_probability": 0.302,
                "bench_expected_minutes": 13.65,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.302,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 77.0)",
              "stats": {
                "interceptions": 0.1596,
                "tackles": 0.2296,
                "tackles_won": 0.1323,
                "clearances": 0.8245,
                "aerial_won": 0.2299,
                "total_shots": 0.0711,
                "rating": 6.7208,
                "minutes": 13.65,
                "total_pass": 19.3896,
                "accurate_pass": 16.2905,
                "duels_won": 1.4613,
                "total_long_balls": 2.4061,
                "accurate_long_balls": 0.9846,
                "total_own_half_passes": 11.0024,
                "accurate_own_half_passes": 10.1097,
                "total_opp_half_passes": 8.3872,
                "accurate_opp_half_passes": 6.1808,
                "crosses_total": 0.0684,
                "crosses_accurate": 0.0521,
                "touches": 24.2284,
                "possession_lost": 3.3602,
                "dispossessed": 0.1466,
                "duels_lost": 1.2529,
                "aerial_lost": 1.2722,
                "total_contest": 0.1819,
                "won_contest": 0.1367,
                "ball_recovery": 1.0999,
                "challenges_lost": 0.7308,
                "fouls": 0.3731,
                "fouls_drawn": 0.2067,
                "blocks": 0.2717,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0125,
                "expected_assists": 0.0106,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 6.396,
                "total_progression": 21.2654,
                "progressive_carries": 0.2063,
                "key_pass": 0.0858,
                "shots_off_target": 0.0711,
                "bench_appearance_probability": 0.302,
                "bench_expected_minutes": 13.65,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 13,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 2102,
                "fifa_rank": 1422.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            }
          ]
        },
        "Harvey Elliott": {
          "player_id": 955245,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 10,
          "height": 170,
          "market_value": 21000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0143,
            "assist_rate": 0.0394,
            "assists": 0,
            "expected_goals": 0.0328,
            "goal_rate": 0.0592,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.6829,
            "minutes": 23,
            "total_pass": 15,
            "accurate_pass": 13,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 10,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 3.8558,
            "dispossessed": 0.0,
            "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.0056,
            "ball_carries": 6,
            "total_progression": 11,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.535,
            "bench_expected_minutes": 22.78,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.447,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0318,
            "projected_assists": 0,
            "assist_probability": 0.0141,
            "finishing_factor": 0.99,
            "creation_factor": 1.1717,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 16,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0218,
                "expected_assists": 0.0587,
                "total_shots": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "key_pass": 1,
                "clearances": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 32,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0169,
                "expected_assists": 0.0102,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 20,
                "accurate_pass": 15,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416297,
              "match_date": "2026-09-20",
              "home_team": "Valencia",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 21,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0347,
                "expected_assists": 0.0698,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 14,
                "accurate_pass": 14,
                "key_pass": 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": 16416330,
              "match_date": "2026-09-11",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 28,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.006,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416325,
              "match_date": "2026-09-06",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 36,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0627,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 17,
                "tackles": 2,
                "tackles_won": 2,
                "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": 14025125,
              "match_date": "2026-02-01",
              "home_team": "Aston Villa",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Aston Villa",
              "opponent": "Brentford",
              "stats": {
                "minutes": 13,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0958,
                "expected_assists": 0.0225,
                "total_shots": 2,
                "total_pass": 17,
                "accurate_pass": 15,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025181,
              "match_date": "2025-09-28",
              "home_team": "Aston Villa",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Aston Villa",
              "opponent": "Fulham",
              "stats": {
                "minutes": 45,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0238,
                "expected_assists": 0.0079,
                "total_shots": 1,
                "total_pass": 18,
                "accurate_pass": 17,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14025172,
              "match_date": "2025-09-21",
              "home_team": "Sunderland",
              "away_team": "Aston Villa",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Aston Villa",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 32,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1714,
                "expected_assists": 0.0566,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 26,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14025136,
              "match_date": "2025-09-13",
              "home_team": "Everton",
              "away_team": "Aston Villa",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Aston Villa",
              "opponent": "Everton",
              "stats": {
                "minutes": 19,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0025,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 7,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14147154,
              "match_date": "2025-08-25",
              "home_team": "Newcastle United",
              "away_team": "Liverpool FC",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Liverpool FC",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 8,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 4
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3214,
            "combined_rank_score": 1163.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 901.0,
            "sofascore_rating": 6.52,
            "sofascore_appearances": 5.0,
            "fifa_rank": 1426.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6829,
            "source_file": "data/player_rankings.csv",
            "player_name": "Harvey Elliott",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Robin Gosens",
                  "ranking": 3209
                },
                {
                  "player_name": "Álvaro Núñez",
                  "ranking": 3210
                },
                {
                  "player_name": "Marvin Schwäbe",
                  "ranking": 3211
                },
                {
                  "player_name": "Moi Gómez",
                  "ranking": 3212
                },
                {
                  "player_name": "Benjamin Henrichs",
                  "ranking": 3213
                }
              ],
              "lower": [
                {
                  "player_name": "Azor Matusiwa",
                  "ranking": 3215
                },
                {
                  "player_name": "Eljif Elmas",
                  "ranking": 3216
                },
                {
                  "player_name": "Lazaros Rota",
                  "ranking": 3217
                },
                {
                  "player_name": "Joshua Zirkzee",
                  "ranking": 3218
                },
                {
                  "player_name": "Camilo Vargas",
                  "ranking": 3219
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 10,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 10,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.77746860076133,
            "bench_appearance_prob": 0.5353394818527877,
            "market_value_adjustment": 1.0136,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (10 historical appearances) to 22.8 expected mins (appearance prob 0.54)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.3549,
                "expected_assists": 0.0258,
                "assists": 0.0388,
                "assist_rate": 0.0388,
                "expected_goals": 0.0593,
                "goals": 0.0582,
                "goal_rate": 0.0582,
                "shots_on_target": 0.2023,
                "total_shots": 0.5914,
                "rating": 6.6829,
                "minutes": 22.7,
                "total_pass": 15.0103,
                "accurate_pass": 12.3106,
                "duels_won": 0.5189,
                "total_long_balls": 0.8119,
                "accurate_long_balls": 0.3475,
                "total_own_half_passes": 3.1793,
                "accurate_own_half_passes": 2.8129,
                "total_opp_half_passes": 11.8311,
                "accurate_opp_half_passes": 9.4977,
                "crosses_total": 0.2209,
                "crosses_accurate": 0.0736,
                "touches": 18.5634,
                "possession_lost": 3.7911,
                "dispossessed": 0.0,
                "duels_lost": 0.629,
                "aerial_won": 0.2526,
                "aerial_lost": 0.2396,
                "interceptions": 0.0,
                "tackles_won": 0.2038,
                "tackles": 0.2038,
                "clearances": 0.4237,
                "total_contest": 0.3895,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0626,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0102,
                "ball_carries": 6.0294,
                "total_progression": 10.4946,
                "progressive_carries": 0.1069,
                "shots_off_target": 0.3891
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.1868,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.1588,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Real Sociedad",
                    "minutes": 21.0,
                    "is_starting": false,
                    "weight": 0.1349,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-11",
                    "opponent": "Sevilla",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.1147,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "FC Barcelona",
                    "minutes": 36.0,
                    "is_starting": false,
                    "weight": 0.0975,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-02-01",
                    "opponent": "Brentford",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0829,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2025-09-28",
                    "opponent": "Fulham",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0704,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2025-09-21",
                    "opponent": "Sunderland",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.0599,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2025-09-13",
                    "opponent": "Everton",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.0509,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2025-08-25",
                    "opponent": "Newcastle United",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0433,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 10.0,
                  "is_starting_11": 0.0,
                  "creative_index": 0.3002,
                  "totalShots": 0.8364,
                  "expectedGoals": 0.0313,
                  "expectedAssists": 0.0348,
                  "onTargetScoringAttempt": 0.1349
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.3548620641231537,
                    "model_output": 0.3549,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4063
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0428
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0369
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0279
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0213
                        }
                      ],
                      "others": -0.0044,
                      "total": 0.3549,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.605624
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.091791
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.08639
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.070639
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.057726
                        }
                      ],
                      "others_margin": -0.01235
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.02584901452064514,
                    "model_output": 0.0258,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0401
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0078
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0038
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0031
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0025
                        }
                      ],
                      "others": -0.0078,
                      "total": 0.0258,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.629471
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.186592
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.105526
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.09492
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.076052
                        }
                      ],
                      "others_margin": -0.260307
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.03880926966667175,
                    "model_output": 0.0388,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0282
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.01
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0064
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0045
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0031
                        }
                      ],
                      "others": -0.0054,
                      "total": 0.0388,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.390175
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.185534
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.139065
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.100203
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.067228
                        }
                      ],
                      "others_margin": -0.130035
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.059334393590688705,
                    "model_output": 0.0593,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0392
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0101
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0102
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0048
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0029
                        }
                      ],
                      "others": -0.0081,
                      "total": 0.0593,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.540777
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.16949
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.146237
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.06618
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.041558
                        }
                      ],
                      "others_margin": -0.12686
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.058244891464710236,
                    "model_output": 0.0582,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0448
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0118
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.006
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0057
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.005
                        }
                      ],
                      "others": -0.0034,
                      "total": 0.0582,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.600046
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.19577
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.086569
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.081497
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.07849
                        }
                      ],
                      "others_margin": -0.055959
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.20228855311870575,
                    "model_output": 0.2023,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1543
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0337
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0168
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0103
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": 0.009
                        }
                      ],
                      "others": -0.0186,
                      "total": 0.2023,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.641139
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.179161
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.078423
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.047309
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": 0.041387
                        }
                      ],
                      "others_margin": -0.08781
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5914066433906555,
                    "model_output": 0.5914,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4565
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0802
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": 0.0295
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0291
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": 0.0275
                        }
                      ],
                      "others": -0.0571,
                      "total": 0.5914,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.456479
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.080229
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": 0.029493
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.029124
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": 0.027508
                        }
                      ],
                      "others_margin": -0.057117
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.682925224304199,
                    "model_output": 6.6829,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0733
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0387
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0294
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0107
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0102
                        }
                      ],
                      "others": -0.0109,
                      "total": 6.6829,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.073296
                        },
                        {
                          "name": "rating",
                          "margin": -0.038683
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.029368
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.010733
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.010214
                        }
                      ],
                      "others_margin": -0.010834
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 10,
                  "role_matches": 9,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0136, quality 0.641)",
              "stats": {
                "key_pass": 0.3597,
                "expected_assists": 0.0262,
                "assists": 0.0393,
                "assist_rate": 0.0393,
                "expected_goals": 0.0601,
                "goals": 0.059,
                "goal_rate": 0.059,
                "shots_on_target": 0.205,
                "total_shots": 0.5994,
                "rating": 6.6829,
                "minutes": 22.7,
                "total_pass": 15.2144,
                "accurate_pass": 12.478,
                "duels_won": 0.526,
                "total_long_balls": 0.8229,
                "accurate_long_balls": 0.3522,
                "total_own_half_passes": 3.2225,
                "accurate_own_half_passes": 2.8512,
                "total_opp_half_passes": 11.992,
                "accurate_opp_half_passes": 9.6269,
                "crosses_total": 0.2239,
                "crosses_accurate": 0.0746,
                "touches": 18.8159,
                "possession_lost": 3.8427,
                "dispossessed": 0.0,
                "duels_lost": 0.6376,
                "aerial_won": 0.256,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2066,
                "tackles": 0.2066,
                "clearances": 0.4295,
                "total_contest": 0.3948,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0635,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0103,
                "ball_carries": 6.1114,
                "total_progression": 10.6373,
                "progressive_carries": 0.1084,
                "shots_off_target": 0.3944
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.0136,
                "reference_quality": 0.505,
                "history_matches": 10,
                "history_shrink": 0.3333,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 22.7 to 22.8 expected minutes (appearance prob 0.54)",
              "stats": {
                "key_pass": 0.3609,
                "expected_assists": 0.0263,
                "assists": 0.0394,
                "assist_rate": 0.0394,
                "expected_goals": 0.0603,
                "goals": 0.0592,
                "goal_rate": 0.0592,
                "shots_on_target": 0.2057,
                "total_shots": 0.6014,
                "rating": 6.6829,
                "minutes": 22.78,
                "total_pass": 15.2663,
                "accurate_pass": 12.5206,
                "duels_won": 0.5278,
                "total_long_balls": 0.8257,
                "accurate_long_balls": 0.3534,
                "total_own_half_passes": 3.2335,
                "accurate_own_half_passes": 2.8609,
                "total_opp_half_passes": 12.0329,
                "accurate_opp_half_passes": 9.6598,
                "crosses_total": 0.2247,
                "crosses_accurate": 0.0749,
                "touches": 18.8801,
                "possession_lost": 3.8558,
                "dispossessed": 0.0,
                "duels_lost": 0.6398,
                "aerial_won": 0.2569,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2073,
                "tackles": 0.2073,
                "clearances": 0.431,
                "total_contest": 0.3961,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0637,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0103,
                "ball_carries": 6.1323,
                "total_progression": 10.6736,
                "progressive_carries": 0.1088,
                "shots_off_target": 0.3957,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78
              },
              "params": {
                "expected_minutes": 22.78,
                "projection_minutes": 22.7,
                "minutes_scale": 1.0034,
                "appearance_probability": 0.535
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.3609,
                "expected_assists": 0.0263,
                "assists": 0.0394,
                "assist_rate": 0.0394,
                "expected_goals": 0.0603,
                "goals": 0.0592,
                "goal_rate": 0.0592,
                "shots_on_target": 0.2057,
                "total_shots": 0.6014,
                "rating": 6.6829,
                "minutes": 22.78,
                "total_pass": 15.2663,
                "accurate_pass": 12.5206,
                "duels_won": 0.5278,
                "total_long_balls": 0.8257,
                "accurate_long_balls": 0.3534,
                "total_own_half_passes": 3.2335,
                "accurate_own_half_passes": 2.8609,
                "total_opp_half_passes": 12.0329,
                "accurate_opp_half_passes": 9.6598,
                "crosses_total": 0.2247,
                "crosses_accurate": 0.0749,
                "touches": 18.8801,
                "possession_lost": 3.8558,
                "dispossessed": 0.0,
                "duels_lost": 0.6398,
                "aerial_won": 0.2569,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2073,
                "tackles": 0.2073,
                "clearances": 0.431,
                "total_contest": 0.3961,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0637,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0103,
                "ball_carries": 6.1323,
                "total_progression": 10.6736,
                "progressive_carries": 0.1088,
                "shots_off_target": 0.3957,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.3609,
                "expected_assists": 0.0263,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0603,
                "goal_rate": 0.0592,
                "goals": 0,
                "shots_on_target": 0.2057,
                "total_shots": 0.6014,
                "rating": 6.6829,
                "minutes": 22.78,
                "total_pass": 15.2663,
                "accurate_pass": 12.5206,
                "duels_won": 0.5278,
                "total_long_balls": 0.8257,
                "accurate_long_balls": 0.3534,
                "total_own_half_passes": 3.2335,
                "accurate_own_half_passes": 2.8609,
                "total_opp_half_passes": 12.0329,
                "accurate_opp_half_passes": 9.6598,
                "crosses_total": 0.2247,
                "crosses_accurate": 0.0749,
                "touches": 18.8801,
                "possession_lost": 3.8558,
                "dispossessed": 0.0,
                "duels_lost": 0.6398,
                "aerial_won": 0.2569,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2073,
                "tackles": 0.2073,
                "clearances": 0.431,
                "total_contest": 0.3961,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0637,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0103,
                "ball_carries": 6.1323,
                "total_progression": 10.6736,
                "progressive_carries": 0.1088,
                "shots_off_target": 0.3957,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "key_pass": 0.3609,
                "expected_assists": 0.0143,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0328,
                "goal_rate": 0.0592,
                "goals": 0,
                "shots_on_target": 0.2057,
                "total_shots": 0.6014,
                "rating": 6.6829,
                "minutes": 22.78,
                "total_pass": 15.2663,
                "accurate_pass": 12.5206,
                "duels_won": 0.5278,
                "total_long_balls": 0.8257,
                "accurate_long_balls": 0.3534,
                "total_own_half_passes": 3.2335,
                "accurate_own_half_passes": 2.8609,
                "total_opp_half_passes": 12.0329,
                "accurate_opp_half_passes": 9.6598,
                "crosses_total": 0.2247,
                "crosses_accurate": 0.0749,
                "touches": 18.8801,
                "possession_lost": 3.8558,
                "dispossessed": 0.0,
                "duels_lost": 0.6398,
                "aerial_won": 0.2569,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2073,
                "tackles": 0.2073,
                "clearances": 0.431,
                "total_contest": 0.3961,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0637,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0056,
                "ball_carries": 6.1323,
                "total_progression": 10.6736,
                "progressive_carries": 0.1088,
                "shots_off_target": 0.3957,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.99,
                "creation_factor": 1.1717
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 0.535
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0603,
                  "after": 0.0328
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0263,
                  "after": 0.0143
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 77.0)",
              "stats": {
                "key_pass": 0.3609,
                "expected_assists": 0.0143,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0328,
                "goal_rate": 0.0592,
                "goals": 0,
                "shots_on_target": 0.2057,
                "total_shots": 0.6014,
                "rating": 6.6829,
                "minutes": 22.78,
                "total_pass": 15.2663,
                "accurate_pass": 12.5206,
                "duels_won": 0.5278,
                "total_long_balls": 0.8257,
                "accurate_long_balls": 0.3534,
                "total_own_half_passes": 3.2335,
                "accurate_own_half_passes": 2.8609,
                "total_opp_half_passes": 12.0329,
                "accurate_opp_half_passes": 9.6598,
                "crosses_total": 0.2247,
                "crosses_accurate": 0.0749,
                "touches": 18.8801,
                "possession_lost": 3.8558,
                "dispossessed": 0.0,
                "duels_lost": 0.6398,
                "aerial_won": 0.2569,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2073,
                "tackles": 0.2073,
                "clearances": 0.431,
                "total_contest": 0.3961,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0637,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0056,
                "ball_carries": 6.1323,
                "total_progression": 10.6736,
                "progressive_carries": 0.1088,
                "shots_off_target": 0.3957,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.99,
                "creation_factor": 1.1717,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3214,
                "fifa_rank": 1426.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": {
                "key_pass": 0.3609,
                "expected_assists": 0.0143,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0328,
                "goal_rate": 0.0592,
                "goals": 0,
                "shots_on_target": 0.2057,
                "total_shots": 0.6014,
                "rating": 6.6829,
                "minutes": 22.78,
                "total_pass": 15.2663,
                "accurate_pass": 12.5206,
                "duels_won": 0.5278,
                "total_long_balls": 0.8257,
                "accurate_long_balls": 0.3534,
                "total_own_half_passes": 3.2335,
                "accurate_own_half_passes": 2.8609,
                "total_opp_half_passes": 12.0329,
                "accurate_opp_half_passes": 9.6598,
                "crosses_total": 0.2247,
                "crosses_accurate": 0.0749,
                "touches": 18.8801,
                "possession_lost": 3.8558,
                "dispossessed": 0.0,
                "duels_lost": 0.6398,
                "aerial_won": 0.2569,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2073,
                "tackles": 0.2073,
                "clearances": 0.431,
                "total_contest": 0.3961,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0637,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0056,
                "ball_carries": 6.1323,
                "total_progression": 10.6736,
                "progressive_carries": 0.1088,
                "shots_off_target": 0.3957,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0318,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.99,
                "creation_factor": 1.1717,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0318,
                "goal_rate": 0.0592,
                "scorer_weight": 0.0325,
                "squad_weight_total": 0.9718,
                "weight_share": 0.0334,
                "finishing_factor": 0.99,
                "appearance_weight": 0.535,
                "weight_rank": 9,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.3609,
                "expected_assists": 0.0143,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0328,
                "goal_rate": 0.0592,
                "goals": 0,
                "shots_on_target": 0.2057,
                "total_shots": 0.6014,
                "rating": 6.6829,
                "minutes": 22.78,
                "total_pass": 15.2663,
                "accurate_pass": 12.5206,
                "duels_won": 0.5278,
                "total_long_balls": 0.8257,
                "accurate_long_balls": 0.3534,
                "total_own_half_passes": 3.2335,
                "accurate_own_half_passes": 2.8609,
                "total_opp_half_passes": 12.0329,
                "accurate_opp_half_passes": 9.6598,
                "crosses_total": 0.2247,
                "crosses_accurate": 0.0749,
                "touches": 18.8801,
                "possession_lost": 3.8558,
                "dispossessed": 0.0,
                "duels_lost": 0.6398,
                "aerial_won": 0.2569,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2073,
                "tackles": 0.2073,
                "clearances": 0.431,
                "total_contest": 0.3961,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0637,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0056,
                "ball_carries": 6.1323,
                "total_progression": 10.6736,
                "progressive_carries": 0.1088,
                "shots_off_target": 0.3957,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0318,
                "projected_assists": 0,
                "assist_probability": 0.0141,
                "finishing_factor": 0.99,
                "creation_factor": 1.1717,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0141,
                "assist_rate": 0.0394,
                "provider_weight": 0.0168,
                "squad_weight_total": 0.6412,
                "weight_share": 0.0261,
                "creation_factor": 1.1717,
                "appearance_weight": 0.535,
                "weight_rank": 10,
                "eligible_players": 13
              }
            }
          ]
        },
        "Filip Ugrinić": {
          "player_id": 857482,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 23,
          "height": 185,
          "market_value": 5700000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.059,
            "assist_rate": 0.0699,
            "assists": 0,
            "expected_goals": 0.0294,
            "goal_rate": 0.0376,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.7086,
            "minutes": 30,
            "total_pass": 15,
            "accurate_pass": 12,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 8,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 22,
            "possession_lost": 5.8023,
            "dispossessed": 0.4523,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 5,
            "total_progression": 15,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.438,
            "bench_expected_minutes": 29.75,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.447,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 8,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.006,
                "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": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 58,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1223,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 24,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 3,
                "interceptions": 1,
                "duels_won": 7,
                "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": 16416297,
              "match_date": "2026-09-20",
              "home_team": "Valencia",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 45,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0113,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 30,
                "interceptions": 1,
                "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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0059,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 40,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416330,
              "match_date": "2026-09-11",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0497,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 36,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 4,
                "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": 16416325,
              "match_date": "2026-09-06",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0091,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 28,
                "key_pass": 1,
                "interceptions": 2,
                "clearances": 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": 16416291,
              "match_date": "2026-08-30",
              "home_team": "Deportivo de A Coruña",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2432,
                "expected_assists": 0.0588,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 71,
                "accurate_pass": 67,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 3,
                "interceptions": 1,
                "duels_won": 10,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421049,
              "match_date": "2026-08-25",
              "home_team": "Valencia",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 35,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0521,
                "expected_assists": 0.0417,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 14,
                "key_pass": 1,
                "tackles": 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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 69,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.119,
                "expected_assists": 0.1259,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 40,
                "accurate_pass": 39,
                "key_pass": 1,
                "tackles": 1,
                "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": 14083739,
              "match_date": "2026-05-23",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.019,
                "expected_assists": 0.059,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 17,
                "accurate_pass": 15,
                "key_pass": 2,
                "interceptions": 2,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3510,
            "combined_rank_score": 1488.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 576.0,
            "sofascore_rating": 6.8037,
            "sofascore_appearances": 27.0,
            "fifa_rank": 2401.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7086,
            "source_file": "data/player_rankings.csv",
            "player_name": "Filip Ugrinić",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Arthur Masuaku",
                  "ranking": 3505
                },
                {
                  "player_name": "Mario Götze",
                  "ranking": 3506
                },
                {
                  "player_name": "Pere Milla",
                  "ranking": 3507
                },
                {
                  "player_name": "Mitchell Weiser",
                  "ranking": 3508
                },
                {
                  "player_name": "Frank Onyeka",
                  "ranking": 3509
                }
              ],
              "lower": [
                {
                  "player_name": "Robin Zentner",
                  "ranking": 3511
                },
                {
                  "player_name": "Kevin Diks",
                  "ranking": 3512
                },
                {
                  "player_name": "Zuriko Davitashvili",
                  "ranking": 3513
                },
                {
                  "player_name": "Grischa Prömel",
                  "ranking": 3514
                },
                {
                  "player_name": "Pol Lozano",
                  "ranking": 3515
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.772,
          "history_matches": 36,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 36,
            "data_confidence": 0.772,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 29.75,
            "bench_appearance_prob": 0.438,
            "market_value_adjustment": 0.9987,
            "fbref_prior_metrics": {
              "squad": "Valencia",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 2.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 36.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.1467
            },
            "rationale": "Bench projection scaled from XGBoost M_service (36 historical appearances) to 29.8 expected mins (appearance prob 0.44); FBref playing time empirical prior: 1.0 sub appearances, 36.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.4954,
                "expected_assists": 0.0451,
                "assists": 0.054,
                "assist_rate": 0.054,
                "expected_goals": 0.0225,
                "goals": 0.0291,
                "goal_rate": 0.0291,
                "shots_on_target": 0.1053,
                "total_shots": 0.308,
                "rating": 6.7086,
                "minutes": 22.68,
                "total_pass": 11.0845,
                "accurate_pass": 9.1136,
                "duels_won": 1.2469,
                "total_long_balls": 0.8672,
                "accurate_long_balls": 0.4348,
                "total_own_half_passes": 3.4488,
                "accurate_own_half_passes": 2.9315,
                "total_opp_half_passes": 7.6357,
                "accurate_opp_half_passes": 6.1821,
                "crosses_total": 1.5827,
                "crosses_accurate": 0.7243,
                "touches": 17.1652,
                "possession_lost": 4.4292,
                "dispossessed": 0.4529,
                "duels_lost": 1.225,
                "aerial_won": 0.2328,
                "aerial_lost": 0.3037,
                "interceptions": 0.0,
                "tackles_won": 0.1689,
                "tackles": 0.6012,
                "clearances": 0.6801,
                "total_contest": 0.3352,
                "won_contest": 0.1866,
                "challenges_lost": 0.122,
                "fouls": 0.1977,
                "fouls_drawn": 0.2262,
                "blocks": 0.0913,
                "big_chances_created": 0.4225,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.9154,
                "total_progression": 11.6172,
                "progressive_carries": 0.3394,
                "shots_off_target": 0.2027
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1504,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Real Sociedad",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.1087,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-11",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-25",
                    "opponent": "Real Betis",
                    "minutes": 35.0,
                    "is_starting": false,
                    "weight": 0.0482,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Celta Vigo",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "creative_index": 0.2666,
                  "totalShots": 0.4675,
                  "expectedGoals": 0.0281,
                  "expectedAssists": 0.057,
                  "onTargetScoringAttempt": 0.1425
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.49535804986953735,
                    "model_output": 0.4954,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3843
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0346
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0322
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0159
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0142
                        }
                      ],
                      "others": -0.0107,
                      "total": 0.4954,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.561529
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.070249
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.065426
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.031823
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": 0.028462
                        }
                      ],
                      "others_margin": -0.021256
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.045067209750413895,
                    "model_output": 0.0451,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0385
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0089
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.003
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0026
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0092,
                      "total": 0.0451,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.59529
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.171811
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": 0.05219
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.044563
                        },
                        {
                          "name": "rating",
                          "margin": -0.044051
                        }
                      ],
                      "others_margin": -0.184979
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.054007209837436676,
                    "model_output": 0.054,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.023
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0071
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.006
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0043
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0025
                        }
                      ],
                      "others": -0.0075,
                      "total": 0.054,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.305908
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.11636
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.099371
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.069712
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.041827
                        }
                      ],
                      "others_margin": -0.130593
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.02247583493590355,
                    "model_output": 0.0225,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0406
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0161
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0059
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0013
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0011
                        }
                      ],
                      "others": -0.0065,
                      "total": 0.0225,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.566426
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.359836
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.17423
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.040905
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.038866
                        }
                      ],
                      "others_margin": -0.250131
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.029064901173114777,
                    "model_output": 0.0291,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0361
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0109
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0083
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0036
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0089,
                      "total": 0.0291,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.451549
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.188848
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.173103
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.086324
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.060311
                        }
                      ],
                      "others_margin": -0.268644
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.10527859628200531,
                    "model_output": 0.1053,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1427
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0441
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0178
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0042
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.002
                        }
                      ],
                      "others": -0.0099,
                      "total": 0.1053,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.57594
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.275475
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.136906
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.0355
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.017236
                        }
                      ],
                      "others_margin": -0.089315
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.30802369117736816,
                    "model_output": 0.308,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3423
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1984
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0315
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0304
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0186
                        }
                      ],
                      "others": -0.0677,
                      "total": 0.308,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.342345
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.198382
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.031516
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.030357
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.018595
                        }
                      ],
                      "others_margin": -0.067677
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.708619594573975,
                    "model_output": 6.7086,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0771
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0369
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0087
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.005
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0042
                        }
                      ],
                      "others": -0.0156,
                      "total": 6.7086,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.077103
                        },
                        {
                          "name": "rating",
                          "margin": -0.036918
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.008695
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.005006
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.004197
                        }
                      ],
                      "others_margin": -0.015511
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 36,
                  "role_matches": 12,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9987, quality 0.471)",
              "stats": {
                "key_pass": 0.4947,
                "expected_assists": 0.045,
                "assists": 0.0539,
                "assist_rate": 0.0539,
                "expected_goals": 0.0224,
                "goals": 0.029,
                "goal_rate": 0.029,
                "shots_on_target": 0.1051,
                "total_shots": 0.3076,
                "rating": 6.7086,
                "minutes": 22.68,
                "total_pass": 11.0701,
                "accurate_pass": 9.1018,
                "duels_won": 1.2453,
                "total_long_balls": 0.8661,
                "accurate_long_balls": 0.4342,
                "total_own_half_passes": 3.4443,
                "accurate_own_half_passes": 2.9277,
                "total_opp_half_passes": 7.6258,
                "accurate_opp_half_passes": 6.1741,
                "crosses_total": 1.5806,
                "crosses_accurate": 0.7234,
                "touches": 17.1429,
                "possession_lost": 4.4234,
                "dispossessed": 0.4523,
                "duels_lost": 1.2234,
                "aerial_won": 0.2325,
                "aerial_lost": 0.3033,
                "interceptions": 0.0,
                "tackles_won": 0.1687,
                "tackles": 0.6004,
                "clearances": 0.6792,
                "total_contest": 0.3348,
                "won_contest": 0.1864,
                "challenges_lost": 0.1218,
                "fouls": 0.1974,
                "fouls_drawn": 0.2259,
                "blocks": 0.0912,
                "big_chances_created": 0.422,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.9103,
                "total_progression": 11.6021,
                "progressive_carries": 0.339,
                "shots_off_target": 0.2024
              },
              "params": {
                "market_value_eur": 5700000,
                "quality_factor": 0.4708,
                "boost_factor": 0.9987,
                "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.0116)",
              "stats": {
                "key_pass": 0.4947,
                "expected_assists": 0.045,
                "assists": 0.0533,
                "assist_rate": 0.0533,
                "expected_goals": 0.0224,
                "goals": 0.0287,
                "goal_rate": 0.0287,
                "shots_on_target": 0.1066,
                "total_shots": 0.3122,
                "rating": 6.7086,
                "minutes": 22.68,
                "total_pass": 11.0701,
                "accurate_pass": 9.1018,
                "duels_won": 1.2453,
                "total_long_balls": 0.8661,
                "accurate_long_balls": 0.4342,
                "total_own_half_passes": 3.4443,
                "accurate_own_half_passes": 2.9277,
                "total_opp_half_passes": 7.6258,
                "accurate_opp_half_passes": 6.1741,
                "crosses_total": 1.5769,
                "crosses_accurate": 0.7234,
                "touches": 17.1429,
                "possession_lost": 4.4234,
                "dispossessed": 0.4523,
                "duels_lost": 1.2234,
                "aerial_won": 0.2325,
                "aerial_lost": 0.3033,
                "interceptions": 0.0027,
                "tackles_won": 0.1707,
                "tackles": 0.6004,
                "clearances": 0.6792,
                "total_contest": 0.3348,
                "won_contest": 0.1864,
                "challenges_lost": 0.1218,
                "fouls": 0.1978,
                "fouls_drawn": 0.2339,
                "blocks": 0.0912,
                "big_chances_created": 0.422,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.9103,
                "total_progression": 11.6021,
                "progressive_carries": 0.339,
                "shots_off_target": 0.2024
              },
              "params": {
                "blend_weight": 0.0116,
                "history_matches": 36,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.252,
                "prior_reliability": 0.1467,
                "competition": "La Liga",
                "squad": "Valencia"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 0.2259,
                  "after": 0.2339
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 22.7 to 29.8 expected minutes (appearance prob 0.44)",
              "stats": {
                "key_pass": 0.6489,
                "expected_assists": 0.059,
                "assists": 0.0699,
                "assist_rate": 0.0699,
                "expected_goals": 0.0294,
                "goals": 0.0376,
                "goal_rate": 0.0376,
                "shots_on_target": 0.1398,
                "total_shots": 0.4095,
                "rating": 6.7086,
                "minutes": 29.75,
                "total_pass": 14.521,
                "accurate_pass": 11.9391,
                "duels_won": 1.6335,
                "total_long_balls": 1.1361,
                "accurate_long_balls": 0.5696,
                "total_own_half_passes": 4.518,
                "accurate_own_half_passes": 3.8403,
                "total_opp_half_passes": 10.003,
                "accurate_opp_half_passes": 8.0987,
                "crosses_total": 2.0685,
                "crosses_accurate": 0.9489,
                "touches": 22.4868,
                "possession_lost": 5.8023,
                "dispossessed": 0.4523,
                "duels_lost": 1.6048,
                "aerial_won": 0.305,
                "aerial_lost": 0.3033,
                "interceptions": 0.0035,
                "tackles_won": 0.2239,
                "tackles": 0.7876,
                "clearances": 0.8909,
                "total_contest": 0.4392,
                "won_contest": 0.2445,
                "challenges_lost": 0.1218,
                "fouls": 0.2595,
                "fouls_drawn": 0.3068,
                "blocks": 0.1196,
                "big_chances_created": 0.5535,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.1293,
                "total_progression": 15.2188,
                "progressive_carries": 0.4447,
                "shots_off_target": 0.2655,
                "bench_appearance_probability": 0.438,
                "bench_expected_minutes": 29.75
              },
              "params": {
                "expected_minutes": 29.75,
                "projection_minutes": 22.68,
                "minutes_scale": 1.3117,
                "appearance_probability": 0.438
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.6489,
                "expected_assists": 0.059,
                "assists": 0.0699,
                "assist_rate": 0.0699,
                "expected_goals": 0.0294,
                "goals": 0.0376,
                "goal_rate": 0.0376,
                "shots_on_target": 0.1398,
                "total_shots": 0.4095,
                "rating": 6.7086,
                "minutes": 29.75,
                "total_pass": 14.521,
                "accurate_pass": 11.9391,
                "duels_won": 1.6335,
                "total_long_balls": 1.1361,
                "accurate_long_balls": 0.5696,
                "total_own_half_passes": 4.518,
                "accurate_own_half_passes": 3.8403,
                "total_opp_half_passes": 10.003,
                "accurate_opp_half_passes": 8.0987,
                "crosses_total": 2.0685,
                "crosses_accurate": 0.9489,
                "touches": 22.4868,
                "possession_lost": 5.8023,
                "dispossessed": 0.4523,
                "duels_lost": 1.6048,
                "aerial_won": 0.305,
                "aerial_lost": 0.3033,
                "interceptions": 0.0035,
                "tackles_won": 0.2239,
                "tackles": 0.7876,
                "clearances": 0.8909,
                "total_contest": 0.4392,
                "won_contest": 0.2445,
                "challenges_lost": 0.1218,
                "fouls": 0.2595,
                "fouls_drawn": 0.3068,
                "blocks": 0.1196,
                "big_chances_created": 0.5535,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.1293,
                "total_progression": 15.2188,
                "progressive_carries": 0.4447,
                "shots_off_target": 0.2655,
                "bench_appearance_probability": 0.438,
                "bench_expected_minutes": 29.75
              },
              "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.6489,
                "expected_assists": 0.059,
                "assist_rate": 0.0699,
                "assists": 0,
                "expected_goals": 0.0294,
                "goal_rate": 0.0376,
                "goals": 0,
                "shots_on_target": 0.1398,
                "total_shots": 0.4095,
                "rating": 6.7086,
                "minutes": 29.75,
                "total_pass": 14.521,
                "accurate_pass": 11.9391,
                "duels_won": 1.6335,
                "total_long_balls": 1.1361,
                "accurate_long_balls": 0.5696,
                "total_own_half_passes": 4.518,
                "accurate_own_half_passes": 3.8403,
                "total_opp_half_passes": 10.003,
                "accurate_opp_half_passes": 8.0987,
                "crosses_total": 2.0685,
                "crosses_accurate": 0.9489,
                "touches": 22.4868,
                "possession_lost": 5.8023,
                "dispossessed": 0.4523,
                "duels_lost": 1.6048,
                "aerial_won": 0.305,
                "aerial_lost": 0.3033,
                "interceptions": 0.0035,
                "tackles_won": 0.2239,
                "tackles": 0.7876,
                "clearances": 0.8909,
                "total_contest": 0.4392,
                "won_contest": 0.2445,
                "challenges_lost": 0.1218,
                "fouls": 0.2595,
                "fouls_drawn": 0.3068,
                "blocks": 0.1196,
                "big_chances_created": 0.5535,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.1293,
                "total_progression": 15.2188,
                "progressive_carries": 0.4447,
                "shots_off_target": 0.2655,
                "bench_appearance_probability": 0.438,
                "bench_expected_minutes": 29.75,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.438,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 75.0)",
              "stats": {
                "key_pass": 0.6489,
                "expected_assists": 0.059,
                "assist_rate": 0.0699,
                "assists": 0,
                "expected_goals": 0.0294,
                "goal_rate": 0.0376,
                "goals": 0,
                "shots_on_target": 0.1398,
                "total_shots": 0.4095,
                "rating": 6.7086,
                "minutes": 29.75,
                "total_pass": 14.521,
                "accurate_pass": 11.9391,
                "duels_won": 1.6335,
                "total_long_balls": 1.1361,
                "accurate_long_balls": 0.5696,
                "total_own_half_passes": 4.518,
                "accurate_own_half_passes": 3.8403,
                "total_opp_half_passes": 10.003,
                "accurate_opp_half_passes": 8.0987,
                "crosses_total": 2.0685,
                "crosses_accurate": 0.9489,
                "touches": 22.4868,
                "possession_lost": 5.8023,
                "dispossessed": 0.4523,
                "duels_lost": 1.6048,
                "aerial_won": 0.305,
                "aerial_lost": 0.3033,
                "interceptions": 0.0035,
                "tackles_won": 0.2239,
                "tackles": 0.7876,
                "clearances": 0.8909,
                "total_contest": 0.4392,
                "won_contest": 0.2445,
                "challenges_lost": 0.1218,
                "fouls": 0.2595,
                "fouls_drawn": 0.3068,
                "blocks": 0.1196,
                "big_chances_created": 0.5535,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.1293,
                "total_progression": 15.2188,
                "progressive_carries": 0.4447,
                "shots_off_target": 0.2655,
                "bench_appearance_probability": 0.438,
                "bench_expected_minutes": 29.75,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.0
              },
              "params": {
                "match_squad_rank": 14,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3510,
                "fifa_rank": 2401.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            }
          ]
        },
        "Hugo Duro": {
          "player_id": 909119,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 180,
          "market_value": 11600000,
          "stats": {
            "expected_goals": 0.0784,
            "goal_rate": 0.1567,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0046,
            "key_pass": 0,
            "rating": 6.5769,
            "minutes": 23,
            "total_pass": 5,
            "accurate_pass": 4,
            "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": 9,
            "possession_lost": 2.4976,
            "dispossessed": 0.3243,
            "duels_lost": 2,
            "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.0433,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 3,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.599,
            "bench_expected_minutes": 22.57,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.447,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0735,
            "projected_assists": 0,
            "assist_probability": 0.0046,
            "finishing_factor": 1.1573,
            "creation_factor": 0.8681,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 54,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1361,
                "expected_assists": 0.0012,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 6,
                "accurate_pass": 4,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5497,
                "expected_assists": 0.0065,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 20,
                "accurate_pass": 14,
                "clearances": 1,
                "aerial_won": 4,
                "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": 16416297,
              "match_date": "2026-09-20",
              "home_team": "Valencia",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 82,
                "rating": 6.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.3599,
                "expected_assists": 0.0301,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 63,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1376,
                "expected_assists": 0.001,
                "total_shots": 2,
                "total_pass": 7,
                "accurate_pass": 4,
                "tackles": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416330,
              "match_date": "2026-09-11",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 15,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "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": 16416325,
              "match_date": "2026-09-06",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 14,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 6,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416291,
              "match_date": "2026-08-30",
              "home_team": "Deportivo de A Coruña",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 30,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0103,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 11,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421049,
              "match_date": "2026-08-25",
              "home_team": "Valencia",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 55,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0144,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 4,
                "key_pass": 2,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 3,
                "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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_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": 14083739,
              "match_date": "2026-05-23",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 80,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.215,
                "expected_assists": 0.0007,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 8,
                "accurate_pass": 4,
                "tackles": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3220,
            "combined_rank_score": 1167.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 776.0,
            "sofascore_rating": 6.6389,
            "sofascore_appearances": 36.0,
            "fifa_rank": 1559.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.5769,
            "source_file": "data/player_rankings.csv",
            "player_name": "Hugo Duro",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Azor Matusiwa",
                  "ranking": 3215
                },
                {
                  "player_name": "Eljif Elmas",
                  "ranking": 3216
                },
                {
                  "player_name": "Lazaros Rota",
                  "ranking": 3217
                },
                {
                  "player_name": "Joshua Zirkzee",
                  "ranking": 3218
                },
                {
                  "player_name": "Camilo Vargas",
                  "ranking": 3219
                }
              ],
              "lower": [
                {
                  "player_name": "Chris Führich",
                  "ranking": 3221
                },
                {
                  "player_name": "Lucien Agoumé",
                  "ranking": 3222
                },
                {
                  "player_name": "Maarten Vandevoordt",
                  "ranking": 3223
                },
                {
                  "player_name": "Nikola Vasilj",
                  "ranking": 3224
                },
                {
                  "player_name": "Wouter Burger",
                  "ranking": 3225
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.76,
          "history_matches": 45,
          "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": 45,
            "data_confidence": 0.76,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 22.57,
            "bench_appearance_prob": 0.599,
            "market_value_adjustment": 1.0011,
            "fbref_prior_metrics": {
              "squad": "Valencia",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 1.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 20.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0667
            },
            "rationale": "Bench projection scaled from XGBoost F_service (45 historical appearances) to 22.6 expected mins (appearance prob 0.60); FBref playing time empirical prior: 2.0 sub appearances, 20.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1199,
                "goals": 0.1466,
                "goal_rate": 0.1466,
                "shots_on_target": 0.3041,
                "total_shots": 0.7009,
                "expected_assists": 0.0071,
                "key_pass": 0.2337,
                "rating": 6.5769,
                "minutes": 21.06,
                "total_pass": 4.9713,
                "accurate_pass": 3.9114,
                "duels_won": 1.16,
                "total_long_balls": 0.1855,
                "accurate_long_balls": 0.1855,
                "total_opp_half_passes": 3.0126,
                "accurate_opp_half_passes": 2.0479,
                "crosses_total": 0.0827,
                "crosses_accurate": 0.0,
                "touches": 8.4423,
                "possession_lost": 2.3279,
                "dispossessed": 0.3239,
                "duels_lost": 1.9031,
                "aerial_lost": 0.9825,
                "total_contest": 0.2034,
                "won_contest": 0.0118,
                "ball_recovery": 0.1986,
                "challenges_lost": 0.1655,
                "fouls": 0.3223,
                "fouls_drawn": 0.358,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0703,
                "tackles_won": 0.1531,
                "tackles": 0.1531,
                "clearances": 0.234,
                "blocks": 0.1539,
                "big_chances_created": 0.0448,
                "big_chances_missed": 0.2729,
                "xgot": 0.0662,
                "offsides": 0.0,
                "ball_carries": 1.1639,
                "total_progression": 2.6582,
                "progressive_carries": 0.0679,
                "shots_off_target": 0.3968
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 54.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Real Sociedad",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1084,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Deportivo Alavés",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-11",
                    "opponent": "Sevilla",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "FC Barcelona",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0666,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0566,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-25",
                    "opponent": "Real Betis",
                    "minutes": 55.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Celta Vigo",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0409,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "FC Barcelona",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.2059,
                  "totalOppositionHalfPasses": 5.3389,
                  "accurateOppositionHalfPasses": 3.4804,
                  "accuratePass": 6.3794,
                  "totalShots": 1.3007
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.1199129968881607,
                    "model_output": 0.1199,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0885
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0104
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0073
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0046
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0047
                        }
                      ],
                      "others": -0.0019,
                      "total": 0.1199,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.592683
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.090583
                        },
                        {
                          "name": "goals",
                          "margin": -0.063009
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.040298
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.03924
                        }
                      ],
                      "others_margin": -0.015484
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.14662565290927887,
                    "model_output": 0.1466,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0699
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0091
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0087
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0072
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0058
                        }
                      ],
                      "others": 0.016,
                      "total": 0.1466,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.424209
                        },
                        {
                          "name": "goals",
                          "margin": -0.071604
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.068392
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.056342
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.045576
                        }
                      ],
                      "others_margin": 0.116298
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.30407649278640747,
                    "model_output": 0.3041,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2084
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0191
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0118
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0109
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0103
                        }
                      ],
                      "others": 0.0078,
                      "total": 0.3041,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.491966
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.059908
                        },
                        {
                          "name": "goals",
                          "margin": -0.038874
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.037409
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.035516
                        }
                      ],
                      "others_margin": 0.025427
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7008634805679321,
                    "model_output": 0.7009,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.58
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0346
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0286
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0265
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": 0.0254
                        }
                      ],
                      "others": -0.0355,
                      "total": 0.7009,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.579954
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.034615
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.028566
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.026516
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": 0.025367
                        }
                      ],
                      "others_margin": -0.035601
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0071012224070727825,
                    "model_output": 0.0071,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0254
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0096
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0055
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0031
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.002
                        }
                      ],
                      "others": -0.0117,
                      "total": 0.0071,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.501829
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.281015
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.208107
                        },
                        {
                          "name": "rating",
                          "margin": -0.139834
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.099826
                        }
                      ],
                      "others_margin": -0.974914
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.2336968630552292,
                    "model_output": 0.2337,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2562
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0346
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.026
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0191
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0167
                        }
                      ],
                      "others": -0.0942,
                      "total": 0.2337,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.472517
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.085208
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.069169
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.053969
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.049751
                        }
                      ],
                      "others_margin": -0.33813
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.576937675476074,
                    "model_output": 6.5769,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0478
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0247
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0136
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0109
                        },
                        {
                          "name": "touches",
                          "contribution": -0.01
                        }
                      ],
                      "others": -0.0844,
                      "total": 6.5769,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.04783
                        },
                        {
                          "name": "rating",
                          "margin": -0.024655
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013603
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.010897
                        },
                        {
                          "name": "touches",
                          "margin": -0.009998
                        }
                      ],
                      "others_margin": -0.084358
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 45,
                  "role_matches": 18,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0011, quality 0.541)",
              "stats": {
                "expected_goals": 0.12,
                "goals": 0.1468,
                "goal_rate": 0.1468,
                "shots_on_target": 0.3044,
                "total_shots": 0.7016,
                "expected_assists": 0.0071,
                "key_pass": 0.234,
                "rating": 6.5769,
                "minutes": 21.06,
                "total_pass": 4.9768,
                "accurate_pass": 3.9157,
                "duels_won": 1.1613,
                "total_long_balls": 0.1857,
                "accurate_long_balls": 0.1857,
                "total_opp_half_passes": 3.0159,
                "accurate_opp_half_passes": 2.0502,
                "crosses_total": 0.0828,
                "crosses_accurate": 0.0,
                "touches": 8.4516,
                "possession_lost": 2.3305,
                "dispossessed": 0.3243,
                "duels_lost": 1.9052,
                "aerial_lost": 0.9836,
                "total_contest": 0.2036,
                "won_contest": 0.0118,
                "ball_recovery": 0.1988,
                "challenges_lost": 0.1657,
                "fouls": 0.3227,
                "fouls_drawn": 0.3584,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0704,
                "tackles_won": 0.1533,
                "tackles": 0.1533,
                "clearances": 0.2343,
                "blocks": 0.1541,
                "big_chances_created": 0.0448,
                "big_chances_missed": 0.2732,
                "xgot": 0.0663,
                "offsides": 0.0,
                "ball_carries": 1.1652,
                "total_progression": 2.6611,
                "progressive_carries": 0.068,
                "shots_off_target": 0.3972
              },
              "params": {
                "market_value_eur": 11600000,
                "quality_factor": 0.5411,
                "boost_factor": 1.0011,
                "reference_quality": 0.505,
                "history_matches": 45,
                "history_shrink": 0.1,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0043)",
              "stats": {
                "expected_goals": 0.12,
                "goals": 0.1462,
                "goal_rate": 0.1462,
                "shots_on_target": 0.3031,
                "total_shots": 0.6986,
                "expected_assists": 0.0071,
                "key_pass": 0.234,
                "rating": 6.5769,
                "minutes": 21.06,
                "total_pass": 4.9768,
                "accurate_pass": 3.9157,
                "duels_won": 1.1613,
                "total_long_balls": 0.1857,
                "accurate_long_balls": 0.1857,
                "total_opp_half_passes": 3.0159,
                "accurate_opp_half_passes": 2.0502,
                "crosses_total": 0.0824,
                "crosses_accurate": 0.0,
                "touches": 8.4516,
                "possession_lost": 2.3305,
                "dispossessed": 0.3243,
                "duels_lost": 1.9052,
                "aerial_lost": 0.9836,
                "total_contest": 0.2036,
                "won_contest": 0.0118,
                "ball_recovery": 0.1988,
                "challenges_lost": 0.1657,
                "fouls": 0.3223,
                "fouls_drawn": 0.3589,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0711,
                "tackles_won": 0.1526,
                "tackles": 0.1533,
                "clearances": 0.2343,
                "blocks": 0.1541,
                "big_chances_created": 0.0448,
                "big_chances_missed": 0.2732,
                "xgot": 0.0663,
                "offsides": 0.0,
                "ball_carries": 1.1652,
                "total_progression": 2.6611,
                "progressive_carries": 0.068,
                "shots_off_target": 0.3972
              },
              "params": {
                "blend_weight": 0.0043,
                "history_matches": 45,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.234,
                "prior_reliability": 0.0667,
                "competition": "La Liga",
                "squad": "Valencia"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 21.1 to 22.6 expected minutes (appearance prob 0.60)",
              "stats": {
                "expected_goals": 0.1286,
                "goals": 0.1567,
                "goal_rate": 0.1567,
                "shots_on_target": 0.3248,
                "total_shots": 0.7505,
                "expected_assists": 0.0076,
                "key_pass": 0.2508,
                "rating": 6.5769,
                "minutes": 22.57,
                "total_pass": 5.3336,
                "accurate_pass": 4.1965,
                "duels_won": 1.2446,
                "total_long_balls": 0.199,
                "accurate_long_balls": 0.199,
                "total_opp_half_passes": 3.2321,
                "accurate_opp_half_passes": 2.1972,
                "crosses_total": 0.0883,
                "crosses_accurate": 0.0,
                "touches": 9.0576,
                "possession_lost": 2.4976,
                "dispossessed": 0.3243,
                "duels_lost": 2.0418,
                "aerial_lost": 0.9836,
                "total_contest": 0.2182,
                "won_contest": 0.0126,
                "ball_recovery": 0.2131,
                "challenges_lost": 0.1657,
                "fouls": 0.3454,
                "fouls_drawn": 0.3846,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0762,
                "tackles_won": 0.1635,
                "tackles": 0.1643,
                "clearances": 0.2511,
                "blocks": 0.1651,
                "big_chances_created": 0.048,
                "big_chances_missed": 0.2928,
                "xgot": 0.0711,
                "offsides": 0.0,
                "ball_carries": 1.2487,
                "total_progression": 2.8519,
                "progressive_carries": 0.0729,
                "shots_off_target": 0.4257,
                "bench_appearance_probability": 0.599,
                "bench_expected_minutes": 22.57
              },
              "params": {
                "expected_minutes": 22.57,
                "projection_minutes": 21.06,
                "minutes_scale": 1.0717,
                "appearance_probability": 0.599
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1286,
                "goals": 0.1567,
                "goal_rate": 0.1567,
                "shots_on_target": 0.3248,
                "total_shots": 0.7505,
                "expected_assists": 0.0076,
                "key_pass": 0.2508,
                "rating": 6.5769,
                "minutes": 22.57,
                "total_pass": 5.3336,
                "accurate_pass": 4.1965,
                "duels_won": 1.2446,
                "total_long_balls": 0.199,
                "accurate_long_balls": 0.199,
                "total_opp_half_passes": 3.2321,
                "accurate_opp_half_passes": 2.1972,
                "crosses_total": 0.0883,
                "crosses_accurate": 0.0,
                "touches": 9.0576,
                "possession_lost": 2.4976,
                "dispossessed": 0.3243,
                "duels_lost": 2.0418,
                "aerial_lost": 0.9836,
                "total_contest": 0.2182,
                "won_contest": 0.0126,
                "ball_recovery": 0.2131,
                "challenges_lost": 0.1657,
                "fouls": 0.3454,
                "fouls_drawn": 0.3846,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0762,
                "tackles_won": 0.1635,
                "tackles": 0.1643,
                "clearances": 0.2511,
                "blocks": 0.1651,
                "big_chances_created": 0.048,
                "big_chances_missed": 0.2928,
                "xgot": 0.0711,
                "offsides": 0.0,
                "ball_carries": 1.2487,
                "total_progression": 2.8519,
                "progressive_carries": 0.0729,
                "shots_off_target": 0.4257,
                "bench_appearance_probability": 0.599,
                "bench_expected_minutes": 22.57
              },
              "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.1286,
                "goal_rate": 0.1567,
                "goals": 0,
                "shots_on_target": 0.3248,
                "total_shots": 0.7505,
                "expected_assists": 0.0076,
                "key_pass": 0.2508,
                "rating": 6.5769,
                "minutes": 22.57,
                "total_pass": 5.3336,
                "accurate_pass": 4.1965,
                "duels_won": 1.2446,
                "total_long_balls": 0.199,
                "accurate_long_balls": 0.199,
                "total_opp_half_passes": 3.2321,
                "accurate_opp_half_passes": 2.1972,
                "crosses_total": 0.0883,
                "crosses_accurate": 0.0,
                "touches": 9.0576,
                "possession_lost": 2.4976,
                "dispossessed": 0.3243,
                "duels_lost": 2.0418,
                "aerial_lost": 0.9836,
                "total_contest": 0.2182,
                "won_contest": 0.0126,
                "ball_recovery": 0.2131,
                "challenges_lost": 0.1657,
                "fouls": 0.3454,
                "fouls_drawn": 0.3846,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0762,
                "tackles_won": 0.1635,
                "tackles": 0.1643,
                "clearances": 0.2511,
                "blocks": 0.1651,
                "big_chances_created": 0.048,
                "big_chances_missed": 0.2928,
                "xgot": 0.0711,
                "offsides": 0.0,
                "ball_carries": 1.2487,
                "total_progression": 2.8519,
                "progressive_carries": 0.0729,
                "shots_off_target": 0.4257,
                "bench_appearance_probability": 0.599,
                "bench_expected_minutes": 22.57,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "expected_goals": 0.0784,
                "goal_rate": 0.1567,
                "goals": 0,
                "shots_on_target": 0.3248,
                "total_shots": 0.7505,
                "expected_assists": 0.0046,
                "key_pass": 0.2508,
                "rating": 6.5769,
                "minutes": 22.57,
                "total_pass": 5.3336,
                "accurate_pass": 4.1965,
                "duels_won": 1.2446,
                "total_long_balls": 0.199,
                "accurate_long_balls": 0.199,
                "total_opp_half_passes": 3.2321,
                "accurate_opp_half_passes": 2.1972,
                "crosses_total": 0.0883,
                "crosses_accurate": 0.0,
                "touches": 9.0576,
                "possession_lost": 2.4976,
                "dispossessed": 0.3243,
                "duels_lost": 2.0418,
                "aerial_lost": 0.9836,
                "total_contest": 0.2182,
                "won_contest": 0.0126,
                "ball_recovery": 0.2131,
                "challenges_lost": 0.1657,
                "fouls": 0.3454,
                "fouls_drawn": 0.3846,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0762,
                "tackles_won": 0.1635,
                "tackles": 0.1643,
                "clearances": 0.2511,
                "blocks": 0.1651,
                "big_chances_created": 0.048,
                "big_chances_missed": 0.2928,
                "xgot": 0.0433,
                "offsides": 0.0,
                "ball_carries": 1.2487,
                "total_progression": 2.8519,
                "progressive_carries": 0.0729,
                "shots_off_target": 0.4257,
                "bench_appearance_probability": 0.599,
                "bench_expected_minutes": 22.57,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1573,
                "creation_factor": 0.8681
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 0.599
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1286,
                  "after": 0.0784
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 77.0)",
              "stats": {
                "expected_goals": 0.0784,
                "goal_rate": 0.1567,
                "goals": 0,
                "shots_on_target": 0.3248,
                "total_shots": 0.7505,
                "expected_assists": 0.0046,
                "key_pass": 0.2508,
                "rating": 6.5769,
                "minutes": 22.57,
                "total_pass": 5.3336,
                "accurate_pass": 4.1965,
                "duels_won": 1.2446,
                "total_long_balls": 0.199,
                "accurate_long_balls": 0.199,
                "total_opp_half_passes": 3.2321,
                "accurate_opp_half_passes": 2.1972,
                "crosses_total": 0.0883,
                "crosses_accurate": 0.0,
                "touches": 9.0576,
                "possession_lost": 2.4976,
                "dispossessed": 0.3243,
                "duels_lost": 2.0418,
                "aerial_lost": 0.9836,
                "total_contest": 0.2182,
                "won_contest": 0.0126,
                "ball_recovery": 0.2131,
                "challenges_lost": 0.1657,
                "fouls": 0.3454,
                "fouls_drawn": 0.3846,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0762,
                "tackles_won": 0.1635,
                "tackles": 0.1643,
                "clearances": 0.2511,
                "blocks": 0.1651,
                "big_chances_created": 0.048,
                "big_chances_missed": 0.2928,
                "xgot": 0.0433,
                "offsides": 0.0,
                "ball_carries": 1.2487,
                "total_progression": 2.8519,
                "progressive_carries": 0.0729,
                "shots_off_target": 0.4257,
                "bench_appearance_probability": 0.599,
                "bench_expected_minutes": 22.57,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1573,
                "creation_factor": 0.8681,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3220,
                "fifa_rank": 1559.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.0784,
                "goal_rate": 0.1567,
                "goals": 0,
                "shots_on_target": 0.3248,
                "total_shots": 0.7505,
                "expected_assists": 0.0046,
                "key_pass": 0.2508,
                "rating": 6.5769,
                "minutes": 22.57,
                "total_pass": 5.3336,
                "accurate_pass": 4.1965,
                "duels_won": 1.2446,
                "total_long_balls": 0.199,
                "accurate_long_balls": 0.199,
                "total_opp_half_passes": 3.2321,
                "accurate_opp_half_passes": 2.1972,
                "crosses_total": 0.0883,
                "crosses_accurate": 0.0,
                "touches": 9.0576,
                "possession_lost": 2.4976,
                "dispossessed": 0.3243,
                "duels_lost": 2.0418,
                "aerial_lost": 0.9836,
                "total_contest": 0.2182,
                "won_contest": 0.0126,
                "ball_recovery": 0.2131,
                "challenges_lost": 0.1657,
                "fouls": 0.3454,
                "fouls_drawn": 0.3846,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0762,
                "tackles_won": 0.1635,
                "tackles": 0.1643,
                "clearances": 0.2511,
                "blocks": 0.1651,
                "big_chances_created": 0.048,
                "big_chances_missed": 0.2928,
                "xgot": 0.0433,
                "offsides": 0.0,
                "ball_carries": 1.2487,
                "total_progression": 2.8519,
                "progressive_carries": 0.0729,
                "shots_off_target": 0.4257,
                "bench_appearance_probability": 0.599,
                "bench_expected_minutes": 22.57,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0735,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1573,
                "creation_factor": 0.8681,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0735,
                "goal_rate": 0.1567,
                "scorer_weight": 0.0907,
                "squad_weight_total": 0.9718,
                "weight_share": 0.0934,
                "finishing_factor": 1.1573,
                "appearance_weight": 0.599,
                "weight_rank": 5,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.0784,
                "goal_rate": 0.1567,
                "goals": 0,
                "shots_on_target": 0.3248,
                "total_shots": 0.7505,
                "expected_assists": 0.0046,
                "key_pass": 0.2508,
                "rating": 6.5769,
                "minutes": 22.57,
                "total_pass": 5.3336,
                "accurate_pass": 4.1965,
                "duels_won": 1.2446,
                "total_long_balls": 0.199,
                "accurate_long_balls": 0.199,
                "total_opp_half_passes": 3.2321,
                "accurate_opp_half_passes": 2.1972,
                "crosses_total": 0.0883,
                "crosses_accurate": 0.0,
                "touches": 9.0576,
                "possession_lost": 2.4976,
                "dispossessed": 0.3243,
                "duels_lost": 2.0418,
                "aerial_lost": 0.9836,
                "total_contest": 0.2182,
                "won_contest": 0.0126,
                "ball_recovery": 0.2131,
                "challenges_lost": 0.1657,
                "fouls": 0.3454,
                "fouls_drawn": 0.3846,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0762,
                "tackles_won": 0.1635,
                "tackles": 0.1643,
                "clearances": 0.2511,
                "blocks": 0.1651,
                "big_chances_created": 0.048,
                "big_chances_missed": 0.2928,
                "xgot": 0.0433,
                "offsides": 0.0,
                "ball_carries": 1.2487,
                "total_progression": 2.8519,
                "progressive_carries": 0.0729,
                "shots_off_target": 0.4257,
                "bench_appearance_probability": 0.599,
                "bench_expected_minutes": 22.57,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0735,
                "projected_assists": 0,
                "assist_probability": 0.0046,
                "finishing_factor": 1.1573,
                "creation_factor": 0.8681,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0046,
                "assist_rate": 0.0,
                "provider_weight": 0.004,
                "squad_weight_total": 0.6412,
                "weight_share": 0.0062,
                "creation_factor": 0.8681,
                "appearance_weight": 0.599,
                "weight_rank": 13,
                "eligible_players": 13
              }
            }
          ]
        },
        "Diego López": {
          "player_id": 998950,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 16,
          "height": 172,
          "market_value": 9600000,
          "stats": {
            "expected_goals": 0.0412,
            "goal_rate": 0.0917,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.029,
            "key_pass": 1,
            "rating": 6.6745,
            "minutes": 26,
            "total_pass": 10,
            "accurate_pass": 9,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 7,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 19,
            "possession_lost": 4.7949,
            "dispossessed": 0.1958,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0143,
            "offsides": 0,
            "ball_carries": 4,
            "total_progression": 21,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.573,
            "bench_expected_minutes": 25.61,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.447,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0398,
            "projected_assists": 0,
            "assist_probability": 0.0283,
            "finishing_factor": 1.175,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 14083739,
              "match_date": "2026-05-23",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 52,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2276,
                "expected_assists": 0.5462,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 11,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083687,
              "match_date": "2026-05-17",
              "home_team": "Real Sociedad",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 74,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0667,
                "expected_assists": 0.1734,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 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": 14083639,
              "match_date": "2026-05-14",
              "home_team": "Valencia",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1358,
                "expected_assists": 0.0503,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 42,
                "accurate_pass": 32,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 9,
                "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": 14083539,
              "match_date": "2026-05-10",
              "home_team": "Athletic Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 70,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0115,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 17,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083476,
              "match_date": "2026-05-02",
              "home_team": "Valencia",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 31,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0379,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083255,
              "match_date": "2026-04-25",
              "home_team": "Valencia",
              "away_team": "Girona FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Girona FC",
              "stats": {
                "minutes": 25,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.015,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083270,
              "match_date": "2026-04-21",
              "home_team": "Mallorca",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 60,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0037,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 14,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083132,
              "match_date": "2026-04-11",
              "home_team": "Elche",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Elche",
              "stats": {
                "minutes": 30,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0653,
                "expected_assists": 0.1156,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 9,
                "accurate_pass": 9,
                "key_pass": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083684,
              "match_date": "2026-03-21",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 10,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 4
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083627,
              "match_date": "2026-03-14",
              "home_team": "Real Oviedo",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 20,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0586,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 1,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3167,
            "combined_rank_score": 1133.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 692.0,
            "sofascore_rating": 6.7088,
            "sofascore_appearances": 34.0,
            "fifa_rank": 1575.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.6745,
            "source_file": "data/player_rankings.csv",
            "player_name": "Diego López",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jack Clarke",
                  "ranking": 3162
                },
                {
                  "player_name": "Vitor Reis",
                  "ranking": 3163
                },
                {
                  "player_name": "Nicolás Fernández",
                  "ranking": 3164
                },
                {
                  "player_name": "Žan Vipotnik",
                  "ranking": 3165
                },
                {
                  "player_name": "Mykhailo Mudryk",
                  "ranking": 3166
                }
              ],
              "lower": [
                {
                  "player_name": "Taty Castellanos",
                  "ranking": 3168
                },
                {
                  "player_name": "Timothy Castagne",
                  "ranking": 3169
                },
                {
                  "player_name": "Edson Álvarez",
                  "ranking": 3170
                },
                {
                  "player_name": "Kevin Trapp",
                  "ranking": 3171
                },
                {
                  "player_name": "Sean Longstaff",
                  "ranking": 3172
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "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.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.610281584086223,
            "bench_appearance_prob": 0.5731946174584648,
            "market_value_adjustment": 1.0005,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (34 historical appearances) to 25.6 expected mins (appearance prob 0.57)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0582,
                "goals": 0.0756,
                "goal_rate": 0.0756,
                "shots_on_target": 0.1941,
                "total_shots": 0.5938,
                "expected_assists": 0.0409,
                "key_pass": 0.4441,
                "rating": 6.6745,
                "minutes": 21.11,
                "total_pass": 8.5727,
                "accurate_pass": 7.0982,
                "duels_won": 1.4827,
                "total_long_balls": 0.1298,
                "accurate_long_balls": 0.0911,
                "total_opp_half_passes": 6.4637,
                "accurate_opp_half_passes": 5.3701,
                "crosses_total": 1.2051,
                "crosses_accurate": 0.5376,
                "touches": 15.3895,
                "possession_lost": 3.9503,
                "dispossessed": 0.1957,
                "duels_lost": 1.9316,
                "aerial_lost": 0.659,
                "total_contest": 0.7503,
                "won_contest": 0.3834,
                "ball_recovery": 1.4285,
                "challenges_lost": 0.6258,
                "fouls": 0.0843,
                "fouls_drawn": 0.1988,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1672,
                "tackles_won": 0.523,
                "tackles": 0.6103,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.047,
                "big_chances_missed": 0.1345,
                "xgot": 0.0203,
                "offsides": 0.0,
                "ball_carries": 2.9642,
                "total_progression": 17.3017,
                "progressive_carries": 0.7638,
                "shots_off_target": 0.3997
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-05-23",
                    "opponent": "FC Barcelona",
                    "minutes": 52.0,
                    "is_starting": true,
                    "weight": 0.1506,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Sociedad",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.128,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-14",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1088,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Athletic Club",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0925,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Atlético Madrid",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.0786,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Girona FC",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.0668,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Mallorca",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Elche",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0483,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Sevilla",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.041,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Real Oviedo",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0692,
                  "totalOppositionHalfPasses": 10.9174,
                  "accurateOppositionHalfPasses": 8.744,
                  "accuratePass": 13.5639,
                  "totalShots": 0.8797
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0581662617623806,
                    "model_output": 0.0582,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0871
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0181
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0051
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0039
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0037
                        }
                      ],
                      "others": -0.0218,
                      "total": 0.0582,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.579908
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.178274
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.056033
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.045849
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.045058
                        }
                      ],
                      "others_margin": -0.319394
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.07557403296232224,
                    "model_output": 0.0756,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0835
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0117
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0081
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.004
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0038
                        }
                      ],
                      "others": -0.0156,
                      "total": 0.0756,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.5327
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.103398
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.0788
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.04164
                        },
                        {
                          "name": "goals",
                          "margin": -0.041247
                        }
                      ],
                      "others_margin": -0.186875
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.19413262605667114,
                    "model_output": 0.1941,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2199
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0289
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0223
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0204
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0139
                        }
                      ],
                      "others": -0.0367,
                      "total": 0.1941,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.527788
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.095942
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.080632
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.080067
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.058528
                        }
                      ],
                      "others_margin": -0.172996
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.593796968460083,
                    "model_output": 0.5938,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4847
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1401
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0422
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0245
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0195
                        }
                      ],
                      "others": -0.0759,
                      "total": 0.5938,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.484669
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.140078
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.042239
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.024452
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.019545
                        }
                      ],
                      "others_margin": -0.075969
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04094249755144119,
                    "model_output": 0.0409,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0201
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0054
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0044
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.003
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0022
                        }
                      ],
                      "others": -0.0052,
                      "total": 0.0409,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.373435
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.114477
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.093485
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.06438
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.047658
                        }
                      ],
                      "others_margin": -0.117899
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.4441334903240204,
                    "model_output": 0.4441,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2447
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0264
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0164
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0159
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0155
                        }
                      ],
                      "others": -0.0021,
                      "total": 0.4441,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.445619
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.058895
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.03603
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.035042
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.034079
                        }
                      ],
                      "others_margin": -0.004851
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.67446231842041,
                    "model_output": 6.6745,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0538
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0142
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0107
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0107
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0102
                        }
                      ],
                      "others": -0.044,
                      "total": 6.6745,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.053833
                        },
                        {
                          "name": "rating",
                          "margin": 0.014212
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.010664
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.010654
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.01018
                        }
                      ],
                      "others_margin": -0.044007
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 34,
                  "role_matches": 14,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0005, quality 0.518)",
              "stats": {
                "expected_goals": 0.0582,
                "goals": 0.0756,
                "goal_rate": 0.0756,
                "shots_on_target": 0.1942,
                "total_shots": 0.5941,
                "expected_assists": 0.041,
                "key_pass": 0.4444,
                "rating": 6.6745,
                "minutes": 21.11,
                "total_pass": 8.577,
                "accurate_pass": 7.1017,
                "duels_won": 1.4834,
                "total_long_balls": 0.1299,
                "accurate_long_balls": 0.0911,
                "total_opp_half_passes": 6.4669,
                "accurate_opp_half_passes": 5.3728,
                "crosses_total": 1.2057,
                "crosses_accurate": 0.5379,
                "touches": 15.3972,
                "possession_lost": 3.9523,
                "dispossessed": 0.1958,
                "duels_lost": 1.9326,
                "aerial_lost": 0.6593,
                "total_contest": 0.7507,
                "won_contest": 0.3836,
                "ball_recovery": 1.4292,
                "challenges_lost": 0.6261,
                "fouls": 0.0843,
                "fouls_drawn": 0.1989,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1673,
                "tackles_won": 0.5233,
                "tackles": 0.6106,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.047,
                "big_chances_missed": 0.1346,
                "xgot": 0.0203,
                "offsides": 0.0,
                "ball_carries": 2.9657,
                "total_progression": 17.3104,
                "progressive_carries": 0.7642,
                "shots_off_target": 0.3999
              },
              "params": {
                "market_value_eur": 9600000,
                "quality_factor": 0.5177,
                "boost_factor": 1.0005,
                "reference_quality": 0.505,
                "history_matches": 34,
                "history_shrink": 0.1282,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 21.1 to 25.6 expected minutes (appearance prob 0.57)",
              "stats": {
                "expected_goals": 0.0706,
                "goals": 0.0917,
                "goal_rate": 0.0917,
                "shots_on_target": 0.2356,
                "total_shots": 0.7208,
                "expected_assists": 0.0497,
                "key_pass": 0.5391,
                "rating": 6.6745,
                "minutes": 25.61,
                "total_pass": 10.4055,
                "accurate_pass": 8.6157,
                "duels_won": 1.7996,
                "total_long_balls": 0.1576,
                "accurate_long_balls": 0.1105,
                "total_opp_half_passes": 7.8455,
                "accurate_opp_half_passes": 6.5182,
                "crosses_total": 1.4627,
                "crosses_accurate": 0.6526,
                "touches": 18.6796,
                "possession_lost": 4.7949,
                "dispossessed": 0.1958,
                "duels_lost": 2.3446,
                "aerial_lost": 0.6593,
                "total_contest": 0.9107,
                "won_contest": 0.4654,
                "ball_recovery": 1.7339,
                "challenges_lost": 0.6261,
                "fouls": 0.1023,
                "fouls_drawn": 0.2413,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.203,
                "tackles_won": 0.6349,
                "tackles": 0.7408,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.057,
                "big_chances_missed": 0.1633,
                "xgot": 0.0246,
                "offsides": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 21.0007,
                "progressive_carries": 0.9271,
                "shots_off_target": 0.4852,
                "bench_appearance_probability": 0.573,
                "bench_expected_minutes": 25.61
              },
              "params": {
                "expected_minutes": 25.61,
                "projection_minutes": 21.11,
                "minutes_scale": 1.2132,
                "appearance_probability": 0.573
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0706,
                "goals": 0.0917,
                "goal_rate": 0.0917,
                "shots_on_target": 0.2356,
                "total_shots": 0.7208,
                "expected_assists": 0.0497,
                "key_pass": 0.5391,
                "rating": 6.6745,
                "minutes": 25.61,
                "total_pass": 10.4055,
                "accurate_pass": 8.6157,
                "duels_won": 1.7996,
                "total_long_balls": 0.1576,
                "accurate_long_balls": 0.1105,
                "total_opp_half_passes": 7.8455,
                "accurate_opp_half_passes": 6.5182,
                "crosses_total": 1.4627,
                "crosses_accurate": 0.6526,
                "touches": 18.6796,
                "possession_lost": 4.7949,
                "dispossessed": 0.1958,
                "duels_lost": 2.3446,
                "aerial_lost": 0.6593,
                "total_contest": 0.9107,
                "won_contest": 0.4654,
                "ball_recovery": 1.7339,
                "challenges_lost": 0.6261,
                "fouls": 0.1023,
                "fouls_drawn": 0.2413,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.203,
                "tackles_won": 0.6349,
                "tackles": 0.7408,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.057,
                "big_chances_missed": 0.1633,
                "xgot": 0.0246,
                "offsides": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 21.0007,
                "progressive_carries": 0.9271,
                "shots_off_target": 0.4852,
                "bench_appearance_probability": 0.573,
                "bench_expected_minutes": 25.61
              },
              "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.0706,
                "goal_rate": 0.0917,
                "goals": 0,
                "shots_on_target": 0.2356,
                "total_shots": 0.7208,
                "expected_assists": 0.0497,
                "key_pass": 0.5391,
                "rating": 6.6745,
                "minutes": 25.61,
                "total_pass": 10.4055,
                "accurate_pass": 8.6157,
                "duels_won": 1.7996,
                "total_long_balls": 0.1576,
                "accurate_long_balls": 0.1105,
                "total_opp_half_passes": 7.8455,
                "accurate_opp_half_passes": 6.5182,
                "crosses_total": 1.4627,
                "crosses_accurate": 0.6526,
                "touches": 18.6796,
                "possession_lost": 4.7949,
                "dispossessed": 0.1958,
                "duels_lost": 2.3446,
                "aerial_lost": 0.6593,
                "total_contest": 0.9107,
                "won_contest": 0.4654,
                "ball_recovery": 1.7339,
                "challenges_lost": 0.6261,
                "fouls": 0.1023,
                "fouls_drawn": 0.2413,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.203,
                "tackles_won": 0.6349,
                "tackles": 0.7408,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.057,
                "big_chances_missed": 0.1633,
                "xgot": 0.0246,
                "offsides": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 21.0007,
                "progressive_carries": 0.9271,
                "shots_off_target": 0.4852,
                "bench_appearance_probability": 0.573,
                "bench_expected_minutes": 25.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "expected_goals": 0.0412,
                "goal_rate": 0.0917,
                "goals": 0,
                "shots_on_target": 0.2356,
                "total_shots": 0.7208,
                "expected_assists": 0.029,
                "key_pass": 0.5391,
                "rating": 6.6745,
                "minutes": 25.61,
                "total_pass": 10.4055,
                "accurate_pass": 8.6157,
                "duels_won": 1.7996,
                "total_long_balls": 0.1576,
                "accurate_long_balls": 0.1105,
                "total_opp_half_passes": 7.8455,
                "accurate_opp_half_passes": 6.5182,
                "crosses_total": 1.4627,
                "crosses_accurate": 0.6526,
                "touches": 18.6796,
                "possession_lost": 4.7949,
                "dispossessed": 0.1958,
                "duels_lost": 2.3446,
                "aerial_lost": 0.6593,
                "total_contest": 0.9107,
                "won_contest": 0.4654,
                "ball_recovery": 1.7339,
                "challenges_lost": 0.6261,
                "fouls": 0.1023,
                "fouls_drawn": 0.2413,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.203,
                "tackles_won": 0.6349,
                "tackles": 0.7408,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.057,
                "big_chances_missed": 0.1633,
                "xgot": 0.0143,
                "offsides": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 21.0007,
                "progressive_carries": 0.9271,
                "shots_off_target": 0.4852,
                "bench_appearance_probability": 0.573,
                "bench_expected_minutes": 25.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.175,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 0.573
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0706,
                  "after": 0.0412
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0497,
                  "after": 0.029
                }
              ]
            },
            {
              "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": {
                "expected_goals": 0.0412,
                "goal_rate": 0.0917,
                "goals": 0,
                "shots_on_target": 0.2356,
                "total_shots": 0.7208,
                "expected_assists": 0.029,
                "key_pass": 0.5391,
                "rating": 6.6745,
                "minutes": 25.61,
                "total_pass": 10.4055,
                "accurate_pass": 8.6157,
                "duels_won": 1.7996,
                "total_long_balls": 0.1576,
                "accurate_long_balls": 0.1105,
                "total_opp_half_passes": 7.8455,
                "accurate_opp_half_passes": 6.5182,
                "crosses_total": 1.4627,
                "crosses_accurate": 0.6526,
                "touches": 18.6796,
                "possession_lost": 4.7949,
                "dispossessed": 0.1958,
                "duels_lost": 2.3446,
                "aerial_lost": 0.6593,
                "total_contest": 0.9107,
                "won_contest": 0.4654,
                "ball_recovery": 1.7339,
                "challenges_lost": 0.6261,
                "fouls": 0.1023,
                "fouls_drawn": 0.2413,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.203,
                "tackles_won": 0.6349,
                "tackles": 0.7408,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.057,
                "big_chances_missed": 0.1633,
                "xgot": 0.0143,
                "offsides": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 21.0007,
                "progressive_carries": 0.9271,
                "shots_off_target": 0.4852,
                "bench_appearance_probability": 0.573,
                "bench_expected_minutes": 25.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.175,
                "creation_factor": 0.8,
                "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",
                "ranking_status": "combined",
                "global_player_rank": 3167,
                "fifa_rank": 1575.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.0412,
                "goal_rate": 0.0917,
                "goals": 0,
                "shots_on_target": 0.2356,
                "total_shots": 0.7208,
                "expected_assists": 0.029,
                "key_pass": 0.5391,
                "rating": 6.6745,
                "minutes": 25.61,
                "total_pass": 10.4055,
                "accurate_pass": 8.6157,
                "duels_won": 1.7996,
                "total_long_balls": 0.1576,
                "accurate_long_balls": 0.1105,
                "total_opp_half_passes": 7.8455,
                "accurate_opp_half_passes": 6.5182,
                "crosses_total": 1.4627,
                "crosses_accurate": 0.6526,
                "touches": 18.6796,
                "possession_lost": 4.7949,
                "dispossessed": 0.1958,
                "duels_lost": 2.3446,
                "aerial_lost": 0.6593,
                "total_contest": 0.9107,
                "won_contest": 0.4654,
                "ball_recovery": 1.7339,
                "challenges_lost": 0.6261,
                "fouls": 0.1023,
                "fouls_drawn": 0.2413,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.203,
                "tackles_won": 0.6349,
                "tackles": 0.7408,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.057,
                "big_chances_missed": 0.1633,
                "xgot": 0.0143,
                "offsides": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 21.0007,
                "progressive_carries": 0.9271,
                "shots_off_target": 0.4852,
                "bench_appearance_probability": 0.573,
                "bench_expected_minutes": 25.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0398,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.175,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0398,
                "goal_rate": 0.0917,
                "scorer_weight": 0.0484,
                "squad_weight_total": 0.9718,
                "weight_share": 0.0498,
                "finishing_factor": 1.175,
                "appearance_weight": 0.573,
                "weight_rank": 6,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.0412,
                "goal_rate": 0.0917,
                "goals": 0,
                "shots_on_target": 0.2356,
                "total_shots": 0.7208,
                "expected_assists": 0.029,
                "key_pass": 0.5391,
                "rating": 6.6745,
                "minutes": 25.61,
                "total_pass": 10.4055,
                "accurate_pass": 8.6157,
                "duels_won": 1.7996,
                "total_long_balls": 0.1576,
                "accurate_long_balls": 0.1105,
                "total_opp_half_passes": 7.8455,
                "accurate_opp_half_passes": 6.5182,
                "crosses_total": 1.4627,
                "crosses_accurate": 0.6526,
                "touches": 18.6796,
                "possession_lost": 4.7949,
                "dispossessed": 0.1958,
                "duels_lost": 2.3446,
                "aerial_lost": 0.6593,
                "total_contest": 0.9107,
                "won_contest": 0.4654,
                "ball_recovery": 1.7339,
                "challenges_lost": 0.6261,
                "fouls": 0.1023,
                "fouls_drawn": 0.2413,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.203,
                "tackles_won": 0.6349,
                "tackles": 0.7408,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.057,
                "big_chances_missed": 0.1633,
                "xgot": 0.0143,
                "offsides": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 21.0007,
                "progressive_carries": 0.9271,
                "shots_off_target": 0.4852,
                "bench_appearance_probability": 0.573,
                "bench_expected_minutes": 25.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0398,
                "projected_assists": 0,
                "assist_probability": 0.0283,
                "finishing_factor": 1.175,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0283,
                "assist_rate": 0.0,
                "provider_weight": 0.0232,
                "squad_weight_total": 0.6412,
                "weight_share": 0.0362,
                "creation_factor": 0.8,
                "appearance_weight": 0.573,
                "weight_rank": 9,
                "eligible_players": 13
              }
            }
          ]
        }
      },
      "substitutes": {
        "Hugo Duro": {
          "player_id": 909119,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 180,
          "market_value": 11600000,
          "stats": {
            "expected_goals": 0.0784,
            "goal_rate": 0.1567,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0046,
            "key_pass": 0,
            "rating": 6.5769,
            "minutes": 23,
            "total_pass": 5,
            "accurate_pass": 4,
            "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": 9,
            "possession_lost": 2.4976,
            "dispossessed": 0.3243,
            "duels_lost": 2,
            "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.0433,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 3,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.599,
            "bench_expected_minutes": 22.57,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.447,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0735,
            "projected_assists": 0,
            "assist_probability": 0.0046,
            "finishing_factor": 1.1573,
            "creation_factor": 0.8681,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 54,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1361,
                "expected_assists": 0.0012,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 6,
                "accurate_pass": 4,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5497,
                "expected_assists": 0.0065,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 20,
                "accurate_pass": 14,
                "clearances": 1,
                "aerial_won": 4,
                "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": 16416297,
              "match_date": "2026-09-20",
              "home_team": "Valencia",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 82,
                "rating": 6.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.3599,
                "expected_assists": 0.0301,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "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": 16416334,
              "match_date": "2026-09-15",
              "home_team": "Deportivo Alavés",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 63,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1376,
                "expected_assists": 0.001,
                "total_shots": 2,
                "total_pass": 7,
                "accurate_pass": 4,
                "tackles": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416330,
              "match_date": "2026-09-11",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 15,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "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": 16416325,
              "match_date": "2026-09-06",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 14,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 6,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416291,
              "match_date": "2026-08-30",
              "home_team": "Deportivo de A Coruña",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 30,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0103,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 11,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421049,
              "match_date": "2026-08-25",
              "home_team": "Valencia",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 55,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0144,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 4,
                "key_pass": 2,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 3,
                "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": 16416298,
              "match_date": "2026-08-22",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_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": 14083739,
              "match_date": "2026-05-23",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 80,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.215,
                "expected_assists": 0.0007,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 8,
                "accurate_pass": 4,
                "tackles": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3220,
            "combined_rank_score": 1167.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 776.0,
            "sofascore_rating": 6.6389,
            "sofascore_appearances": 36.0,
            "fifa_rank": 1559.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.5769,
            "source_file": "data/player_rankings.csv",
            "player_name": "Hugo Duro",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Azor Matusiwa",
                  "ranking": 3215
                },
                {
                  "player_name": "Eljif Elmas",
                  "ranking": 3216
                },
                {
                  "player_name": "Lazaros Rota",
                  "ranking": 3217
                },
                {
                  "player_name": "Joshua Zirkzee",
                  "ranking": 3218
                },
                {
                  "player_name": "Camilo Vargas",
                  "ranking": 3219
                }
              ],
              "lower": [
                {
                  "player_name": "Chris Führich",
                  "ranking": 3221
                },
                {
                  "player_name": "Lucien Agoumé",
                  "ranking": 3222
                },
                {
                  "player_name": "Maarten Vandevoordt",
                  "ranking": 3223
                },
                {
                  "player_name": "Nikola Vasilj",
                  "ranking": 3224
                },
                {
                  "player_name": "Wouter Burger",
                  "ranking": 3225
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.76,
          "history_matches": 45,
          "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": 45,
            "data_confidence": 0.76,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 22.57,
            "bench_appearance_prob": 0.599,
            "market_value_adjustment": 1.0011,
            "fbref_prior_metrics": {
              "squad": "Valencia",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 1.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 20.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0667
            },
            "rationale": "Bench projection scaled from XGBoost F_service (45 historical appearances) to 22.6 expected mins (appearance prob 0.60); FBref playing time empirical prior: 2.0 sub appearances, 20.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1199,
                "goals": 0.1466,
                "goal_rate": 0.1466,
                "shots_on_target": 0.3041,
                "total_shots": 0.7009,
                "expected_assists": 0.0071,
                "key_pass": 0.2337,
                "rating": 6.5769,
                "minutes": 21.06,
                "total_pass": 4.9713,
                "accurate_pass": 3.9114,
                "duels_won": 1.16,
                "total_long_balls": 0.1855,
                "accurate_long_balls": 0.1855,
                "total_opp_half_passes": 3.0126,
                "accurate_opp_half_passes": 2.0479,
                "crosses_total": 0.0827,
                "crosses_accurate": 0.0,
                "touches": 8.4423,
                "possession_lost": 2.3279,
                "dispossessed": 0.3239,
                "duels_lost": 1.9031,
                "aerial_lost": 0.9825,
                "total_contest": 0.2034,
                "won_contest": 0.0118,
                "ball_recovery": 0.1986,
                "challenges_lost": 0.1655,
                "fouls": 0.3223,
                "fouls_drawn": 0.358,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0703,
                "tackles_won": 0.1531,
                "tackles": 0.1531,
                "clearances": 0.234,
                "blocks": 0.1539,
                "big_chances_created": 0.0448,
                "big_chances_missed": 0.2729,
                "xgot": 0.0662,
                "offsides": 0.0,
                "ball_carries": 1.1639,
                "total_progression": 2.6582,
                "progressive_carries": 0.0679,
                "shots_off_target": 0.3968
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 54.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Real Sociedad",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.1084,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-15",
                    "opponent": "Deportivo Alavés",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-11",
                    "opponent": "Sevilla",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "FC Barcelona",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0666,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-30",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0566,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-25",
                    "opponent": "Real Betis",
                    "minutes": 55.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Celta Vigo",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0409,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "FC Barcelona",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.2059,
                  "totalOppositionHalfPasses": 5.3389,
                  "accurateOppositionHalfPasses": 3.4804,
                  "accuratePass": 6.3794,
                  "totalShots": 1.3007
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.1199129968881607,
                    "model_output": 0.1199,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0885
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0104
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0073
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0046
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0047
                        }
                      ],
                      "others": -0.0019,
                      "total": 0.1199,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.592683
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.090583
                        },
                        {
                          "name": "goals",
                          "margin": -0.063009
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.040298
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.03924
                        }
                      ],
                      "others_margin": -0.015484
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.14662565290927887,
                    "model_output": 0.1466,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0699
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0091
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0087
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0072
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0058
                        }
                      ],
                      "others": 0.016,
                      "total": 0.1466,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.424209
                        },
                        {
                          "name": "goals",
                          "margin": -0.071604
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.068392
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.056342
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.045576
                        }
                      ],
                      "others_margin": 0.116298
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.30407649278640747,
                    "model_output": 0.3041,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2084
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0191
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0118
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0109
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0103
                        }
                      ],
                      "others": 0.0078,
                      "total": 0.3041,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.491966
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.059908
                        },
                        {
                          "name": "goals",
                          "margin": -0.038874
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.037409
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.035516
                        }
                      ],
                      "others_margin": 0.025427
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.7008634805679321,
                    "model_output": 0.7009,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.58
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0346
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0286
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0265
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": 0.0254
                        }
                      ],
                      "others": -0.0355,
                      "total": 0.7009,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.579954
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.034615
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.028566
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.026516
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": 0.025367
                        }
                      ],
                      "others_margin": -0.035601
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0071012224070727825,
                    "model_output": 0.0071,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0254
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0096
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0055
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0031
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.002
                        }
                      ],
                      "others": -0.0117,
                      "total": 0.0071,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.501829
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.281015
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.208107
                        },
                        {
                          "name": "rating",
                          "margin": -0.139834
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.099826
                        }
                      ],
                      "others_margin": -0.974914
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.2336968630552292,
                    "model_output": 0.2337,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2562
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0346
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.026
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0191
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0167
                        }
                      ],
                      "others": -0.0942,
                      "total": 0.2337,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.472517
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.085208
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.069169
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.053969
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.049751
                        }
                      ],
                      "others_margin": -0.33813
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.576937675476074,
                    "model_output": 6.5769,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0478
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0247
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0136
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0109
                        },
                        {
                          "name": "touches",
                          "contribution": -0.01
                        }
                      ],
                      "others": -0.0844,
                      "total": 6.5769,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.04783
                        },
                        {
                          "name": "rating",
                          "margin": -0.024655
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013603
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.010897
                        },
                        {
                          "name": "touches",
                          "margin": -0.009998
                        }
                      ],
                      "others_margin": -0.084358
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 45,
                  "role_matches": 18,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0011, quality 0.541)",
              "stats": {
                "expected_goals": 0.12,
                "goals": 0.1468,
                "goal_rate": 0.1468,
                "shots_on_target": 0.3044,
                "total_shots": 0.7016,
                "expected_assists": 0.0071,
                "key_pass": 0.234,
                "rating": 6.5769,
                "minutes": 21.06,
                "total_pass": 4.9768,
                "accurate_pass": 3.9157,
                "duels_won": 1.1613,
                "total_long_balls": 0.1857,
                "accurate_long_balls": 0.1857,
                "total_opp_half_passes": 3.0159,
                "accurate_opp_half_passes": 2.0502,
                "crosses_total": 0.0828,
                "crosses_accurate": 0.0,
                "touches": 8.4516,
                "possession_lost": 2.3305,
                "dispossessed": 0.3243,
                "duels_lost": 1.9052,
                "aerial_lost": 0.9836,
                "total_contest": 0.2036,
                "won_contest": 0.0118,
                "ball_recovery": 0.1988,
                "challenges_lost": 0.1657,
                "fouls": 0.3227,
                "fouls_drawn": 0.3584,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0704,
                "tackles_won": 0.1533,
                "tackles": 0.1533,
                "clearances": 0.2343,
                "blocks": 0.1541,
                "big_chances_created": 0.0448,
                "big_chances_missed": 0.2732,
                "xgot": 0.0663,
                "offsides": 0.0,
                "ball_carries": 1.1652,
                "total_progression": 2.6611,
                "progressive_carries": 0.068,
                "shots_off_target": 0.3972
              },
              "params": {
                "market_value_eur": 11600000,
                "quality_factor": 0.5411,
                "boost_factor": 1.0011,
                "reference_quality": 0.505,
                "history_matches": 45,
                "history_shrink": 0.1,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0043)",
              "stats": {
                "expected_goals": 0.12,
                "goals": 0.1462,
                "goal_rate": 0.1462,
                "shots_on_target": 0.3031,
                "total_shots": 0.6986,
                "expected_assists": 0.0071,
                "key_pass": 0.234,
                "rating": 6.5769,
                "minutes": 21.06,
                "total_pass": 4.9768,
                "accurate_pass": 3.9157,
                "duels_won": 1.1613,
                "total_long_balls": 0.1857,
                "accurate_long_balls": 0.1857,
                "total_opp_half_passes": 3.0159,
                "accurate_opp_half_passes": 2.0502,
                "crosses_total": 0.0824,
                "crosses_accurate": 0.0,
                "touches": 8.4516,
                "possession_lost": 2.3305,
                "dispossessed": 0.3243,
                "duels_lost": 1.9052,
                "aerial_lost": 0.9836,
                "total_contest": 0.2036,
                "won_contest": 0.0118,
                "ball_recovery": 0.1988,
                "challenges_lost": 0.1657,
                "fouls": 0.3223,
                "fouls_drawn": 0.3589,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0711,
                "tackles_won": 0.1526,
                "tackles": 0.1533,
                "clearances": 0.2343,
                "blocks": 0.1541,
                "big_chances_created": 0.0448,
                "big_chances_missed": 0.2732,
                "xgot": 0.0663,
                "offsides": 0.0,
                "ball_carries": 1.1652,
                "total_progression": 2.6611,
                "progressive_carries": 0.068,
                "shots_off_target": 0.3972
              },
              "params": {
                "blend_weight": 0.0043,
                "history_matches": 45,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.234,
                "prior_reliability": 0.0667,
                "competition": "La Liga",
                "squad": "Valencia"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 21.1 to 22.6 expected minutes (appearance prob 0.60)",
              "stats": {
                "expected_goals": 0.1286,
                "goals": 0.1567,
                "goal_rate": 0.1567,
                "shots_on_target": 0.3248,
                "total_shots": 0.7505,
                "expected_assists": 0.0076,
                "key_pass": 0.2508,
                "rating": 6.5769,
                "minutes": 22.57,
                "total_pass": 5.3336,
                "accurate_pass": 4.1965,
                "duels_won": 1.2446,
                "total_long_balls": 0.199,
                "accurate_long_balls": 0.199,
                "total_opp_half_passes": 3.2321,
                "accurate_opp_half_passes": 2.1972,
                "crosses_total": 0.0883,
                "crosses_accurate": 0.0,
                "touches": 9.0576,
                "possession_lost": 2.4976,
                "dispossessed": 0.3243,
                "duels_lost": 2.0418,
                "aerial_lost": 0.9836,
                "total_contest": 0.2182,
                "won_contest": 0.0126,
                "ball_recovery": 0.2131,
                "challenges_lost": 0.1657,
                "fouls": 0.3454,
                "fouls_drawn": 0.3846,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0762,
                "tackles_won": 0.1635,
                "tackles": 0.1643,
                "clearances": 0.2511,
                "blocks": 0.1651,
                "big_chances_created": 0.048,
                "big_chances_missed": 0.2928,
                "xgot": 0.0711,
                "offsides": 0.0,
                "ball_carries": 1.2487,
                "total_progression": 2.8519,
                "progressive_carries": 0.0729,
                "shots_off_target": 0.4257,
                "bench_appearance_probability": 0.599,
                "bench_expected_minutes": 22.57
              },
              "params": {
                "expected_minutes": 22.57,
                "projection_minutes": 21.06,
                "minutes_scale": 1.0717,
                "appearance_probability": 0.599
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1286,
                "goals": 0.1567,
                "goal_rate": 0.1567,
                "shots_on_target": 0.3248,
                "total_shots": 0.7505,
                "expected_assists": 0.0076,
                "key_pass": 0.2508,
                "rating": 6.5769,
                "minutes": 22.57,
                "total_pass": 5.3336,
                "accurate_pass": 4.1965,
                "duels_won": 1.2446,
                "total_long_balls": 0.199,
                "accurate_long_balls": 0.199,
                "total_opp_half_passes": 3.2321,
                "accurate_opp_half_passes": 2.1972,
                "crosses_total": 0.0883,
                "crosses_accurate": 0.0,
                "touches": 9.0576,
                "possession_lost": 2.4976,
                "dispossessed": 0.3243,
                "duels_lost": 2.0418,
                "aerial_lost": 0.9836,
                "total_contest": 0.2182,
                "won_contest": 0.0126,
                "ball_recovery": 0.2131,
                "challenges_lost": 0.1657,
                "fouls": 0.3454,
                "fouls_drawn": 0.3846,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0762,
                "tackles_won": 0.1635,
                "tackles": 0.1643,
                "clearances": 0.2511,
                "blocks": 0.1651,
                "big_chances_created": 0.048,
                "big_chances_missed": 0.2928,
                "xgot": 0.0711,
                "offsides": 0.0,
                "ball_carries": 1.2487,
                "total_progression": 2.8519,
                "progressive_carries": 0.0729,
                "shots_off_target": 0.4257,
                "bench_appearance_probability": 0.599,
                "bench_expected_minutes": 22.57
              },
              "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.1286,
                "goal_rate": 0.1567,
                "goals": 0,
                "shots_on_target": 0.3248,
                "total_shots": 0.7505,
                "expected_assists": 0.0076,
                "key_pass": 0.2508,
                "rating": 6.5769,
                "minutes": 22.57,
                "total_pass": 5.3336,
                "accurate_pass": 4.1965,
                "duels_won": 1.2446,
                "total_long_balls": 0.199,
                "accurate_long_balls": 0.199,
                "total_opp_half_passes": 3.2321,
                "accurate_opp_half_passes": 2.1972,
                "crosses_total": 0.0883,
                "crosses_accurate": 0.0,
                "touches": 9.0576,
                "possession_lost": 2.4976,
                "dispossessed": 0.3243,
                "duels_lost": 2.0418,
                "aerial_lost": 0.9836,
                "total_contest": 0.2182,
                "won_contest": 0.0126,
                "ball_recovery": 0.2131,
                "challenges_lost": 0.1657,
                "fouls": 0.3454,
                "fouls_drawn": 0.3846,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0762,
                "tackles_won": 0.1635,
                "tackles": 0.1643,
                "clearances": 0.2511,
                "blocks": 0.1651,
                "big_chances_created": 0.048,
                "big_chances_missed": 0.2928,
                "xgot": 0.0711,
                "offsides": 0.0,
                "ball_carries": 1.2487,
                "total_progression": 2.8519,
                "progressive_carries": 0.0729,
                "shots_off_target": 0.4257,
                "bench_appearance_probability": 0.599,
                "bench_expected_minutes": 22.57,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "expected_goals": 0.0784,
                "goal_rate": 0.1567,
                "goals": 0,
                "shots_on_target": 0.3248,
                "total_shots": 0.7505,
                "expected_assists": 0.0046,
                "key_pass": 0.2508,
                "rating": 6.5769,
                "minutes": 22.57,
                "total_pass": 5.3336,
                "accurate_pass": 4.1965,
                "duels_won": 1.2446,
                "total_long_balls": 0.199,
                "accurate_long_balls": 0.199,
                "total_opp_half_passes": 3.2321,
                "accurate_opp_half_passes": 2.1972,
                "crosses_total": 0.0883,
                "crosses_accurate": 0.0,
                "touches": 9.0576,
                "possession_lost": 2.4976,
                "dispossessed": 0.3243,
                "duels_lost": 2.0418,
                "aerial_lost": 0.9836,
                "total_contest": 0.2182,
                "won_contest": 0.0126,
                "ball_recovery": 0.2131,
                "challenges_lost": 0.1657,
                "fouls": 0.3454,
                "fouls_drawn": 0.3846,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0762,
                "tackles_won": 0.1635,
                "tackles": 0.1643,
                "clearances": 0.2511,
                "blocks": 0.1651,
                "big_chances_created": 0.048,
                "big_chances_missed": 0.2928,
                "xgot": 0.0433,
                "offsides": 0.0,
                "ball_carries": 1.2487,
                "total_progression": 2.8519,
                "progressive_carries": 0.0729,
                "shots_off_target": 0.4257,
                "bench_appearance_probability": 0.599,
                "bench_expected_minutes": 22.57,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1573,
                "creation_factor": 0.8681
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 0.599
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1286,
                  "after": 0.0784
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 77.0)",
              "stats": {
                "expected_goals": 0.0784,
                "goal_rate": 0.1567,
                "goals": 0,
                "shots_on_target": 0.3248,
                "total_shots": 0.7505,
                "expected_assists": 0.0046,
                "key_pass": 0.2508,
                "rating": 6.5769,
                "minutes": 22.57,
                "total_pass": 5.3336,
                "accurate_pass": 4.1965,
                "duels_won": 1.2446,
                "total_long_balls": 0.199,
                "accurate_long_balls": 0.199,
                "total_opp_half_passes": 3.2321,
                "accurate_opp_half_passes": 2.1972,
                "crosses_total": 0.0883,
                "crosses_accurate": 0.0,
                "touches": 9.0576,
                "possession_lost": 2.4976,
                "dispossessed": 0.3243,
                "duels_lost": 2.0418,
                "aerial_lost": 0.9836,
                "total_contest": 0.2182,
                "won_contest": 0.0126,
                "ball_recovery": 0.2131,
                "challenges_lost": 0.1657,
                "fouls": 0.3454,
                "fouls_drawn": 0.3846,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0762,
                "tackles_won": 0.1635,
                "tackles": 0.1643,
                "clearances": 0.2511,
                "blocks": 0.1651,
                "big_chances_created": 0.048,
                "big_chances_missed": 0.2928,
                "xgot": 0.0433,
                "offsides": 0.0,
                "ball_carries": 1.2487,
                "total_progression": 2.8519,
                "progressive_carries": 0.0729,
                "shots_off_target": 0.4257,
                "bench_appearance_probability": 0.599,
                "bench_expected_minutes": 22.57,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1573,
                "creation_factor": 0.8681,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3220,
                "fifa_rank": 1559.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.0784,
                "goal_rate": 0.1567,
                "goals": 0,
                "shots_on_target": 0.3248,
                "total_shots": 0.7505,
                "expected_assists": 0.0046,
                "key_pass": 0.2508,
                "rating": 6.5769,
                "minutes": 22.57,
                "total_pass": 5.3336,
                "accurate_pass": 4.1965,
                "duels_won": 1.2446,
                "total_long_balls": 0.199,
                "accurate_long_balls": 0.199,
                "total_opp_half_passes": 3.2321,
                "accurate_opp_half_passes": 2.1972,
                "crosses_total": 0.0883,
                "crosses_accurate": 0.0,
                "touches": 9.0576,
                "possession_lost": 2.4976,
                "dispossessed": 0.3243,
                "duels_lost": 2.0418,
                "aerial_lost": 0.9836,
                "total_contest": 0.2182,
                "won_contest": 0.0126,
                "ball_recovery": 0.2131,
                "challenges_lost": 0.1657,
                "fouls": 0.3454,
                "fouls_drawn": 0.3846,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0762,
                "tackles_won": 0.1635,
                "tackles": 0.1643,
                "clearances": 0.2511,
                "blocks": 0.1651,
                "big_chances_created": 0.048,
                "big_chances_missed": 0.2928,
                "xgot": 0.0433,
                "offsides": 0.0,
                "ball_carries": 1.2487,
                "total_progression": 2.8519,
                "progressive_carries": 0.0729,
                "shots_off_target": 0.4257,
                "bench_appearance_probability": 0.599,
                "bench_expected_minutes": 22.57,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0735,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1573,
                "creation_factor": 0.8681,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0735,
                "goal_rate": 0.1567,
                "scorer_weight": 0.0907,
                "squad_weight_total": 0.9718,
                "weight_share": 0.0934,
                "finishing_factor": 1.1573,
                "appearance_weight": 0.599,
                "weight_rank": 5,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.0784,
                "goal_rate": 0.1567,
                "goals": 0,
                "shots_on_target": 0.3248,
                "total_shots": 0.7505,
                "expected_assists": 0.0046,
                "key_pass": 0.2508,
                "rating": 6.5769,
                "minutes": 22.57,
                "total_pass": 5.3336,
                "accurate_pass": 4.1965,
                "duels_won": 1.2446,
                "total_long_balls": 0.199,
                "accurate_long_balls": 0.199,
                "total_opp_half_passes": 3.2321,
                "accurate_opp_half_passes": 2.1972,
                "crosses_total": 0.0883,
                "crosses_accurate": 0.0,
                "touches": 9.0576,
                "possession_lost": 2.4976,
                "dispossessed": 0.3243,
                "duels_lost": 2.0418,
                "aerial_lost": 0.9836,
                "total_contest": 0.2182,
                "won_contest": 0.0126,
                "ball_recovery": 0.2131,
                "challenges_lost": 0.1657,
                "fouls": 0.3454,
                "fouls_drawn": 0.3846,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0762,
                "tackles_won": 0.1635,
                "tackles": 0.1643,
                "clearances": 0.2511,
                "blocks": 0.1651,
                "big_chances_created": 0.048,
                "big_chances_missed": 0.2928,
                "xgot": 0.0433,
                "offsides": 0.0,
                "ball_carries": 1.2487,
                "total_progression": 2.8519,
                "progressive_carries": 0.0729,
                "shots_off_target": 0.4257,
                "bench_appearance_probability": 0.599,
                "bench_expected_minutes": 22.57,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0735,
                "projected_assists": 0,
                "assist_probability": 0.0046,
                "finishing_factor": 1.1573,
                "creation_factor": 0.8681,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0046,
                "assist_rate": 0.0,
                "provider_weight": 0.004,
                "squad_weight_total": 0.6412,
                "weight_share": 0.0062,
                "creation_factor": 0.8681,
                "appearance_weight": 0.599,
                "weight_rank": 13,
                "eligible_players": 13
              }
            }
          ]
        },
        "Diego López": {
          "player_id": 998950,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 16,
          "height": 172,
          "market_value": 9600000,
          "stats": {
            "expected_goals": 0.0412,
            "goal_rate": 0.0917,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.029,
            "key_pass": 1,
            "rating": 6.6745,
            "minutes": 26,
            "total_pass": 10,
            "accurate_pass": 9,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 7,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 19,
            "possession_lost": 4.7949,
            "dispossessed": 0.1958,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0143,
            "offsides": 0,
            "ball_carries": 4,
            "total_progression": 21,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.573,
            "bench_expected_minutes": 25.61,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.447,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0398,
            "projected_assists": 0,
            "assist_probability": 0.0283,
            "finishing_factor": 1.175,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 14083739,
              "match_date": "2026-05-23",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 52,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2276,
                "expected_assists": 0.5462,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 11,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083687,
              "match_date": "2026-05-17",
              "home_team": "Real Sociedad",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 74,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0667,
                "expected_assists": 0.1734,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 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": 14083639,
              "match_date": "2026-05-14",
              "home_team": "Valencia",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1358,
                "expected_assists": 0.0503,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 42,
                "accurate_pass": 32,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 9,
                "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": 14083539,
              "match_date": "2026-05-10",
              "home_team": "Athletic Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 70,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0115,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 17,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083476,
              "match_date": "2026-05-02",
              "home_team": "Valencia",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 31,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0379,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083255,
              "match_date": "2026-04-25",
              "home_team": "Valencia",
              "away_team": "Girona FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Girona FC",
              "stats": {
                "minutes": 25,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.015,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083270,
              "match_date": "2026-04-21",
              "home_team": "Mallorca",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 60,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0037,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 14,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083132,
              "match_date": "2026-04-11",
              "home_team": "Elche",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Elche",
              "stats": {
                "minutes": 30,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0653,
                "expected_assists": 0.1156,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 9,
                "accurate_pass": 9,
                "key_pass": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083684,
              "match_date": "2026-03-21",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 10,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 4
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083627,
              "match_date": "2026-03-14",
              "home_team": "Real Oviedo",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 20,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0586,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 1,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3167,
            "combined_rank_score": 1133.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 692.0,
            "sofascore_rating": 6.7088,
            "sofascore_appearances": 34.0,
            "fifa_rank": 1575.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.6745,
            "source_file": "data/player_rankings.csv",
            "player_name": "Diego López",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jack Clarke",
                  "ranking": 3162
                },
                {
                  "player_name": "Vitor Reis",
                  "ranking": 3163
                },
                {
                  "player_name": "Nicolás Fernández",
                  "ranking": 3164
                },
                {
                  "player_name": "Žan Vipotnik",
                  "ranking": 3165
                },
                {
                  "player_name": "Mykhailo Mudryk",
                  "ranking": 3166
                }
              ],
              "lower": [
                {
                  "player_name": "Taty Castellanos",
                  "ranking": 3168
                },
                {
                  "player_name": "Timothy Castagne",
                  "ranking": 3169
                },
                {
                  "player_name": "Edson Álvarez",
                  "ranking": 3170
                },
                {
                  "player_name": "Kevin Trapp",
                  "ranking": 3171
                },
                {
                  "player_name": "Sean Longstaff",
                  "ranking": 3172
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "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.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.610281584086223,
            "bench_appearance_prob": 0.5731946174584648,
            "market_value_adjustment": 1.0005,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (34 historical appearances) to 25.6 expected mins (appearance prob 0.57)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0582,
                "goals": 0.0756,
                "goal_rate": 0.0756,
                "shots_on_target": 0.1941,
                "total_shots": 0.5938,
                "expected_assists": 0.0409,
                "key_pass": 0.4441,
                "rating": 6.6745,
                "minutes": 21.11,
                "total_pass": 8.5727,
                "accurate_pass": 7.0982,
                "duels_won": 1.4827,
                "total_long_balls": 0.1298,
                "accurate_long_balls": 0.0911,
                "total_opp_half_passes": 6.4637,
                "accurate_opp_half_passes": 5.3701,
                "crosses_total": 1.2051,
                "crosses_accurate": 0.5376,
                "touches": 15.3895,
                "possession_lost": 3.9503,
                "dispossessed": 0.1957,
                "duels_lost": 1.9316,
                "aerial_lost": 0.659,
                "total_contest": 0.7503,
                "won_contest": 0.3834,
                "ball_recovery": 1.4285,
                "challenges_lost": 0.6258,
                "fouls": 0.0843,
                "fouls_drawn": 0.1988,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1672,
                "tackles_won": 0.523,
                "tackles": 0.6103,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.047,
                "big_chances_missed": 0.1345,
                "xgot": 0.0203,
                "offsides": 0.0,
                "ball_carries": 2.9642,
                "total_progression": 17.3017,
                "progressive_carries": 0.7638,
                "shots_off_target": 0.3997
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-05-23",
                    "opponent": "FC Barcelona",
                    "minutes": 52.0,
                    "is_starting": true,
                    "weight": 0.1506,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Sociedad",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.128,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-14",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1088,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Athletic Club",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0925,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Atlético Madrid",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.0786,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Girona FC",
                    "minutes": 25.0,
                    "is_starting": false,
                    "weight": 0.0668,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Mallorca",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-11",
                    "opponent": "Elche",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0483,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Sevilla",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.041,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Real Oviedo",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.0692,
                  "totalOppositionHalfPasses": 10.9174,
                  "accurateOppositionHalfPasses": 8.744,
                  "accuratePass": 13.5639,
                  "totalShots": 0.8797
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0581662617623806,
                    "model_output": 0.0582,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0871
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0181
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0051
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0039
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0037
                        }
                      ],
                      "others": -0.0218,
                      "total": 0.0582,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.579908
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.178274
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.056033
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.045849
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.045058
                        }
                      ],
                      "others_margin": -0.319394
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.07557403296232224,
                    "model_output": 0.0756,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0835
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0117
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0081
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.004
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0038
                        }
                      ],
                      "others": -0.0156,
                      "total": 0.0756,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.5327
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.103398
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.0788
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.04164
                        },
                        {
                          "name": "goals",
                          "margin": -0.041247
                        }
                      ],
                      "others_margin": -0.186875
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.19413262605667114,
                    "model_output": 0.1941,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2199
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0289
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0223
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0204
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0139
                        }
                      ],
                      "others": -0.0367,
                      "total": 0.1941,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.527788
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.095942
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.080632
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.080067
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.058528
                        }
                      ],
                      "others_margin": -0.172996
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.593796968460083,
                    "model_output": 0.5938,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4847
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1401
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0422
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0245
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0195
                        }
                      ],
                      "others": -0.0759,
                      "total": 0.5938,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.484669
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.140078
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.042239
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.024452
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.019545
                        }
                      ],
                      "others_margin": -0.075969
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04094249755144119,
                    "model_output": 0.0409,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0201
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0054
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0044
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.003
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0022
                        }
                      ],
                      "others": -0.0052,
                      "total": 0.0409,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.373435
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.114477
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.093485
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.06438
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.047658
                        }
                      ],
                      "others_margin": -0.117899
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.4441334903240204,
                    "model_output": 0.4441,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2447
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0264
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0164
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0159
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0155
                        }
                      ],
                      "others": -0.0021,
                      "total": 0.4441,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.445619
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.058895
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.03603
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.035042
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.034079
                        }
                      ],
                      "others_margin": -0.004851
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.67446231842041,
                    "model_output": 6.6745,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0538
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0142
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0107
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0107
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0102
                        }
                      ],
                      "others": -0.044,
                      "total": 6.6745,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.053833
                        },
                        {
                          "name": "rating",
                          "margin": 0.014212
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.010664
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.010654
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.01018
                        }
                      ],
                      "others_margin": -0.044007
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 34,
                  "role_matches": 14,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0005, quality 0.518)",
              "stats": {
                "expected_goals": 0.0582,
                "goals": 0.0756,
                "goal_rate": 0.0756,
                "shots_on_target": 0.1942,
                "total_shots": 0.5941,
                "expected_assists": 0.041,
                "key_pass": 0.4444,
                "rating": 6.6745,
                "minutes": 21.11,
                "total_pass": 8.577,
                "accurate_pass": 7.1017,
                "duels_won": 1.4834,
                "total_long_balls": 0.1299,
                "accurate_long_balls": 0.0911,
                "total_opp_half_passes": 6.4669,
                "accurate_opp_half_passes": 5.3728,
                "crosses_total": 1.2057,
                "crosses_accurate": 0.5379,
                "touches": 15.3972,
                "possession_lost": 3.9523,
                "dispossessed": 0.1958,
                "duels_lost": 1.9326,
                "aerial_lost": 0.6593,
                "total_contest": 0.7507,
                "won_contest": 0.3836,
                "ball_recovery": 1.4292,
                "challenges_lost": 0.6261,
                "fouls": 0.0843,
                "fouls_drawn": 0.1989,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1673,
                "tackles_won": 0.5233,
                "tackles": 0.6106,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.047,
                "big_chances_missed": 0.1346,
                "xgot": 0.0203,
                "offsides": 0.0,
                "ball_carries": 2.9657,
                "total_progression": 17.3104,
                "progressive_carries": 0.7642,
                "shots_off_target": 0.3999
              },
              "params": {
                "market_value_eur": 9600000,
                "quality_factor": 0.5177,
                "boost_factor": 1.0005,
                "reference_quality": 0.505,
                "history_matches": 34,
                "history_shrink": 0.1282,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 21.1 to 25.6 expected minutes (appearance prob 0.57)",
              "stats": {
                "expected_goals": 0.0706,
                "goals": 0.0917,
                "goal_rate": 0.0917,
                "shots_on_target": 0.2356,
                "total_shots": 0.7208,
                "expected_assists": 0.0497,
                "key_pass": 0.5391,
                "rating": 6.6745,
                "minutes": 25.61,
                "total_pass": 10.4055,
                "accurate_pass": 8.6157,
                "duels_won": 1.7996,
                "total_long_balls": 0.1576,
                "accurate_long_balls": 0.1105,
                "total_opp_half_passes": 7.8455,
                "accurate_opp_half_passes": 6.5182,
                "crosses_total": 1.4627,
                "crosses_accurate": 0.6526,
                "touches": 18.6796,
                "possession_lost": 4.7949,
                "dispossessed": 0.1958,
                "duels_lost": 2.3446,
                "aerial_lost": 0.6593,
                "total_contest": 0.9107,
                "won_contest": 0.4654,
                "ball_recovery": 1.7339,
                "challenges_lost": 0.6261,
                "fouls": 0.1023,
                "fouls_drawn": 0.2413,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.203,
                "tackles_won": 0.6349,
                "tackles": 0.7408,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.057,
                "big_chances_missed": 0.1633,
                "xgot": 0.0246,
                "offsides": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 21.0007,
                "progressive_carries": 0.9271,
                "shots_off_target": 0.4852,
                "bench_appearance_probability": 0.573,
                "bench_expected_minutes": 25.61
              },
              "params": {
                "expected_minutes": 25.61,
                "projection_minutes": 21.11,
                "minutes_scale": 1.2132,
                "appearance_probability": 0.573
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0706,
                "goals": 0.0917,
                "goal_rate": 0.0917,
                "shots_on_target": 0.2356,
                "total_shots": 0.7208,
                "expected_assists": 0.0497,
                "key_pass": 0.5391,
                "rating": 6.6745,
                "minutes": 25.61,
                "total_pass": 10.4055,
                "accurate_pass": 8.6157,
                "duels_won": 1.7996,
                "total_long_balls": 0.1576,
                "accurate_long_balls": 0.1105,
                "total_opp_half_passes": 7.8455,
                "accurate_opp_half_passes": 6.5182,
                "crosses_total": 1.4627,
                "crosses_accurate": 0.6526,
                "touches": 18.6796,
                "possession_lost": 4.7949,
                "dispossessed": 0.1958,
                "duels_lost": 2.3446,
                "aerial_lost": 0.6593,
                "total_contest": 0.9107,
                "won_contest": 0.4654,
                "ball_recovery": 1.7339,
                "challenges_lost": 0.6261,
                "fouls": 0.1023,
                "fouls_drawn": 0.2413,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.203,
                "tackles_won": 0.6349,
                "tackles": 0.7408,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.057,
                "big_chances_missed": 0.1633,
                "xgot": 0.0246,
                "offsides": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 21.0007,
                "progressive_carries": 0.9271,
                "shots_off_target": 0.4852,
                "bench_appearance_probability": 0.573,
                "bench_expected_minutes": 25.61
              },
              "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.0706,
                "goal_rate": 0.0917,
                "goals": 0,
                "shots_on_target": 0.2356,
                "total_shots": 0.7208,
                "expected_assists": 0.0497,
                "key_pass": 0.5391,
                "rating": 6.6745,
                "minutes": 25.61,
                "total_pass": 10.4055,
                "accurate_pass": 8.6157,
                "duels_won": 1.7996,
                "total_long_balls": 0.1576,
                "accurate_long_balls": 0.1105,
                "total_opp_half_passes": 7.8455,
                "accurate_opp_half_passes": 6.5182,
                "crosses_total": 1.4627,
                "crosses_accurate": 0.6526,
                "touches": 18.6796,
                "possession_lost": 4.7949,
                "dispossessed": 0.1958,
                "duels_lost": 2.3446,
                "aerial_lost": 0.6593,
                "total_contest": 0.9107,
                "won_contest": 0.4654,
                "ball_recovery": 1.7339,
                "challenges_lost": 0.6261,
                "fouls": 0.1023,
                "fouls_drawn": 0.2413,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.203,
                "tackles_won": 0.6349,
                "tackles": 0.7408,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.057,
                "big_chances_missed": 0.1633,
                "xgot": 0.0246,
                "offsides": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 21.0007,
                "progressive_carries": 0.9271,
                "shots_off_target": 0.4852,
                "bench_appearance_probability": 0.573,
                "bench_expected_minutes": 25.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "expected_goals": 0.0412,
                "goal_rate": 0.0917,
                "goals": 0,
                "shots_on_target": 0.2356,
                "total_shots": 0.7208,
                "expected_assists": 0.029,
                "key_pass": 0.5391,
                "rating": 6.6745,
                "minutes": 25.61,
                "total_pass": 10.4055,
                "accurate_pass": 8.6157,
                "duels_won": 1.7996,
                "total_long_balls": 0.1576,
                "accurate_long_balls": 0.1105,
                "total_opp_half_passes": 7.8455,
                "accurate_opp_half_passes": 6.5182,
                "crosses_total": 1.4627,
                "crosses_accurate": 0.6526,
                "touches": 18.6796,
                "possession_lost": 4.7949,
                "dispossessed": 0.1958,
                "duels_lost": 2.3446,
                "aerial_lost": 0.6593,
                "total_contest": 0.9107,
                "won_contest": 0.4654,
                "ball_recovery": 1.7339,
                "challenges_lost": 0.6261,
                "fouls": 0.1023,
                "fouls_drawn": 0.2413,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.203,
                "tackles_won": 0.6349,
                "tackles": 0.7408,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.057,
                "big_chances_missed": 0.1633,
                "xgot": 0.0143,
                "offsides": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 21.0007,
                "progressive_carries": 0.9271,
                "shots_off_target": 0.4852,
                "bench_appearance_probability": 0.573,
                "bench_expected_minutes": 25.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.175,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 0.573
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0706,
                  "after": 0.0412
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0497,
                  "after": 0.029
                }
              ]
            },
            {
              "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": {
                "expected_goals": 0.0412,
                "goal_rate": 0.0917,
                "goals": 0,
                "shots_on_target": 0.2356,
                "total_shots": 0.7208,
                "expected_assists": 0.029,
                "key_pass": 0.5391,
                "rating": 6.6745,
                "minutes": 25.61,
                "total_pass": 10.4055,
                "accurate_pass": 8.6157,
                "duels_won": 1.7996,
                "total_long_balls": 0.1576,
                "accurate_long_balls": 0.1105,
                "total_opp_half_passes": 7.8455,
                "accurate_opp_half_passes": 6.5182,
                "crosses_total": 1.4627,
                "crosses_accurate": 0.6526,
                "touches": 18.6796,
                "possession_lost": 4.7949,
                "dispossessed": 0.1958,
                "duels_lost": 2.3446,
                "aerial_lost": 0.6593,
                "total_contest": 0.9107,
                "won_contest": 0.4654,
                "ball_recovery": 1.7339,
                "challenges_lost": 0.6261,
                "fouls": 0.1023,
                "fouls_drawn": 0.2413,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.203,
                "tackles_won": 0.6349,
                "tackles": 0.7408,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.057,
                "big_chances_missed": 0.1633,
                "xgot": 0.0143,
                "offsides": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 21.0007,
                "progressive_carries": 0.9271,
                "shots_off_target": 0.4852,
                "bench_appearance_probability": 0.573,
                "bench_expected_minutes": 25.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.175,
                "creation_factor": 0.8,
                "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",
                "ranking_status": "combined",
                "global_player_rank": 3167,
                "fifa_rank": 1575.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.0412,
                "goal_rate": 0.0917,
                "goals": 0,
                "shots_on_target": 0.2356,
                "total_shots": 0.7208,
                "expected_assists": 0.029,
                "key_pass": 0.5391,
                "rating": 6.6745,
                "minutes": 25.61,
                "total_pass": 10.4055,
                "accurate_pass": 8.6157,
                "duels_won": 1.7996,
                "total_long_balls": 0.1576,
                "accurate_long_balls": 0.1105,
                "total_opp_half_passes": 7.8455,
                "accurate_opp_half_passes": 6.5182,
                "crosses_total": 1.4627,
                "crosses_accurate": 0.6526,
                "touches": 18.6796,
                "possession_lost": 4.7949,
                "dispossessed": 0.1958,
                "duels_lost": 2.3446,
                "aerial_lost": 0.6593,
                "total_contest": 0.9107,
                "won_contest": 0.4654,
                "ball_recovery": 1.7339,
                "challenges_lost": 0.6261,
                "fouls": 0.1023,
                "fouls_drawn": 0.2413,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.203,
                "tackles_won": 0.6349,
                "tackles": 0.7408,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.057,
                "big_chances_missed": 0.1633,
                "xgot": 0.0143,
                "offsides": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 21.0007,
                "progressive_carries": 0.9271,
                "shots_off_target": 0.4852,
                "bench_appearance_probability": 0.573,
                "bench_expected_minutes": 25.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0398,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.175,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0398,
                "goal_rate": 0.0917,
                "scorer_weight": 0.0484,
                "squad_weight_total": 0.9718,
                "weight_share": 0.0498,
                "finishing_factor": 1.175,
                "appearance_weight": 0.573,
                "weight_rank": 6,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.0412,
                "goal_rate": 0.0917,
                "goals": 0,
                "shots_on_target": 0.2356,
                "total_shots": 0.7208,
                "expected_assists": 0.029,
                "key_pass": 0.5391,
                "rating": 6.6745,
                "minutes": 25.61,
                "total_pass": 10.4055,
                "accurate_pass": 8.6157,
                "duels_won": 1.7996,
                "total_long_balls": 0.1576,
                "accurate_long_balls": 0.1105,
                "total_opp_half_passes": 7.8455,
                "accurate_opp_half_passes": 6.5182,
                "crosses_total": 1.4627,
                "crosses_accurate": 0.6526,
                "touches": 18.6796,
                "possession_lost": 4.7949,
                "dispossessed": 0.1958,
                "duels_lost": 2.3446,
                "aerial_lost": 0.6593,
                "total_contest": 0.9107,
                "won_contest": 0.4654,
                "ball_recovery": 1.7339,
                "challenges_lost": 0.6261,
                "fouls": 0.1023,
                "fouls_drawn": 0.2413,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.203,
                "tackles_won": 0.6349,
                "tackles": 0.7408,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.057,
                "big_chances_missed": 0.1633,
                "xgot": 0.0143,
                "offsides": 0.0,
                "ball_carries": 3.5979,
                "total_progression": 21.0007,
                "progressive_carries": 0.9271,
                "shots_off_target": 0.4852,
                "bench_appearance_probability": 0.573,
                "bench_expected_minutes": 25.61,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0398,
                "projected_assists": 0,
                "assist_probability": 0.0283,
                "finishing_factor": 1.175,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0283,
                "assist_rate": 0.0,
                "provider_weight": 0.0232,
                "squad_weight_total": 0.6412,
                "weight_share": 0.0362,
                "creation_factor": 0.8,
                "appearance_weight": 0.573,
                "weight_rank": 9,
                "eligible_players": 13
              }
            }
          ]
        },
        "Harvey Elliott": {
          "player_id": 955245,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 10,
          "height": 170,
          "market_value": 21000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0143,
            "assist_rate": 0.0394,
            "assists": 0,
            "expected_goals": 0.0328,
            "goal_rate": 0.0592,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.6829,
            "minutes": 23,
            "total_pass": 15,
            "accurate_pass": 13,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 10,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 3.8558,
            "dispossessed": 0.0,
            "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.0056,
            "ball_carries": 6,
            "total_progression": 11,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.535,
            "bench_expected_minutes": 22.78,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.447,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0318,
            "projected_assists": 0,
            "assist_probability": 0.0141,
            "finishing_factor": 0.99,
            "creation_factor": 1.1717,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421074,
              "match_date": "2026-10-17",
              "home_team": "Valencia",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 16,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0218,
                "expected_assists": 0.0587,
                "total_shots": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "key_pass": 1,
                "clearances": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 32,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0169,
                "expected_assists": 0.0102,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 20,
                "accurate_pass": 15,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416297,
              "match_date": "2026-09-20",
              "home_team": "Valencia",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 21,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0347,
                "expected_assists": 0.0698,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 14,
                "accurate_pass": 14,
                "key_pass": 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": 16416330,
              "match_date": "2026-09-11",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 28,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.006,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416325,
              "match_date": "2026-09-06",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 36,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0627,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 17,
                "tackles": 2,
                "tackles_won": 2,
                "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": 14025125,
              "match_date": "2026-02-01",
              "home_team": "Aston Villa",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Aston Villa",
              "opponent": "Brentford",
              "stats": {
                "minutes": 13,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0958,
                "expected_assists": 0.0225,
                "total_shots": 2,
                "total_pass": 17,
                "accurate_pass": 15,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14025181,
              "match_date": "2025-09-28",
              "home_team": "Aston Villa",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Aston Villa",
              "opponent": "Fulham",
              "stats": {
                "minutes": 45,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0238,
                "expected_assists": 0.0079,
                "total_shots": 1,
                "total_pass": 18,
                "accurate_pass": 17,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14025172,
              "match_date": "2025-09-21",
              "home_team": "Sunderland",
              "away_team": "Aston Villa",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Aston Villa",
              "opponent": "Sunderland",
              "stats": {
                "minutes": 32,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1714,
                "expected_assists": 0.0566,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 26,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14025136,
              "match_date": "2025-09-13",
              "home_team": "Everton",
              "away_team": "Aston Villa",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Aston Villa",
              "opponent": "Everton",
              "stats": {
                "minutes": 19,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0025,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 7,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14147154,
              "match_date": "2025-08-25",
              "home_team": "Newcastle United",
              "away_team": "Liverpool FC",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Liverpool FC",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 8,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 4
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3214,
            "combined_rank_score": 1163.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 901.0,
            "sofascore_rating": 6.52,
            "sofascore_appearances": 5.0,
            "fifa_rank": 1426.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6829,
            "source_file": "data/player_rankings.csv",
            "player_name": "Harvey Elliott",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Robin Gosens",
                  "ranking": 3209
                },
                {
                  "player_name": "Álvaro Núñez",
                  "ranking": 3210
                },
                {
                  "player_name": "Marvin Schwäbe",
                  "ranking": 3211
                },
                {
                  "player_name": "Moi Gómez",
                  "ranking": 3212
                },
                {
                  "player_name": "Benjamin Henrichs",
                  "ranking": 3213
                }
              ],
              "lower": [
                {
                  "player_name": "Azor Matusiwa",
                  "ranking": 3215
                },
                {
                  "player_name": "Eljif Elmas",
                  "ranking": 3216
                },
                {
                  "player_name": "Lazaros Rota",
                  "ranking": 3217
                },
                {
                  "player_name": "Joshua Zirkzee",
                  "ranking": 3218
                },
                {
                  "player_name": "Camilo Vargas",
                  "ranking": 3219
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 10,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 10,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.77746860076133,
            "bench_appearance_prob": 0.5353394818527877,
            "market_value_adjustment": 1.0136,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (10 historical appearances) to 22.8 expected mins (appearance prob 0.54)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.3549,
                "expected_assists": 0.0258,
                "assists": 0.0388,
                "assist_rate": 0.0388,
                "expected_goals": 0.0593,
                "goals": 0.0582,
                "goal_rate": 0.0582,
                "shots_on_target": 0.2023,
                "total_shots": 0.5914,
                "rating": 6.6829,
                "minutes": 22.7,
                "total_pass": 15.0103,
                "accurate_pass": 12.3106,
                "duels_won": 0.5189,
                "total_long_balls": 0.8119,
                "accurate_long_balls": 0.3475,
                "total_own_half_passes": 3.1793,
                "accurate_own_half_passes": 2.8129,
                "total_opp_half_passes": 11.8311,
                "accurate_opp_half_passes": 9.4977,
                "crosses_total": 0.2209,
                "crosses_accurate": 0.0736,
                "touches": 18.5634,
                "possession_lost": 3.7911,
                "dispossessed": 0.0,
                "duels_lost": 0.629,
                "aerial_won": 0.2526,
                "aerial_lost": 0.2396,
                "interceptions": 0.0,
                "tackles_won": 0.2038,
                "tackles": 0.2038,
                "clearances": 0.4237,
                "total_contest": 0.3895,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0626,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0102,
                "ball_carries": 6.0294,
                "total_progression": 10.4946,
                "progressive_carries": 0.1069,
                "shots_off_target": 0.3891
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Athletic Club",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.1868,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Racing Club",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.1588,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Real Sociedad",
                    "minutes": 21.0,
                    "is_starting": false,
                    "weight": 0.1349,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-11",
                    "opponent": "Sevilla",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.1147,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "FC Barcelona",
                    "minutes": 36.0,
                    "is_starting": false,
                    "weight": 0.0975,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-02-01",
                    "opponent": "Brentford",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0829,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2025-09-28",
                    "opponent": "Fulham",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0704,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2025-09-21",
                    "opponent": "Sunderland",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.0599,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2025-09-13",
                    "opponent": "Everton",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.0509,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2025-08-25",
                    "opponent": "Newcastle United",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0433,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 10.0,
                  "is_starting_11": 0.0,
                  "creative_index": 0.3002,
                  "totalShots": 0.8364,
                  "expectedGoals": 0.0313,
                  "expectedAssists": 0.0348,
                  "onTargetScoringAttempt": 0.1349
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.3548620641231537,
                    "model_output": 0.3549,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4063
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0428
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0369
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0279
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0213
                        }
                      ],
                      "others": -0.0044,
                      "total": 0.3549,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.605624
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.091791
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.08639
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.070639
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.057726
                        }
                      ],
                      "others_margin": -0.01235
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.02584901452064514,
                    "model_output": 0.0258,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0401
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0078
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0038
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0031
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0025
                        }
                      ],
                      "others": -0.0078,
                      "total": 0.0258,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.629471
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.186592
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.105526
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.09492
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.076052
                        }
                      ],
                      "others_margin": -0.260307
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.03880926966667175,
                    "model_output": 0.0388,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0282
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.01
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0064
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0045
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0031
                        }
                      ],
                      "others": -0.0054,
                      "total": 0.0388,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.390175
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.185534
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.139065
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.100203
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.067228
                        }
                      ],
                      "others_margin": -0.130035
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.059334393590688705,
                    "model_output": 0.0593,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0392
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0101
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0102
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0048
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0029
                        }
                      ],
                      "others": -0.0081,
                      "total": 0.0593,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.540777
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.16949
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.146237
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.06618
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.041558
                        }
                      ],
                      "others_margin": -0.12686
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.058244891464710236,
                    "model_output": 0.0582,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0448
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0118
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.006
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0057
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.005
                        }
                      ],
                      "others": -0.0034,
                      "total": 0.0582,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.600046
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.19577
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.086569
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.081497
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.07849
                        }
                      ],
                      "others_margin": -0.055959
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.20228855311870575,
                    "model_output": 0.2023,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1543
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0337
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0168
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0103
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": 0.009
                        }
                      ],
                      "others": -0.0186,
                      "total": 0.2023,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.641139
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.179161
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.078423
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.047309
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": 0.041387
                        }
                      ],
                      "others_margin": -0.08781
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5914066433906555,
                    "model_output": 0.5914,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4565
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0802
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": 0.0295
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0291
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": 0.0275
                        }
                      ],
                      "others": -0.0571,
                      "total": 0.5914,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.456479
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.080229
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": 0.029493
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.029124
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": 0.027508
                        }
                      ],
                      "others_margin": -0.057117
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.682925224304199,
                    "model_output": 6.6829,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0733
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0387
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0294
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0107
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0102
                        }
                      ],
                      "others": -0.0109,
                      "total": 6.6829,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.073296
                        },
                        {
                          "name": "rating",
                          "margin": -0.038683
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.029368
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.010733
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.010214
                        }
                      ],
                      "others_margin": -0.010834
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 10,
                  "role_matches": 9,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0136, quality 0.641)",
              "stats": {
                "key_pass": 0.3597,
                "expected_assists": 0.0262,
                "assists": 0.0393,
                "assist_rate": 0.0393,
                "expected_goals": 0.0601,
                "goals": 0.059,
                "goal_rate": 0.059,
                "shots_on_target": 0.205,
                "total_shots": 0.5994,
                "rating": 6.6829,
                "minutes": 22.7,
                "total_pass": 15.2144,
                "accurate_pass": 12.478,
                "duels_won": 0.526,
                "total_long_balls": 0.8229,
                "accurate_long_balls": 0.3522,
                "total_own_half_passes": 3.2225,
                "accurate_own_half_passes": 2.8512,
                "total_opp_half_passes": 11.992,
                "accurate_opp_half_passes": 9.6269,
                "crosses_total": 0.2239,
                "crosses_accurate": 0.0746,
                "touches": 18.8159,
                "possession_lost": 3.8427,
                "dispossessed": 0.0,
                "duels_lost": 0.6376,
                "aerial_won": 0.256,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2066,
                "tackles": 0.2066,
                "clearances": 0.4295,
                "total_contest": 0.3948,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0635,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0103,
                "ball_carries": 6.1114,
                "total_progression": 10.6373,
                "progressive_carries": 0.1084,
                "shots_off_target": 0.3944
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.0136,
                "reference_quality": 0.505,
                "history_matches": 10,
                "history_shrink": 0.3333,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 22.7 to 22.8 expected minutes (appearance prob 0.54)",
              "stats": {
                "key_pass": 0.3609,
                "expected_assists": 0.0263,
                "assists": 0.0394,
                "assist_rate": 0.0394,
                "expected_goals": 0.0603,
                "goals": 0.0592,
                "goal_rate": 0.0592,
                "shots_on_target": 0.2057,
                "total_shots": 0.6014,
                "rating": 6.6829,
                "minutes": 22.78,
                "total_pass": 15.2663,
                "accurate_pass": 12.5206,
                "duels_won": 0.5278,
                "total_long_balls": 0.8257,
                "accurate_long_balls": 0.3534,
                "total_own_half_passes": 3.2335,
                "accurate_own_half_passes": 2.8609,
                "total_opp_half_passes": 12.0329,
                "accurate_opp_half_passes": 9.6598,
                "crosses_total": 0.2247,
                "crosses_accurate": 0.0749,
                "touches": 18.8801,
                "possession_lost": 3.8558,
                "dispossessed": 0.0,
                "duels_lost": 0.6398,
                "aerial_won": 0.2569,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2073,
                "tackles": 0.2073,
                "clearances": 0.431,
                "total_contest": 0.3961,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0637,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0103,
                "ball_carries": 6.1323,
                "total_progression": 10.6736,
                "progressive_carries": 0.1088,
                "shots_off_target": 0.3957,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78
              },
              "params": {
                "expected_minutes": 22.78,
                "projection_minutes": 22.7,
                "minutes_scale": 1.0034,
                "appearance_probability": 0.535
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.3609,
                "expected_assists": 0.0263,
                "assists": 0.0394,
                "assist_rate": 0.0394,
                "expected_goals": 0.0603,
                "goals": 0.0592,
                "goal_rate": 0.0592,
                "shots_on_target": 0.2057,
                "total_shots": 0.6014,
                "rating": 6.6829,
                "minutes": 22.78,
                "total_pass": 15.2663,
                "accurate_pass": 12.5206,
                "duels_won": 0.5278,
                "total_long_balls": 0.8257,
                "accurate_long_balls": 0.3534,
                "total_own_half_passes": 3.2335,
                "accurate_own_half_passes": 2.8609,
                "total_opp_half_passes": 12.0329,
                "accurate_opp_half_passes": 9.6598,
                "crosses_total": 0.2247,
                "crosses_accurate": 0.0749,
                "touches": 18.8801,
                "possession_lost": 3.8558,
                "dispossessed": 0.0,
                "duels_lost": 0.6398,
                "aerial_won": 0.2569,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2073,
                "tackles": 0.2073,
                "clearances": 0.431,
                "total_contest": 0.3961,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0637,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0103,
                "ball_carries": 6.1323,
                "total_progression": 10.6736,
                "progressive_carries": 0.1088,
                "shots_off_target": 0.3957,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.3609,
                "expected_assists": 0.0263,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0603,
                "goal_rate": 0.0592,
                "goals": 0,
                "shots_on_target": 0.2057,
                "total_shots": 0.6014,
                "rating": 6.6829,
                "minutes": 22.78,
                "total_pass": 15.2663,
                "accurate_pass": 12.5206,
                "duels_won": 0.5278,
                "total_long_balls": 0.8257,
                "accurate_long_balls": 0.3534,
                "total_own_half_passes": 3.2335,
                "accurate_own_half_passes": 2.8609,
                "total_opp_half_passes": 12.0329,
                "accurate_opp_half_passes": 9.6598,
                "crosses_total": 0.2247,
                "crosses_accurate": 0.0749,
                "touches": 18.8801,
                "possession_lost": 3.8558,
                "dispossessed": 0.0,
                "duels_lost": 0.6398,
                "aerial_won": 0.2569,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2073,
                "tackles": 0.2073,
                "clearances": 0.431,
                "total_contest": 0.3961,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0637,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0103,
                "ball_carries": 6.1323,
                "total_progression": 10.6736,
                "progressive_carries": 0.1088,
                "shots_off_target": 0.3957,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 0
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.90 (squad xG sum 0.8835, xG scale 1.0175, xA scale 1.0175, team xA 0.62 = 0.69 x lambda)",
              "stats": {
                "key_pass": 0.3609,
                "expected_assists": 0.0143,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0328,
                "goal_rate": 0.0592,
                "goals": 0,
                "shots_on_target": 0.2057,
                "total_shots": 0.6014,
                "rating": 6.6829,
                "minutes": 22.78,
                "total_pass": 15.2663,
                "accurate_pass": 12.5206,
                "duels_won": 0.5278,
                "total_long_balls": 0.8257,
                "accurate_long_balls": 0.3534,
                "total_own_half_passes": 3.2335,
                "accurate_own_half_passes": 2.8609,
                "total_opp_half_passes": 12.0329,
                "accurate_opp_half_passes": 9.6598,
                "crosses_total": 0.2247,
                "crosses_accurate": 0.0749,
                "touches": 18.8801,
                "possession_lost": 3.8558,
                "dispossessed": 0.0,
                "duels_lost": 0.6398,
                "aerial_won": 0.2569,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2073,
                "tackles": 0.2073,
                "clearances": 0.431,
                "total_contest": 0.3961,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0637,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0056,
                "ball_carries": 6.1323,
                "total_progression": 10.6736,
                "progressive_carries": 0.1088,
                "shots_off_target": 0.3957,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.99,
                "creation_factor": 1.1717
              },
              "params": {
                "team_lambda": 0.899,
                "squad_xg_sum": 0.8835,
                "squad_xa_sum": 0.6086,
                "team_expected_assists": 0.6192,
                "team_xa_to_xg_ratio": 0.6888,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0175,
                "xa_scale": 1.0175,
                "opponent_lambda": 1.451,
                "scoreline_reset": true,
                "appearance_weight": 0.535
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0603,
                  "after": 0.0328
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0263,
                  "after": 0.0143
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 77.0)",
              "stats": {
                "key_pass": 0.3609,
                "expected_assists": 0.0143,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0328,
                "goal_rate": 0.0592,
                "goals": 0,
                "shots_on_target": 0.2057,
                "total_shots": 0.6014,
                "rating": 6.6829,
                "minutes": 22.78,
                "total_pass": 15.2663,
                "accurate_pass": 12.5206,
                "duels_won": 0.5278,
                "total_long_balls": 0.8257,
                "accurate_long_balls": 0.3534,
                "total_own_half_passes": 3.2335,
                "accurate_own_half_passes": 2.8609,
                "total_opp_half_passes": 12.0329,
                "accurate_opp_half_passes": 9.6598,
                "crosses_total": 0.2247,
                "crosses_accurate": 0.0749,
                "touches": 18.8801,
                "possession_lost": 3.8558,
                "dispossessed": 0.0,
                "duels_lost": 0.6398,
                "aerial_won": 0.2569,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2073,
                "tackles": 0.2073,
                "clearances": 0.431,
                "total_contest": 0.3961,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0637,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0056,
                "ball_carries": 6.1323,
                "total_progression": 10.6736,
                "progressive_carries": 0.1088,
                "shots_off_target": 0.3957,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.99,
                "creation_factor": 1.1717,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3214,
                "fifa_rank": 1426.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": {
                "key_pass": 0.3609,
                "expected_assists": 0.0143,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0328,
                "goal_rate": 0.0592,
                "goals": 0,
                "shots_on_target": 0.2057,
                "total_shots": 0.6014,
                "rating": 6.6829,
                "minutes": 22.78,
                "total_pass": 15.2663,
                "accurate_pass": 12.5206,
                "duels_won": 0.5278,
                "total_long_balls": 0.8257,
                "accurate_long_balls": 0.3534,
                "total_own_half_passes": 3.2335,
                "accurate_own_half_passes": 2.8609,
                "total_opp_half_passes": 12.0329,
                "accurate_opp_half_passes": 9.6598,
                "crosses_total": 0.2247,
                "crosses_accurate": 0.0749,
                "touches": 18.8801,
                "possession_lost": 3.8558,
                "dispossessed": 0.0,
                "duels_lost": 0.6398,
                "aerial_won": 0.2569,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2073,
                "tackles": 0.2073,
                "clearances": 0.431,
                "total_contest": 0.3961,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0637,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0056,
                "ball_carries": 6.1323,
                "total_progression": 10.6736,
                "progressive_carries": 0.1088,
                "shots_off_target": 0.3957,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0318,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.99,
                "creation_factor": 1.1717,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0318,
                "goal_rate": 0.0592,
                "scorer_weight": 0.0325,
                "squad_weight_total": 0.9718,
                "weight_share": 0.0334,
                "finishing_factor": 0.99,
                "appearance_weight": 0.535,
                "weight_rank": 9,
                "eligible_players": 13
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 0.3609,
                "expected_assists": 0.0143,
                "assist_rate": 0.0394,
                "assists": 0,
                "expected_goals": 0.0328,
                "goal_rate": 0.0592,
                "goals": 0,
                "shots_on_target": 0.2057,
                "total_shots": 0.6014,
                "rating": 6.6829,
                "minutes": 22.78,
                "total_pass": 15.2663,
                "accurate_pass": 12.5206,
                "duels_won": 0.5278,
                "total_long_balls": 0.8257,
                "accurate_long_balls": 0.3534,
                "total_own_half_passes": 3.2335,
                "accurate_own_half_passes": 2.8609,
                "total_opp_half_passes": 12.0329,
                "accurate_opp_half_passes": 9.6598,
                "crosses_total": 0.2247,
                "crosses_accurate": 0.0749,
                "touches": 18.8801,
                "possession_lost": 3.8558,
                "dispossessed": 0.0,
                "duels_lost": 0.6398,
                "aerial_won": 0.2569,
                "aerial_lost": 0.2429,
                "interceptions": 0.0,
                "tackles_won": 0.2073,
                "tackles": 0.2073,
                "clearances": 0.431,
                "total_contest": 0.3961,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0637,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0056,
                "ball_carries": 6.1323,
                "total_progression": 10.6736,
                "progressive_carries": 0.1088,
                "shots_off_target": 0.3957,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.447,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0318,
                "projected_assists": 0,
                "assist_probability": 0.0141,
                "finishing_factor": 0.99,
                "creation_factor": 1.1717,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0141,
                "assist_rate": 0.0394,
                "provider_weight": 0.0168,
                "squad_weight_total": 0.6412,
                "weight_share": 0.0261,
                "creation_factor": 1.1717,
                "appearance_weight": 0.535,
                "weight_rank": 10,
                "eligible_players": 13
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 0,
        "expected_goals": 0.9,
        "expected_assists": 0.62,
        "total_shots": 14,
        "shots_on_target": 2,
        "total_passes": 393,
        "interceptions": 7,
        "tackles": 15,
        "avg_rating": 6.84,
        "possession_estimated_pct": 49.2,
        "pressing_actions_per_90": 6.8
      }
    },
    "Villarreal": {
      "formation": "4-4-2",
      "players": {
        "Gerard Moreno": {
          "player_id": 146866,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 7,
          "height": 180,
          "market_value": 2400000,
          "stats": {
            "expected_goals": 0.2393,
            "goal_rate": 0.2484,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.1089,
            "key_pass": 1,
            "rating": 6.9521,
            "minutes": 77,
            "total_pass": 34,
            "accurate_pass": 28,
            "duels_won": 4,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 25,
            "accurate_opp_half_passes": 20,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 47,
            "possession_lost": 10.4536,
            "dispossessed": 0.6843,
            "duels_lost": 3,
            "aerial_lost": 0,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.3517,
            "offsides": 1,
            "ball_carries": 14,
            "total_progression": 41,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.86,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Justin De Haas, César Tárrega",
            "opponent_faced": "Justin De Haas, César Tárrega",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.2128,
            "projected_assists": 0,
            "assist_probability": 0.1032,
            "finishing_factor": 1.0489,
            "creation_factor": 0.8,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 15,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.056,
                "expected_assists": 0.0271,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 8,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 23,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0324,
                "expected_assists": 0.0305,
                "total_shots": 1,
                "total_pass": 12,
                "accurate_pass": 11,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 23,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1801,
                "expected_assists": 0.0097,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 12,
                "accurate_pass": 6,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 62,
                "rating": 8.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5012,
                "expected_assists": 0.6218,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 29,
                "accurate_pass": 21,
                "key_pass": 3,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 77,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.14,
                "expected_assists": 0.2546,
                "total_shots": 1,
                "total_pass": 38,
                "accurate_pass": 35,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 70,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4418,
                "expected_assists": 0.0609,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 35,
                "accurate_pass": 30,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 30,
                "rating": 7.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7884,
                "expected_assists": 0.0168,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 13,
                "accurate_pass": 10,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 34,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.151,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 16,
                "key_pass": 2,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083682,
              "match_date": "2026-05-17",
              "home_team": "Rayo Vallecano",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 27,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0926,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 17,
                "key_pass": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083644,
              "match_date": "2026-05-13",
              "home_team": "Villarreal",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1102,
                "expected_assists": 0.0366,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 38,
                "accurate_pass": 34,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 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": 849,
            "combined_rank_score": 404.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 238.0,
            "sofascore_rating": 7.1318,
            "sofascore_appearances": 22.0,
            "fifa_rank": 570.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9521,
            "source_file": "data/player_rankings.csv",
            "player_name": "Gerard Moreno",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jovanny Bolívar",
                  "ranking": 844
                },
                {
                  "player_name": "Vicente Zenteno",
                  "ranking": 845
                },
                {
                  "player_name": "Ilir Krasniqi",
                  "ranking": 846
                },
                {
                  "player_name": "Domenico Berardi",
                  "ranking": 847
                },
                {
                  "player_name": "Sven Botman",
                  "ranking": 848
                }
              ],
              "lower": [
                {
                  "player_name": "Rustamzhon Abdukhamidov",
                  "ranking": 850
                },
                {
                  "player_name": "Matvey Safonov",
                  "ranking": 851
                },
                {
                  "player_name": "Leandro Trossard",
                  "ranking": 852
                },
                {
                  "player_name": "André-Franck Zambo Anguissa",
                  "ranking": 853
                },
                {
                  "player_name": "Igor Thiago",
                  "ranking": 854
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.765,
          "history_matches": 30,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 30,
            "data_confidence": 0.765,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9971,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 1.0,
              "minutes": 135.0,
              "goals_per90": 0.6666666666666666,
              "assists_per90": 0.0,
              "shots_per90": 2.67,
              "shots_on_target_pct": 50.0,
              "prior_reliability": 0.1
            },
            "rationale": "XGBoost regressor (F_service) evaluated 30 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.10, gls/90: 0.6666666666666666, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.2735,
                "goals": 0.2871,
                "goal_rate": 0.2871,
                "shots_on_target": 0.7888,
                "total_shots": 2.0059,
                "expected_assists": 0.107,
                "key_pass": 1.0616,
                "rating": 6.9521,
                "minutes": 76.68,
                "total_pass": 34.4446,
                "accurate_pass": 28.3979,
                "duels_won": 3.5575,
                "total_long_balls": 2.4337,
                "accurate_long_balls": 1.4677,
                "total_opp_half_passes": 24.5731,
                "accurate_opp_half_passes": 19.6223,
                "crosses_total": 1.0754,
                "crosses_accurate": 0.2392,
                "touches": 47.5469,
                "possession_lost": 10.484,
                "dispossessed": 0.6863,
                "duels_lost": 3.1873,
                "aerial_lost": 0.4647,
                "total_contest": 2.2397,
                "won_contest": 1.4553,
                "ball_recovery": 1.8437,
                "challenges_lost": 0.7754,
                "fouls": 0.643,
                "fouls_drawn": 0.7332,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1272,
                "tackles_won": 0.3786,
                "tackles": 0.5789,
                "clearances": 1.0244,
                "blocks": 0.0162,
                "big_chances_created": 0.3547,
                "big_chances_missed": 0.2686,
                "xgot": 0.402,
                "offsides": 0.6032,
                "ball_carries": 14.32,
                "total_progression": 41.1282,
                "progressive_carries": 1.0563,
                "shots_off_target": 1.2171
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.1512,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1285,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1092,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0928,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0789,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0671,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.057,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.0485,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Rayo Vallecano",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.0412,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.035,
                    "rating": 7.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.228,
                  "totalOppositionHalfPasses": 16.2802,
                  "accurateOppositionHalfPasses": 13.0523,
                  "accuratePass": 17.4185,
                  "totalShots": 1.3678
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.2734580934047699,
                    "model_output": 0.2735,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0688
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0371
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0123
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0095
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0087
                        }
                      ],
                      "others": -0.0188,
                      "total": 0.2735,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.298466
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.130324
                        },
                        {
                          "name": "duelLost",
                          "margin": -0.041342
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.031903
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.029257
                        }
                      ],
                      "others_margin": -0.066766
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.28707385063171387,
                    "model_output": 0.2871,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0701
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0247
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0256
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0121
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0106
                        }
                      ],
                      "others": -0.0129,
                      "total": 0.2871,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.297474
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.086657
                        },
                        {
                          "name": "goals",
                          "margin": 0.08268
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.038221
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.034722
                        }
                      ],
                      "others_margin": -0.043902
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.7887848019599915,
                    "model_output": 0.7888,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2035
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0409
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0384
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0237
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0228
                        }
                      ],
                      "others": -0.0293,
                      "total": 0.7888,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.321729
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.053792
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.048055
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.029377
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.02823
                        }
                      ],
                      "others_margin": -0.036429
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.0058443546295166,
                    "model_output": 2.0058,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5305
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0598
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.047
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": 0.0447
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.044
                        }
                      ],
                      "others": 0.0811,
                      "total": 2.0058,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.530514
                        },
                        {
                          "name": "goals",
                          "margin": 0.059821
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.046977
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": 0.044668
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.044011
                        }
                      ],
                      "others_margin": 0.08108
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.10703965276479721,
                    "model_output": 0.107,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0145
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0107
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0121
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0102
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0085
                        }
                      ],
                      "others": 0.007,
                      "total": 0.107,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.20302
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.126825
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.126458
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.105839
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.089109
                        }
                      ],
                      "others_margin": 0.067836
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.061618685722351,
                    "model_output": 1.0616,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1769
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0631
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0673
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0627
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0527
                        }
                      ],
                      "others": 0.1892,
                      "total": 1.0616,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.231145
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.071064
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.07056
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.065542
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.058613
                        }
                      ],
                      "others_margin": 0.196167
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.952095031738281,
                    "model_output": 6.9521,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0705
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.056
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0282
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0166
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0157
                        }
                      ],
                      "others": 0.0614,
                      "total": 6.9521,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.070483
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.056
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.028209
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.016635
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.015731
                        }
                      ],
                      "others_margin": 0.06149
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 30,
                  "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.9971, quality 0.437)",
              "stats": {
                "expected_goals": 0.2727,
                "goals": 0.2862,
                "goal_rate": 0.2862,
                "shots_on_target": 0.7865,
                "total_shots": 2.0001,
                "expected_assists": 0.1067,
                "key_pass": 1.0585,
                "rating": 6.9521,
                "minutes": 76.68,
                "total_pass": 34.3447,
                "accurate_pass": 28.3155,
                "duels_won": 3.5472,
                "total_long_balls": 2.4266,
                "accurate_long_balls": 1.4634,
                "total_opp_half_passes": 24.5018,
                "accurate_opp_half_passes": 19.5654,
                "crosses_total": 1.0723,
                "crosses_accurate": 0.2385,
                "touches": 47.409,
                "possession_lost": 10.4536,
                "dispossessed": 0.6843,
                "duels_lost": 3.1781,
                "aerial_lost": 0.4634,
                "total_contest": 2.2332,
                "won_contest": 1.4511,
                "ball_recovery": 1.8384,
                "challenges_lost": 0.7732,
                "fouls": 0.6411,
                "fouls_drawn": 0.7311,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1268,
                "tackles_won": 0.3775,
                "tackles": 0.5772,
                "clearances": 1.0214,
                "blocks": 0.0162,
                "big_chances_created": 0.3537,
                "big_chances_missed": 0.2678,
                "xgot": 0.4008,
                "offsides": 0.6015,
                "ball_carries": 14.2785,
                "total_progression": 41.0089,
                "progressive_carries": 1.0532,
                "shots_off_target": 1.2136
              },
              "params": {
                "market_value_eur": 2400000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9971,
                "reference_quality": 0.505,
                "history_matches": 30,
                "history_shrink": 0.1429,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0093)",
              "stats": {
                "expected_goals": 0.2727,
                "goals": 0.2888,
                "goal_rate": 0.2888,
                "shots_on_target": 0.7897,
                "total_shots": 2.0027,
                "expected_assists": 0.1067,
                "key_pass": 1.0585,
                "rating": 6.9521,
                "minutes": 76.68,
                "total_pass": 34.3447,
                "accurate_pass": 28.3155,
                "duels_won": 3.5472,
                "total_long_balls": 2.4266,
                "accurate_long_balls": 1.4634,
                "total_opp_half_passes": 24.5018,
                "accurate_opp_half_passes": 19.5654,
                "crosses_total": 1.0676,
                "crosses_accurate": 0.2385,
                "touches": 47.409,
                "possession_lost": 10.4536,
                "dispossessed": 0.6843,
                "duels_lost": 3.1781,
                "aerial_lost": 0.4634,
                "total_contest": 2.2332,
                "won_contest": 1.4511,
                "ball_recovery": 1.8384,
                "challenges_lost": 0.7732,
                "fouls": 0.651,
                "fouls_drawn": 0.7243,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1256,
                "tackles_won": 0.3793,
                "tackles": 0.5772,
                "clearances": 1.0214,
                "blocks": 0.0162,
                "big_chances_created": 0.3537,
                "big_chances_missed": 0.2678,
                "xgot": 0.4008,
                "offsides": 0.6012,
                "ball_carries": 14.2785,
                "total_progression": 41.0089,
                "progressive_carries": 1.0532,
                "shots_off_target": 1.2136
              },
              "params": {
                "blend_weight": 0.0093,
                "history_matches": 30,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.852,
                "prior_reliability": 0.1,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.6411,
                  "after": 0.651
                },
                {
                  "stat": "wasFouled",
                  "before": 0.7311,
                  "after": 0.7243
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.2727,
                "goals": 0.2888,
                "goal_rate": 0.2888,
                "shots_on_target": 0.7897,
                "total_shots": 2.0033,
                "expected_assists": 0.1067,
                "key_pass": 1.0585,
                "rating": 6.9521,
                "minutes": 76.68,
                "total_pass": 34.3447,
                "accurate_pass": 28.3155,
                "duels_won": 3.5472,
                "total_long_balls": 2.4266,
                "accurate_long_balls": 1.4634,
                "total_opp_half_passes": 24.5018,
                "accurate_opp_half_passes": 19.5654,
                "crosses_total": 1.0676,
                "crosses_accurate": 0.2385,
                "touches": 47.409,
                "possession_lost": 10.4536,
                "dispossessed": 0.6843,
                "duels_lost": 3.1781,
                "aerial_lost": 0.4634,
                "total_contest": 2.2332,
                "won_contest": 1.4511,
                "ball_recovery": 1.8384,
                "challenges_lost": 0.7732,
                "fouls": 0.651,
                "fouls_drawn": 0.7243,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1256,
                "tackles_won": 0.3793,
                "tackles": 0.5772,
                "clearances": 1.0214,
                "blocks": 0.0162,
                "big_chances_created": 0.3537,
                "big_chances_missed": 0.2678,
                "xgot": 0.4008,
                "offsides": 0.6012,
                "ball_carries": 14.2785,
                "total_progression": 41.0089,
                "progressive_carries": 1.0532,
                "shots_off_target": 1.2136
              },
              "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.2345,
                "goals": 0.2484,
                "goal_rate": 0.2484,
                "shots_on_target": 0.6791,
                "total_shots": 1.7228,
                "expected_assists": 0.1067,
                "key_pass": 1.0585,
                "rating": 6.9521,
                "minutes": 76.68,
                "total_pass": 34.3447,
                "accurate_pass": 28.3155,
                "duels_won": 3.5472,
                "total_long_balls": 2.4266,
                "accurate_long_balls": 1.4634,
                "total_opp_half_passes": 24.5018,
                "accurate_opp_half_passes": 19.5654,
                "crosses_total": 1.0676,
                "crosses_accurate": 0.2385,
                "touches": 47.409,
                "possession_lost": 10.4536,
                "dispossessed": 0.6843,
                "duels_lost": 3.1781,
                "aerial_lost": 0.4634,
                "total_contest": 2.2332,
                "won_contest": 1.4511,
                "ball_recovery": 1.8384,
                "challenges_lost": 0.7732,
                "fouls": 0.651,
                "fouls_drawn": 0.7243,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1256,
                "tackles_won": 0.3793,
                "tackles": 0.5772,
                "clearances": 1.0214,
                "blocks": 0.0162,
                "big_chances_created": 0.3537,
                "big_chances_missed": 0.2303,
                "xgot": 0.3447,
                "offsides": 0.6012,
                "ball_carries": 14.2785,
                "total_progression": 41.0089,
                "progressive_carries": 1.0532,
                "shots_off_target": 1.0437,
                "duel_xg_multiplier": 0.86,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Justin De Haas, César Tárrega",
                  "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.86,
                  "skill_edge": -0.0452,
                  "height_edge": -0.05,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.5379,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Justin De Haas",
                      "market_value": 7700000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.5256
                    },
                    {
                      "player": "César Tárrega",
                      "market_value": 9300000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.5502
                    }
                  ],
                  "xg_override": 0.2345
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.0033,
                  "after": 1.7228
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.2136,
                  "after": 1.0437
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.7897,
                  "after": 0.6791
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.4008,
                  "after": 0.3447
                },
                {
                  "stat": "goals",
                  "before": 0.2888,
                  "after": 0.2484
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.2727,
                  "after": 0.2345
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.2678,
                  "after": 0.2303
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.2345,
                "goal_rate": 0.2484,
                "goals": 0,
                "shots_on_target": 0.6791,
                "total_shots": 1.7228,
                "expected_assists": 0.1067,
                "key_pass": 1.0585,
                "rating": 6.9521,
                "minutes": 76.68,
                "total_pass": 34.3447,
                "accurate_pass": 28.3155,
                "duels_won": 3.5472,
                "total_long_balls": 2.4266,
                "accurate_long_balls": 1.4634,
                "total_opp_half_passes": 24.5018,
                "accurate_opp_half_passes": 19.5654,
                "crosses_total": 1.0676,
                "crosses_accurate": 0.2385,
                "touches": 47.409,
                "possession_lost": 10.4536,
                "dispossessed": 0.6843,
                "duels_lost": 3.1781,
                "aerial_lost": 0.4634,
                "total_contest": 2.2332,
                "won_contest": 1.4511,
                "ball_recovery": 1.8384,
                "challenges_lost": 0.7732,
                "fouls": 0.651,
                "fouls_drawn": 0.7243,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1256,
                "tackles_won": 0.3793,
                "tackles": 0.5772,
                "clearances": 1.0214,
                "blocks": 0.0162,
                "big_chances_created": 0.3537,
                "big_chances_missed": 0.2303,
                "xgot": 0.3447,
                "offsides": 0.6012,
                "ball_carries": 14.2785,
                "total_progression": 41.0089,
                "progressive_carries": 1.0532,
                "shots_off_target": 1.0437,
                "duel_xg_multiplier": 0.86,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.2393,
                "goal_rate": 0.2484,
                "goals": 0,
                "shots_on_target": 0.6791,
                "total_shots": 1.7228,
                "expected_assists": 0.1089,
                "key_pass": 1.0585,
                "rating": 6.9521,
                "minutes": 76.68,
                "total_pass": 34.3447,
                "accurate_pass": 28.3155,
                "duels_won": 3.5472,
                "total_long_balls": 2.4266,
                "accurate_long_balls": 1.4634,
                "total_opp_half_passes": 24.5018,
                "accurate_opp_half_passes": 19.5654,
                "crosses_total": 1.0676,
                "crosses_accurate": 0.2385,
                "touches": 47.409,
                "possession_lost": 10.4536,
                "dispossessed": 0.6843,
                "duels_lost": 3.1781,
                "aerial_lost": 0.4634,
                "total_contest": 2.2332,
                "won_contest": 1.4511,
                "ball_recovery": 1.8384,
                "challenges_lost": 0.7732,
                "fouls": 0.651,
                "fouls_drawn": 0.7243,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1256,
                "tackles_won": 0.3793,
                "tackles": 0.5772,
                "clearances": 1.0214,
                "blocks": 0.0162,
                "big_chances_created": 0.3537,
                "big_chances_missed": 0.2303,
                "xgot": 0.3517,
                "offsides": 0.6012,
                "ball_carries": 14.2785,
                "total_progression": 41.0089,
                "progressive_carries": 1.0532,
                "shots_off_target": 1.0437,
                "duel_xg_multiplier": 0.86,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0489,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "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 81.0)",
              "stats": {
                "expected_goals": 0.2393,
                "goal_rate": 0.2484,
                "goals": 0,
                "shots_on_target": 0.6791,
                "total_shots": 1.7228,
                "expected_assists": 0.1089,
                "key_pass": 1.0585,
                "rating": 6.9521,
                "minutes": 76.68,
                "total_pass": 34.3447,
                "accurate_pass": 28.3155,
                "duels_won": 3.5472,
                "total_long_balls": 2.4266,
                "accurate_long_balls": 1.4634,
                "total_opp_half_passes": 24.5018,
                "accurate_opp_half_passes": 19.5654,
                "crosses_total": 1.0676,
                "crosses_accurate": 0.2385,
                "touches": 47.409,
                "possession_lost": 10.4536,
                "dispossessed": 0.6843,
                "duels_lost": 3.1781,
                "aerial_lost": 0.4634,
                "total_contest": 2.2332,
                "won_contest": 1.4511,
                "ball_recovery": 1.8384,
                "challenges_lost": 0.7732,
                "fouls": 0.651,
                "fouls_drawn": 0.7243,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1256,
                "tackles_won": 0.3793,
                "tackles": 0.5772,
                "clearances": 1.0214,
                "blocks": 0.0162,
                "big_chances_created": 0.3537,
                "big_chances_missed": 0.2303,
                "xgot": 0.3517,
                "offsides": 0.6012,
                "ball_carries": 14.2785,
                "total_progression": 41.0089,
                "progressive_carries": 1.0532,
                "shots_off_target": 1.0437,
                "duel_xg_multiplier": 0.86,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0489,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "match_squad_rank": 8,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 849,
                "fifa_rank": 570.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 81.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.2393,
                "goal_rate": 0.2484,
                "goals": 0,
                "shots_on_target": 0.6791,
                "total_shots": 1.7228,
                "expected_assists": 0.1089,
                "key_pass": 1.0585,
                "rating": 6.9521,
                "minutes": 76.68,
                "total_pass": 34.3447,
                "accurate_pass": 28.3155,
                "duels_won": 3.5472,
                "total_long_balls": 2.4266,
                "accurate_long_balls": 1.4634,
                "total_opp_half_passes": 24.5018,
                "accurate_opp_half_passes": 19.5654,
                "crosses_total": 1.0676,
                "crosses_accurate": 0.2385,
                "touches": 47.409,
                "possession_lost": 10.4536,
                "dispossessed": 0.6843,
                "duels_lost": 3.1781,
                "aerial_lost": 0.4634,
                "total_contest": 2.2332,
                "won_contest": 1.4511,
                "ball_recovery": 1.8384,
                "challenges_lost": 0.7732,
                "fouls": 0.651,
                "fouls_drawn": 0.7243,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1256,
                "tackles_won": 0.3793,
                "tackles": 0.5772,
                "clearances": 1.0214,
                "blocks": 0.0162,
                "big_chances_created": 0.3537,
                "big_chances_missed": 0.2303,
                "xgot": 0.3517,
                "offsides": 0.6012,
                "ball_carries": 14.2785,
                "total_progression": 41.0089,
                "progressive_carries": 1.0532,
                "shots_off_target": 1.0437,
                "duel_xg_multiplier": 0.86,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2128,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0489,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.2128,
                "goal_rate": 0.2484,
                "scorer_weight": 0.251,
                "squad_weight_total": 1.5114,
                "weight_share": 0.1661,
                "finishing_factor": 1.0489,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.2393,
                "goal_rate": 0.2484,
                "goals": 0,
                "shots_on_target": 0.6791,
                "total_shots": 1.7228,
                "expected_assists": 0.1089,
                "key_pass": 1.0585,
                "rating": 6.9521,
                "minutes": 76.68,
                "total_pass": 34.3447,
                "accurate_pass": 28.3155,
                "duels_won": 3.5472,
                "total_long_balls": 2.4266,
                "accurate_long_balls": 1.4634,
                "total_opp_half_passes": 24.5018,
                "accurate_opp_half_passes": 19.5654,
                "crosses_total": 1.0676,
                "crosses_accurate": 0.2385,
                "touches": 47.409,
                "possession_lost": 10.4536,
                "dispossessed": 0.6843,
                "duels_lost": 3.1781,
                "aerial_lost": 0.4634,
                "total_contest": 2.2332,
                "won_contest": 1.4511,
                "ball_recovery": 1.8384,
                "challenges_lost": 0.7732,
                "fouls": 0.651,
                "fouls_drawn": 0.7243,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1256,
                "tackles_won": 0.3793,
                "tackles": 0.5772,
                "clearances": 1.0214,
                "blocks": 0.0162,
                "big_chances_created": 0.3537,
                "big_chances_missed": 0.2303,
                "xgot": 0.3517,
                "offsides": 0.6012,
                "ball_carries": 14.2785,
                "total_progression": 41.0089,
                "progressive_carries": 1.0532,
                "shots_off_target": 1.0437,
                "duel_xg_multiplier": 0.86,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2128,
                "projected_assists": 0,
                "assist_probability": 0.1032,
                "finishing_factor": 1.0489,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1032,
                "assist_rate": 0.0,
                "provider_weight": 0.0871,
                "squad_weight_total": 1.1097,
                "weight_share": 0.0785,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Ayoze Pérez": {
          "player_id": 345195,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 22,
          "height": 180,
          "market_value": 5400000,
          "stats": {
            "expected_goals": 0.2994,
            "goal_rate": 0.3184,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0664,
            "key_pass": 1,
            "rating": 6.8608,
            "minutes": 73,
            "total_pass": 17,
            "accurate_pass": 13,
            "duels_won": 4,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 11,
            "accurate_opp_half_passes": 9,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 29,
            "possession_lost": 8.8464,
            "dispossessed": 1.0806,
            "duels_lost": 5,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.2563,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.2371,
            "offsides": 1,
            "ball_carries": 9,
            "total_progression": 29,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.8797,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Justin De Haas, César Tárrega",
            "opponent_faced": "Justin De Haas, César Tárrega",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.2587,
            "projected_assists": 0,
            "assist_probability": 0.0642,
            "finishing_factor": 1.0728,
            "creation_factor": 1.25,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 84,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1319,
                "expected_assists": 0.0537,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 22,
                "accurate_pass": 17,
                "key_pass": 2,
                "tackles": 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": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0251,
                "expected_assists": 0.0822,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 16,
                "accurate_pass": 16,
                "key_pass": 2,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 67,
                "rating": 7.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 2.1039,
                "expected_assists": 0.0451,
                "total_shots": 5,
                "shots_on_target": 3,
                "shots_off_target": 1,
                "total_pass": 14,
                "accurate_pass": 9,
                "key_pass": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 63,
                "rating": 6.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.6648,
                "expected_assists": 0.2722,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 6,
                "key_pass": 2,
                "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": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 14,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0085,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 4,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 62,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0989,
                "expected_assists": 0.0131,
                "total_shots": 1,
                "total_pass": 20,
                "accurate_pass": 16,
                "key_pass": 1,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 28,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2649,
                "expected_assists": 0.0355,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 10,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 61,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4146,
                "expected_assists": 0.0261,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 25,
                "accurate_pass": 20,
                "key_pass": 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": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 56,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1276,
                "expected_assists": 0.0107,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 7,
                "key_pass": 1,
                "tackles": 2,
                "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": 14083735,
              "match_date": "2026-05-24",
              "home_team": "Villarreal",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 75,
                "rating": 9.4,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.4919,
                "expected_assists": 0.047,
                "total_shots": 4,
                "shots_on_target": 2,
                "total_pass": 23,
                "accurate_pass": 18,
                "key_pass": 1,
                "clearances": 2,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1453,
            "combined_rank_score": 784.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 600.0,
            "sofascore_rating": 6.784,
            "sofascore_appearances": 25.0,
            "fifa_rank": 969.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8608,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ayoze Pérez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "César Dutra",
                  "ranking": 1448
                },
                {
                  "player_name": "Samed Baždar",
                  "ranking": 1449
                },
                {
                  "player_name": "Curtis Jones",
                  "ranking": 1450
                },
                {
                  "player_name": "Álvaro García",
                  "ranking": 1451
                },
                {
                  "player_name": "Natan",
                  "ranking": 1452
                }
              ],
              "lower": [
                {
                  "player_name": "Mike Penders",
                  "ranking": 1454
                },
                {
                  "player_name": "Jarrad Branthwaite",
                  "ranking": 1455
                },
                {
                  "player_name": "Leonardo Valencia",
                  "ranking": 1456
                },
                {
                  "player_name": "Gulyamkhaydar Gulyamov",
                  "ranking": 1457
                },
                {
                  "player_name": "Lachlan Wales",
                  "ranking": 1458
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.766,
          "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.766,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9985,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 2.0,
              "minutes": 144.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 3.75,
              "shots_on_target_pct": 50.0,
              "prior_reliability": 0.1067
            },
            "rationale": "XGBoost regressor (F_service) evaluated 34 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.11, 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.334,
                "goals": 0.3657,
                "goal_rate": 0.3657,
                "shots_on_target": 0.8726,
                "total_shots": 2.2806,
                "expected_assists": 0.0652,
                "key_pass": 0.9098,
                "rating": 6.8608,
                "minutes": 73.01,
                "total_pass": 16.5646,
                "accurate_pass": 13.0556,
                "duels_won": 3.5175,
                "total_long_balls": 0.8088,
                "accurate_long_balls": 0.6388,
                "total_opp_half_passes": 11.2791,
                "accurate_opp_half_passes": 8.562,
                "crosses_total": 0.4319,
                "crosses_accurate": 0.0,
                "touches": 29.2016,
                "possession_lost": 8.8597,
                "dispossessed": 1.0822,
                "duels_lost": 5.2187,
                "aerial_lost": 1.3085,
                "total_contest": 2.4436,
                "won_contest": 0.7199,
                "ball_recovery": 1.7765,
                "challenges_lost": 0.3807,
                "fouls": 0.7236,
                "fouls_drawn": 1.4458,
                "assists": 0.259,
                "assist_rate": 0.259,
                "interceptions": 0.1971,
                "tackles_won": 0.2253,
                "tackles": 0.7668,
                "clearances": 0.1519,
                "blocks": 0.0,
                "big_chances_created": 0.2663,
                "big_chances_missed": 0.8587,
                "xgot": 0.2646,
                "offsides": 0.5753,
                "ball_carries": 9.4161,
                "total_progression": 28.6598,
                "progressive_carries": 0.9873,
                "shots_off_target": 1.408
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.1506,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.128,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.1088,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0925,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0786,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0668,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0568,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 61.0,
                    "is_starting": true,
                    "weight": 0.0483,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Atlético Madrid",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 9.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.4261,
                  "totalOppositionHalfPasses": 10.2278,
                  "accurateOppositionHalfPasses": 7.78,
                  "accuratePass": 11.4109,
                  "totalShots": 1.9618
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.33398115634918213,
                    "model_output": 0.334,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0602
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0467
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0154
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0105
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0098
                        }
                      ],
                      "others": -0.0065,
                      "total": 0.334,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.265447
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.166401
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.049296
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.03214
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.029195
                        }
                      ],
                      "others_margin": -0.019215
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.36568987369537354,
                    "model_output": 0.3657,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0728
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.036
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0199
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0162
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0122
                        }
                      ],
                      "others": 0.0063,
                      "total": 0.3657,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.307256
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.123059
                        },
                        {
                          "name": "goals",
                          "margin": 0.061983
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.047845
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.034647
                        }
                      ],
                      "others_margin": 0.017222
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.8725818395614624,
                    "model_output": 0.8726,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1662
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0556
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0495
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0416
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0356
                        }
                      ],
                      "others": 0.0591,
                      "total": 0.8726,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.270039
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.076153
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.063226
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.050252
                        },
                        {
                          "name": "goals",
                          "margin": -0.042782
                        }
                      ],
                      "others_margin": 0.070075
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.2805519104003906,
                    "model_output": 2.2806,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5239
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1704
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0686
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0432
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.038
                        }
                      ],
                      "others": 0.0557,
                      "total": 2.2805,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.523909
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.170413
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.068582
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.043176
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.038002
                        }
                      ],
                      "others_margin": 0.05572
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06515686959028244,
                    "model_output": 0.0652,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0144
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0093
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0075
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0052
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0024
                        }
                      ],
                      "others": -0.0044,
                      "total": 0.0652,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.20153
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.125761
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.114576
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.080107
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.035181
                        }
                      ],
                      "others_margin": -0.065475
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.9097642302513123,
                    "model_output": 0.9098,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2152
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0747
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0494
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0328
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.028
                        }
                      ],
                      "others": 0.0496,
                      "total": 0.9098,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.274766
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.080106
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.052287
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.03631
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.031992
                        }
                      ],
                      "others_margin": 0.056134
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.860832691192627,
                    "model_output": 6.8608,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0611
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0209
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0208
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0178
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0105
                        }
                      ],
                      "others": -0.0176,
                      "total": 6.8608,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.061077
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.020932
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.020791
                        },
                        {
                          "name": "rating",
                          "margin": 0.017756
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.010501
                        }
                      ],
                      "others_margin": -0.017503
                    }
                  }
                ],
                "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.9985, quality 0.467)",
              "stats": {
                "expected_goals": 0.3335,
                "goals": 0.3651,
                "goal_rate": 0.3651,
                "shots_on_target": 0.8713,
                "total_shots": 2.2772,
                "expected_assists": 0.0651,
                "key_pass": 0.9084,
                "rating": 6.8608,
                "minutes": 73.01,
                "total_pass": 16.5398,
                "accurate_pass": 13.036,
                "duels_won": 3.5122,
                "total_long_balls": 0.8076,
                "accurate_long_balls": 0.6378,
                "total_opp_half_passes": 11.2622,
                "accurate_opp_half_passes": 8.5492,
                "crosses_total": 0.4313,
                "crosses_accurate": 0.0,
                "touches": 29.1578,
                "possession_lost": 8.8464,
                "dispossessed": 1.0806,
                "duels_lost": 5.2109,
                "aerial_lost": 1.3065,
                "total_contest": 2.4399,
                "won_contest": 0.7188,
                "ball_recovery": 1.7738,
                "challenges_lost": 0.3801,
                "fouls": 0.7225,
                "fouls_drawn": 1.4436,
                "assists": 0.2586,
                "assist_rate": 0.2586,
                "interceptions": 0.1968,
                "tackles_won": 0.225,
                "tackles": 0.7656,
                "clearances": 0.1517,
                "blocks": 0.0,
                "big_chances_created": 0.2659,
                "big_chances_missed": 0.8574,
                "xgot": 0.2642,
                "offsides": 0.5744,
                "ball_carries": 9.402,
                "total_progression": 28.6168,
                "progressive_carries": 0.9858,
                "shots_off_target": 1.4059
              },
              "params": {
                "market_value_eur": 5400000,
                "quality_factor": 0.4671,
                "boost_factor": 0.9985,
                "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.0089)",
              "stats": {
                "expected_goals": 0.3335,
                "goals": 0.3619,
                "goal_rate": 0.3619,
                "shots_on_target": 0.877,
                "total_shots": 2.284,
                "expected_assists": 0.0651,
                "key_pass": 0.9084,
                "rating": 6.8608,
                "minutes": 73.01,
                "total_pass": 16.5398,
                "accurate_pass": 13.036,
                "duels_won": 3.5122,
                "total_long_balls": 0.8076,
                "accurate_long_balls": 0.6378,
                "total_opp_half_passes": 11.2622,
                "accurate_opp_half_passes": 8.5492,
                "crosses_total": 0.4275,
                "crosses_accurate": 0.0,
                "touches": 29.1578,
                "possession_lost": 8.8464,
                "dispossessed": 1.0806,
                "duels_lost": 5.2109,
                "aerial_lost": 1.3065,
                "total_contest": 2.4399,
                "won_contest": 0.7188,
                "ball_recovery": 1.7738,
                "challenges_lost": 0.3801,
                "fouls": 0.7251,
                "fouls_drawn": 1.4533,
                "assists": 0.2563,
                "assist_rate": 0.2563,
                "interceptions": 0.1996,
                "tackles_won": 0.223,
                "tackles": 0.7656,
                "clearances": 0.1517,
                "blocks": 0.0,
                "big_chances_created": 0.2659,
                "big_chances_missed": 0.8574,
                "xgot": 0.2642,
                "offsides": 0.5693,
                "ball_carries": 9.402,
                "total_progression": 28.6168,
                "progressive_carries": 0.9858,
                "shots_off_target": 1.4059
              },
              "params": {
                "blend_weight": 0.0089,
                "history_matches": 34,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8112,
                "prior_reliability": 0.1067,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 1.4436,
                  "after": 1.4533
                },
                {
                  "stat": "totalShots",
                  "before": 2.2772,
                  "after": 2.284
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.8713,
                  "after": 0.877
                },
                {
                  "stat": "totalOffside",
                  "before": 0.5744,
                  "after": 0.5693
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.3335,
                "goals": 0.3619,
                "goal_rate": 0.3619,
                "shots_on_target": 0.877,
                "total_shots": 2.284,
                "expected_assists": 0.0651,
                "key_pass": 0.9084,
                "rating": 6.8608,
                "minutes": 73.01,
                "total_pass": 16.5398,
                "accurate_pass": 13.036,
                "duels_won": 3.5122,
                "total_long_balls": 0.8076,
                "accurate_long_balls": 0.6378,
                "total_opp_half_passes": 11.2622,
                "accurate_opp_half_passes": 8.5492,
                "crosses_total": 0.4275,
                "crosses_accurate": 0.0,
                "touches": 29.1578,
                "possession_lost": 8.8464,
                "dispossessed": 1.0806,
                "duels_lost": 5.2109,
                "aerial_lost": 1.3065,
                "total_contest": 2.4399,
                "won_contest": 0.7188,
                "ball_recovery": 1.7738,
                "challenges_lost": 0.3801,
                "fouls": 0.7251,
                "fouls_drawn": 1.4533,
                "assists": 0.2563,
                "assist_rate": 0.2563,
                "interceptions": 0.1996,
                "tackles_won": 0.223,
                "tackles": 0.7656,
                "clearances": 0.1517,
                "blocks": 0.0,
                "big_chances_created": 0.2659,
                "big_chances_missed": 0.8574,
                "xgot": 0.2642,
                "offsides": 0.5693,
                "ball_carries": 9.402,
                "total_progression": 28.6168,
                "progressive_carries": 0.9858,
                "shots_off_target": 1.4059
              },
              "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.2934,
                "goals": 0.3184,
                "goal_rate": 0.3184,
                "shots_on_target": 0.7715,
                "total_shots": 2.0092,
                "expected_assists": 0.0651,
                "key_pass": 0.9084,
                "rating": 6.8608,
                "minutes": 73.01,
                "total_pass": 16.5398,
                "accurate_pass": 13.036,
                "duels_won": 3.5122,
                "total_long_balls": 0.8076,
                "accurate_long_balls": 0.6378,
                "total_opp_half_passes": 11.2622,
                "accurate_opp_half_passes": 8.5492,
                "crosses_total": 0.4275,
                "crosses_accurate": 0.0,
                "touches": 29.1578,
                "possession_lost": 8.8464,
                "dispossessed": 1.0806,
                "duels_lost": 5.2109,
                "aerial_lost": 1.3065,
                "total_contest": 2.4399,
                "won_contest": 0.7188,
                "ball_recovery": 1.7738,
                "challenges_lost": 0.3801,
                "fouls": 0.7251,
                "fouls_drawn": 1.4533,
                "assists": 0.2563,
                "assist_rate": 0.2563,
                "interceptions": 0.1996,
                "tackles_won": 0.223,
                "tackles": 0.7656,
                "clearances": 0.1517,
                "blocks": 0.0,
                "big_chances_created": 0.2659,
                "big_chances_missed": 0.7543,
                "xgot": 0.2324,
                "offsides": 0.5693,
                "ball_carries": 9.402,
                "total_progression": 28.6168,
                "progressive_carries": 0.9858,
                "shots_off_target": 1.2368,
                "duel_xg_multiplier": 0.8797,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Justin De Haas, César Tárrega",
                  "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.8797,
                  "skill_edge": -0.0319,
                  "height_edge": -0.05,
                  "attacker_skill": 0.4671,
                  "defender_skill": 0.5379,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Justin De Haas",
                      "market_value": 7700000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.5256
                    },
                    {
                      "player": "César Tárrega",
                      "market_value": 9300000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.5502
                    }
                  ],
                  "xg_override": 0.2934
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.284,
                  "after": 2.0092
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.4059,
                  "after": 1.2368
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.877,
                  "after": 0.7715
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.8574,
                  "after": 0.7543
                },
                {
                  "stat": "goals",
                  "before": 0.3619,
                  "after": 0.3184
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.3335,
                  "after": 0.2934
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.2642,
                  "after": 0.2324
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.2934,
                "goal_rate": 0.3184,
                "goals": 0,
                "shots_on_target": 0.7715,
                "total_shots": 2.0092,
                "expected_assists": 0.0651,
                "key_pass": 0.9084,
                "rating": 6.8608,
                "minutes": 73.01,
                "total_pass": 16.5398,
                "accurate_pass": 13.036,
                "duels_won": 3.5122,
                "total_long_balls": 0.8076,
                "accurate_long_balls": 0.6378,
                "total_opp_half_passes": 11.2622,
                "accurate_opp_half_passes": 8.5492,
                "crosses_total": 0.4275,
                "crosses_accurate": 0.0,
                "touches": 29.1578,
                "possession_lost": 8.8464,
                "dispossessed": 1.0806,
                "duels_lost": 5.2109,
                "aerial_lost": 1.3065,
                "total_contest": 2.4399,
                "won_contest": 0.7188,
                "ball_recovery": 1.7738,
                "challenges_lost": 0.3801,
                "fouls": 0.7251,
                "fouls_drawn": 1.4533,
                "assist_rate": 0.2563,
                "assists": 0,
                "interceptions": 0.1996,
                "tackles_won": 0.223,
                "tackles": 0.7656,
                "clearances": 0.1517,
                "blocks": 0.0,
                "big_chances_created": 0.2659,
                "big_chances_missed": 0.7543,
                "xgot": 0.2324,
                "offsides": 0.5693,
                "ball_carries": 9.402,
                "total_progression": 28.6168,
                "progressive_carries": 0.9858,
                "shots_off_target": 1.2368,
                "duel_xg_multiplier": 0.8797,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.2994,
                "goal_rate": 0.3184,
                "goals": 0,
                "shots_on_target": 0.7715,
                "total_shots": 2.0092,
                "expected_assists": 0.0664,
                "key_pass": 0.9084,
                "rating": 6.8608,
                "minutes": 73.01,
                "total_pass": 16.5398,
                "accurate_pass": 13.036,
                "duels_won": 3.5122,
                "total_long_balls": 0.8076,
                "accurate_long_balls": 0.6378,
                "total_opp_half_passes": 11.2622,
                "accurate_opp_half_passes": 8.5492,
                "crosses_total": 0.4275,
                "crosses_accurate": 0.0,
                "touches": 29.1578,
                "possession_lost": 8.8464,
                "dispossessed": 1.0806,
                "duels_lost": 5.2109,
                "aerial_lost": 1.3065,
                "total_contest": 2.4399,
                "won_contest": 0.7188,
                "ball_recovery": 1.7738,
                "challenges_lost": 0.3801,
                "fouls": 0.7251,
                "fouls_drawn": 1.4533,
                "assist_rate": 0.2563,
                "assists": 0,
                "interceptions": 0.1996,
                "tackles_won": 0.223,
                "tackles": 0.7656,
                "clearances": 0.1517,
                "blocks": 0.0,
                "big_chances_created": 0.2659,
                "big_chances_missed": 0.7543,
                "xgot": 0.2371,
                "offsides": 0.5693,
                "ball_carries": 9.402,
                "total_progression": 28.6168,
                "progressive_carries": 0.9858,
                "shots_off_target": 1.2368,
                "duel_xg_multiplier": 0.8797,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0728,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.2934,
                  "after": 0.2994
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 79.0)",
              "stats": {
                "expected_goals": 0.2994,
                "goal_rate": 0.3184,
                "goals": 0,
                "shots_on_target": 0.7715,
                "total_shots": 2.0092,
                "expected_assists": 0.0664,
                "key_pass": 0.9084,
                "rating": 6.8608,
                "minutes": 73.01,
                "total_pass": 16.5398,
                "accurate_pass": 13.036,
                "duels_won": 3.5122,
                "total_long_balls": 0.8076,
                "accurate_long_balls": 0.6378,
                "total_opp_half_passes": 11.2622,
                "accurate_opp_half_passes": 8.5492,
                "crosses_total": 0.4275,
                "crosses_accurate": 0.0,
                "touches": 29.1578,
                "possession_lost": 8.8464,
                "dispossessed": 1.0806,
                "duels_lost": 5.2109,
                "aerial_lost": 1.3065,
                "total_contest": 2.4399,
                "won_contest": 0.7188,
                "ball_recovery": 1.7738,
                "challenges_lost": 0.3801,
                "fouls": 0.7251,
                "fouls_drawn": 1.4533,
                "assist_rate": 0.2563,
                "assists": 0,
                "interceptions": 0.1996,
                "tackles_won": 0.223,
                "tackles": 0.7656,
                "clearances": 0.1517,
                "blocks": 0.0,
                "big_chances_created": 0.2659,
                "big_chances_missed": 0.7543,
                "xgot": 0.2371,
                "offsides": 0.5693,
                "ball_carries": 9.402,
                "total_progression": 28.6168,
                "progressive_carries": 0.9858,
                "shots_off_target": 1.2368,
                "duel_xg_multiplier": 0.8797,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0728,
                "creation_factor": 1.25,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 11,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 1453,
                "fifa_rank": 969.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.2994,
                "goal_rate": 0.3184,
                "goals": 0,
                "shots_on_target": 0.7715,
                "total_shots": 2.0092,
                "expected_assists": 0.0664,
                "key_pass": 0.9084,
                "rating": 6.8608,
                "minutes": 73.01,
                "total_pass": 16.5398,
                "accurate_pass": 13.036,
                "duels_won": 3.5122,
                "total_long_balls": 0.8076,
                "accurate_long_balls": 0.6378,
                "total_opp_half_passes": 11.2622,
                "accurate_opp_half_passes": 8.5492,
                "crosses_total": 0.4275,
                "crosses_accurate": 0.0,
                "touches": 29.1578,
                "possession_lost": 8.8464,
                "dispossessed": 1.0806,
                "duels_lost": 5.2109,
                "aerial_lost": 1.3065,
                "total_contest": 2.4399,
                "won_contest": 0.7188,
                "ball_recovery": 1.7738,
                "challenges_lost": 0.3801,
                "fouls": 0.7251,
                "fouls_drawn": 1.4533,
                "assist_rate": 0.2563,
                "assists": 0,
                "interceptions": 0.1996,
                "tackles_won": 0.223,
                "tackles": 0.7656,
                "clearances": 0.1517,
                "blocks": 0.0,
                "big_chances_created": 0.2659,
                "big_chances_missed": 0.7543,
                "xgot": 0.2371,
                "offsides": 0.5693,
                "ball_carries": 9.402,
                "total_progression": 28.6168,
                "progressive_carries": 0.9858,
                "shots_off_target": 1.2368,
                "duel_xg_multiplier": 0.8797,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2587,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0728,
                "creation_factor": 1.25,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.2587,
                "goal_rate": 0.3184,
                "scorer_weight": 0.3212,
                "squad_weight_total": 1.5114,
                "weight_share": 0.2125,
                "finishing_factor": 1.0728,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.2994,
                "goal_rate": 0.3184,
                "goals": 0,
                "shots_on_target": 0.7715,
                "total_shots": 2.0092,
                "expected_assists": 0.0664,
                "key_pass": 0.9084,
                "rating": 6.8608,
                "minutes": 73.01,
                "total_pass": 16.5398,
                "accurate_pass": 13.036,
                "duels_won": 3.5122,
                "total_long_balls": 0.8076,
                "accurate_long_balls": 0.6378,
                "total_opp_half_passes": 11.2622,
                "accurate_opp_half_passes": 8.5492,
                "crosses_total": 0.4275,
                "crosses_accurate": 0.0,
                "touches": 29.1578,
                "possession_lost": 8.8464,
                "dispossessed": 1.0806,
                "duels_lost": 5.2109,
                "aerial_lost": 1.3065,
                "total_contest": 2.4399,
                "won_contest": 0.7188,
                "ball_recovery": 1.7738,
                "challenges_lost": 0.3801,
                "fouls": 0.7251,
                "fouls_drawn": 1.4533,
                "assist_rate": 0.2563,
                "assists": 0,
                "interceptions": 0.1996,
                "tackles_won": 0.223,
                "tackles": 0.7656,
                "clearances": 0.1517,
                "blocks": 0.0,
                "big_chances_created": 0.2659,
                "big_chances_missed": 0.7543,
                "xgot": 0.2371,
                "offsides": 0.5693,
                "ball_carries": 9.402,
                "total_progression": 28.6168,
                "progressive_carries": 0.9858,
                "shots_off_target": 1.2368,
                "duel_xg_multiplier": 0.8797,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2587,
                "projected_assists": 0,
                "assist_probability": 0.0642,
                "finishing_factor": 1.0728,
                "creation_factor": 1.25,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0642,
                "assist_rate": 0.2563,
                "provider_weight": 0.083,
                "squad_weight_total": 1.1097,
                "weight_share": 0.0748,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Alberto Moleiro": {
          "player_id": 1012444,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 10,
          "height": 172,
          "market_value": 54000000,
          "stats": {
            "expected_goals": 0.3937,
            "goal_rate": 0.3487,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 3,
            "expected_assists": 0.2197,
            "key_pass": 2,
            "rating": 7.2375,
            "minutes": 80,
            "total_pass": 36,
            "accurate_pass": 31,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 28,
            "accurate_opp_half_passes": 23,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 52,
            "possession_lost": 12.4293,
            "dispossessed": 1.2093,
            "duels_lost": 5,
            "aerial_lost": 0,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.3282,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 1,
            "xgot": 0.421,
            "offsides": 0,
            "ball_carries": 18,
            "total_progression": 85,
            "progressive_carries": 4,
            "shots_off_target": 2,
            "duel_xg_multiplier": 1.1097,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.5,
            "aerial_won": 1,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.275,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Justin De Haas, César Tárrega",
            "opponent_faced": "Justin De Haas, César Tárrega",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.3254,
            "projected_assists": 0,
            "assist_probability": 0.1972,
            "finishing_factor": 0.9144,
            "creation_factor": 1.25,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.3085,
                "expected_assists": 0.1937,
                "total_shots": 4,
                "shots_on_target": 2,
                "total_pass": 39,
                "accurate_pass": 30,
                "key_pass": 4,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 86,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1043,
                "expected_assists": 0.1277,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 32,
                "accurate_pass": 30,
                "key_pass": 3,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 8.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 2.0,
                "assists": 2,
                "expected_goals": 0.8805,
                "expected_assists": 0.6499,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 47,
                "accurate_pass": 42,
                "key_pass": 7,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 80,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3466,
                "expected_assists": 0.6761,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 54,
                "accurate_pass": 44,
                "key_pass": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 35,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1381,
                "expected_assists": 0.1304,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 23,
                "key_pass": 2,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 62,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2202,
                "expected_assists": 0.158,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 31,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 27,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2319,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 60,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0657,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 26,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 56,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.1651,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 26,
                "key_pass": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083735,
              "match_date": "2026-05-24",
              "home_team": "Villarreal",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0207,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 23,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1102,
            "combined_rank_score": 671.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 494.0,
            "sofascore_rating": 6.8622,
            "sofascore_appearances": 37.0,
            "fifa_rank": 849.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.2375,
            "source_file": "data/player_rankings.csv",
            "player_name": "Alberto Moleiro",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Merih Demiral",
                  "ranking": 1097
                },
                {
                  "player_name": "César Azpilicueta",
                  "ranking": 1098
                },
                {
                  "player_name": "Sardor Mirzayev",
                  "ranking": 1099
                },
                {
                  "player_name": "Mukhammadkodir Khamraliev",
                  "ranking": 1100
                },
                {
                  "player_name": "Pascal Groß",
                  "ranking": 1101
                }
              ],
              "lower": [
                {
                  "player_name": "Angelo Stiller",
                  "ranking": 1103
                },
                {
                  "player_name": "Mauro Júnior",
                  "ranking": 1104
                },
                {
                  "player_name": "Konstantinos Tzolakis",
                  "ranking": 1105
                },
                {
                  "player_name": "Pau Torres",
                  "ranking": 1106
                },
                {
                  "player_name": "Ju-yeong Jo",
                  "ranking": 1107
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.766,
          "history_matches": 46,
          "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": 46,
            "data_confidence": 0.766,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0098,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 2.0,
              "minutes": 142.0,
              "goals_per90": 0.0,
              "assists_per90": 0.625,
              "shots_per90": 0.0,
              "prior_reliability": 0.1067
            },
            "rationale": "XGBoost regressor (F_service) evaluated 46 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.11, gls/90: 0.0, ast/90: 0.625)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.3444,
                "goals": 0.3134,
                "goal_rate": 0.3134,
                "shots_on_target": 1.2537,
                "total_shots": 2.7882,
                "expected_assists": 0.2133,
                "key_pass": 1.9585,
                "rating": 7.2375,
                "minutes": 80.33,
                "total_pass": 36.1093,
                "accurate_pass": 30.6133,
                "duels_won": 2.412,
                "total_long_balls": 1.015,
                "accurate_long_balls": 0.574,
                "total_opp_half_passes": 28.0316,
                "accurate_opp_half_passes": 23.017,
                "crosses_total": 3.5312,
                "crosses_accurate": 1.3055,
                "touches": 51.2372,
                "possession_lost": 12.3087,
                "dispossessed": 1.1976,
                "duels_lost": 4.4788,
                "aerial_lost": 0.2489,
                "total_contest": 2.1153,
                "won_contest": 0.8755,
                "ball_recovery": 2.3355,
                "challenges_lost": 1.0442,
                "fouls": 0.7564,
                "fouls_drawn": 0.6245,
                "assists": 0.3234,
                "assist_rate": 0.3234,
                "interceptions": 0.2133,
                "tackles_won": 0.6272,
                "tackles": 0.8858,
                "clearances": 0.2991,
                "blocks": 0.0631,
                "big_chances_created": 0.5209,
                "big_chances_missed": 0.5846,
                "xgot": 0.3682,
                "offsides": 0.1966,
                "ball_carries": 17.6773,
                "total_progression": 84.2077,
                "progressive_carries": 3.5524,
                "shots_off_target": 1.5345
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1084,
                    "rating": 8.8
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 35.0,
                    "is_starting": false,
                    "weight": 0.0783,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.0566,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.3824,
                  "totalOppositionHalfPasses": 27.1255,
                  "accurateOppositionHalfPasses": 22.6224,
                  "accuratePass": 28.9677,
                  "totalShots": 1.9465
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.34444576501846313,
                    "model_output": 0.3444,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0747
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0509
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0225
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0142
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0149
                        }
                      ],
                      "others": 0.0143,
                      "total": 0.3444,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.320115
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.171179
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.072245
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.046178
                        },
                        {
                          "name": "goals",
                          "margin": 0.046131
                        }
                      ],
                      "others_margin": 0.042758
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.3133775293827057,
                    "model_output": 0.3134,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0718
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0327
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0284
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0219
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0118
                        }
                      ],
                      "others": 0.0013,
                      "total": 0.3134,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.303671
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.112646
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.097303
                        },
                        {
                          "name": "goals",
                          "margin": 0.075889
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.038666
                        }
                      ],
                      "others_margin": 0.004068
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 1.2536849975585938,
                    "model_output": 1.2537,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1968
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0603
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0606
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.044
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0461
                        }
                      ],
                      "others": 0.3097,
                      "total": 1.2537,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.312639
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.079068
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.073594
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.050214
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.050042
                        }
                      ],
                      "others_margin": 0.283793
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.7882184982299805,
                    "model_output": 2.7882,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5881
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1782
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.1112
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.1073
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0791
                        }
                      ],
                      "others": 0.3436,
                      "total": 2.7882,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.588142
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.178215
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.111167
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.107286
                        },
                        {
                          "name": "goals",
                          "margin": 0.079124
                        }
                      ],
                      "others_margin": 0.343535
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.2132750153541565,
                    "model_output": 0.2133,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0162
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0199
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.012
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.011
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0115
                        }
                      ],
                      "others": 0.0783,
                      "total": 0.2133,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.22414
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.22047
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.113114
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.093588
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.089307
                        }
                      ],
                      "others_margin": 0.456172
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.9584664106369019,
                    "model_output": 1.9585,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2274
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.1434
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.1255
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.1153
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1029
                        }
                      ],
                      "others": 0.5635,
                      "total": 1.9585,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.28835
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.146617
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.112809
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.093476
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.076591
                        }
                      ],
                      "others_margin": 0.339305
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.2375054359436035,
                    "model_output": 7.2375,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0915
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0623
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0583
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0449
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0375
                        }
                      ],
                      "others": 0.1747,
                      "total": 7.2375,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.09155
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.062262
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.058311
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.044889
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.037515
                        }
                      ],
                      "others_margin": 0.174694
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 46,
                  "role_matches": 37,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0098, quality 0.837)",
              "stats": {
                "expected_goals": 0.3478,
                "goals": 0.3164,
                "goal_rate": 0.3164,
                "shots_on_target": 1.266,
                "total_shots": 2.8155,
                "expected_assists": 0.2154,
                "key_pass": 1.9777,
                "rating": 7.2375,
                "minutes": 80.33,
                "total_pass": 36.4632,
                "accurate_pass": 30.9133,
                "duels_won": 2.4356,
                "total_long_balls": 1.0249,
                "accurate_long_balls": 0.5796,
                "total_opp_half_passes": 28.3063,
                "accurate_opp_half_passes": 23.2426,
                "crosses_total": 3.5658,
                "crosses_accurate": 1.3183,
                "touches": 51.7393,
                "possession_lost": 12.4293,
                "dispossessed": 1.2093,
                "duels_lost": 4.5227,
                "aerial_lost": 0.2513,
                "total_contest": 2.136,
                "won_contest": 0.8841,
                "ball_recovery": 2.3584,
                "challenges_lost": 1.0544,
                "fouls": 0.7638,
                "fouls_drawn": 0.6306,
                "assists": 0.3266,
                "assist_rate": 0.3266,
                "interceptions": 0.2154,
                "tackles_won": 0.6333,
                "tackles": 0.8945,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.526,
                "big_chances_missed": 0.5903,
                "xgot": 0.3718,
                "offsides": 0.1985,
                "ball_carries": 17.8505,
                "total_progression": 85.0329,
                "progressive_carries": 3.5872,
                "shots_off_target": 1.5495
              },
              "params": {
                "market_value_eur": 54000000,
                "quality_factor": 0.837,
                "boost_factor": 1.0098,
                "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.0068)",
              "stats": {
                "expected_goals": 0.3478,
                "goals": 0.3142,
                "goal_rate": 0.3142,
                "shots_on_target": 1.2574,
                "total_shots": 2.7964,
                "expected_assists": 0.2154,
                "key_pass": 1.9777,
                "rating": 7.2375,
                "minutes": 80.33,
                "total_pass": 36.4632,
                "accurate_pass": 30.9133,
                "duels_won": 2.4356,
                "total_long_balls": 1.0249,
                "accurate_long_balls": 0.5796,
                "total_opp_half_passes": 28.3063,
                "accurate_opp_half_passes": 23.2426,
                "crosses_total": 3.5605,
                "crosses_accurate": 1.3183,
                "touches": 51.7393,
                "possession_lost": 12.4293,
                "dispossessed": 1.2093,
                "duels_lost": 4.5227,
                "aerial_lost": 0.2513,
                "total_contest": 2.136,
                "won_contest": 0.8841,
                "ball_recovery": 2.3584,
                "challenges_lost": 1.0544,
                "fouls": 0.7624,
                "fouls_drawn": 0.6301,
                "assists": 0.3282,
                "assist_rate": 0.3282,
                "interceptions": 0.2139,
                "tackles_won": 0.6404,
                "tackles": 0.8945,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.526,
                "big_chances_missed": 0.5903,
                "xgot": 0.3718,
                "offsides": 0.2009,
                "ball_carries": 17.8505,
                "total_progression": 85.0329,
                "progressive_carries": 3.5872,
                "shots_off_target": 1.5495
              },
              "params": {
                "blend_weight": 0.0068,
                "history_matches": 46,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8926,
                "prior_reliability": 0.1067,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.8155,
                  "after": 2.7964
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 1.266,
                  "after": 1.2574
                },
                {
                  "stat": "wonTackle",
                  "before": 0.6333,
                  "after": 0.6404
                },
                {
                  "stat": "totalCross",
                  "before": 3.5658,
                  "after": 3.5605
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.3478,
                "goals": 0.3142,
                "goal_rate": 0.3142,
                "shots_on_target": 1.2574,
                "total_shots": 2.8069,
                "expected_assists": 0.2154,
                "key_pass": 1.9777,
                "rating": 7.2375,
                "minutes": 80.33,
                "total_pass": 36.4632,
                "accurate_pass": 30.9133,
                "duels_won": 2.4356,
                "total_long_balls": 1.0249,
                "accurate_long_balls": 0.5796,
                "total_opp_half_passes": 28.3063,
                "accurate_opp_half_passes": 23.2426,
                "crosses_total": 3.5605,
                "crosses_accurate": 1.3183,
                "touches": 51.7393,
                "possession_lost": 12.4293,
                "dispossessed": 1.2093,
                "duels_lost": 4.5227,
                "aerial_lost": 0.2513,
                "total_contest": 2.136,
                "won_contest": 0.8841,
                "ball_recovery": 2.3584,
                "challenges_lost": 1.0544,
                "fouls": 0.7624,
                "fouls_drawn": 0.6301,
                "assists": 0.3282,
                "assist_rate": 0.3282,
                "interceptions": 0.2139,
                "tackles_won": 0.6404,
                "tackles": 0.8945,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.526,
                "big_chances_missed": 0.5903,
                "xgot": 0.3718,
                "offsides": 0.2009,
                "ball_carries": 17.8505,
                "total_progression": 85.0329,
                "progressive_carries": 3.5872,
                "shots_off_target": 1.5495
              },
              "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.386,
                "goals": 0.3487,
                "goal_rate": 0.3487,
                "shots_on_target": 1.3953,
                "total_shots": 3.1148,
                "expected_assists": 0.2154,
                "key_pass": 1.9777,
                "rating": 7.2375,
                "minutes": 80.33,
                "total_pass": 36.4632,
                "accurate_pass": 30.9133,
                "duels_won": 2.4356,
                "total_long_balls": 1.0249,
                "accurate_long_balls": 0.5796,
                "total_opp_half_passes": 28.3063,
                "accurate_opp_half_passes": 23.2426,
                "crosses_total": 3.5605,
                "crosses_accurate": 1.3183,
                "touches": 51.7393,
                "possession_lost": 12.4293,
                "dispossessed": 1.2093,
                "duels_lost": 4.5227,
                "aerial_lost": 0.2513,
                "total_contest": 2.136,
                "won_contest": 0.8841,
                "ball_recovery": 2.3584,
                "challenges_lost": 1.0544,
                "fouls": 0.7624,
                "fouls_drawn": 0.6301,
                "assists": 0.3282,
                "assist_rate": 0.3282,
                "interceptions": 0.2139,
                "tackles_won": 0.6404,
                "tackles": 0.8945,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.526,
                "big_chances_missed": 0.6551,
                "xgot": 0.4126,
                "offsides": 0.2009,
                "ball_carries": 17.8505,
                "total_progression": 85.0329,
                "progressive_carries": 3.5872,
                "shots_off_target": 1.7195,
                "duel_xg_multiplier": 1.1097,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.275,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Justin De Haas, César Tárrega",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.275,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 1.1097,
                  "skill_edge": 0.1346,
                  "height_edge": -0.06,
                  "attacker_skill": 0.837,
                  "defender_skill": 0.5379,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Justin De Haas",
                      "market_value": 7700000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.5256
                    },
                    {
                      "player": "César Tárrega",
                      "market_value": 9300000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.5502
                    }
                  ],
                  "xg_override": 0.386
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.8069,
                  "after": 3.1148
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.5495,
                  "after": 1.7195
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 1.2574,
                  "after": 1.3953
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.5903,
                  "after": 0.6551
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.3718,
                  "after": 0.4126
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.3478,
                  "after": 0.386
                },
                {
                  "stat": "goals",
                  "before": 0.3142,
                  "after": 0.3487
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.386,
                "goal_rate": 0.3487,
                "goals": 0,
                "shots_on_target": 1.3953,
                "total_shots": 3.1148,
                "expected_assists": 0.2154,
                "key_pass": 1.9777,
                "rating": 7.2375,
                "minutes": 80.33,
                "total_pass": 36.4632,
                "accurate_pass": 30.9133,
                "duels_won": 2.4356,
                "total_long_balls": 1.0249,
                "accurate_long_balls": 0.5796,
                "total_opp_half_passes": 28.3063,
                "accurate_opp_half_passes": 23.2426,
                "crosses_total": 3.5605,
                "crosses_accurate": 1.3183,
                "touches": 51.7393,
                "possession_lost": 12.4293,
                "dispossessed": 1.2093,
                "duels_lost": 4.5227,
                "aerial_lost": 0.2513,
                "total_contest": 2.136,
                "won_contest": 0.8841,
                "ball_recovery": 2.3584,
                "challenges_lost": 1.0544,
                "fouls": 0.7624,
                "fouls_drawn": 0.6301,
                "assist_rate": 0.3282,
                "assists": 0,
                "interceptions": 0.2139,
                "tackles_won": 0.6404,
                "tackles": 0.8945,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.526,
                "big_chances_missed": 0.6551,
                "xgot": 0.4126,
                "offsides": 0.2009,
                "ball_carries": 17.8505,
                "total_progression": 85.0329,
                "progressive_carries": 3.5872,
                "shots_off_target": 1.7195,
                "duel_xg_multiplier": 1.1097,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.275,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.3937,
                "goal_rate": 0.3487,
                "goals": 0,
                "shots_on_target": 1.3953,
                "total_shots": 3.1148,
                "expected_assists": 0.2197,
                "key_pass": 1.9777,
                "rating": 7.2375,
                "minutes": 80.33,
                "total_pass": 36.4632,
                "accurate_pass": 30.9133,
                "duels_won": 2.4356,
                "total_long_balls": 1.0249,
                "accurate_long_balls": 0.5796,
                "total_opp_half_passes": 28.3063,
                "accurate_opp_half_passes": 23.2426,
                "crosses_total": 3.5605,
                "crosses_accurate": 1.3183,
                "touches": 51.7393,
                "possession_lost": 12.4293,
                "dispossessed": 1.2093,
                "duels_lost": 4.5227,
                "aerial_lost": 0.2513,
                "total_contest": 2.136,
                "won_contest": 0.8841,
                "ball_recovery": 2.3584,
                "challenges_lost": 1.0544,
                "fouls": 0.7624,
                "fouls_drawn": 0.6301,
                "assist_rate": 0.3282,
                "assists": 0,
                "interceptions": 0.2139,
                "tackles_won": 0.6404,
                "tackles": 0.8945,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.526,
                "big_chances_missed": 0.6551,
                "xgot": 0.421,
                "offsides": 0.2009,
                "ball_carries": 17.8505,
                "total_progression": 85.0329,
                "progressive_carries": 3.5872,
                "shots_off_target": 1.7195,
                "duel_xg_multiplier": 1.1097,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.275,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9144,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.386,
                  "after": 0.3937
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 1 by projected rating, fifa_overall 79.0)",
              "stats": {
                "expected_goals": 0.3937,
                "goal_rate": 0.3487,
                "goals": 0,
                "shots_on_target": 1.3953,
                "total_shots": 3.1148,
                "expected_assists": 0.2197,
                "key_pass": 1.9777,
                "rating": 7.2375,
                "minutes": 80.33,
                "total_pass": 36.4632,
                "accurate_pass": 30.9133,
                "duels_won": 2.4356,
                "total_long_balls": 1.0249,
                "accurate_long_balls": 0.5796,
                "total_opp_half_passes": 28.3063,
                "accurate_opp_half_passes": 23.2426,
                "crosses_total": 3.5605,
                "crosses_accurate": 1.3183,
                "touches": 51.7393,
                "possession_lost": 12.4293,
                "dispossessed": 1.2093,
                "duels_lost": 4.5227,
                "aerial_lost": 0.2513,
                "total_contest": 2.136,
                "won_contest": 0.8841,
                "ball_recovery": 2.3584,
                "challenges_lost": 1.0544,
                "fouls": 0.7624,
                "fouls_drawn": 0.6301,
                "assist_rate": 0.3282,
                "assists": 0,
                "interceptions": 0.2139,
                "tackles_won": 0.6404,
                "tackles": 0.8945,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.526,
                "big_chances_missed": 0.6551,
                "xgot": 0.421,
                "offsides": 0.2009,
                "ball_carries": 17.8505,
                "total_progression": 85.0329,
                "progressive_carries": 3.5872,
                "shots_off_target": 1.7195,
                "duel_xg_multiplier": 1.1097,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.275,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9144,
                "creation_factor": 1.25,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 1,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 1102,
                "fifa_rank": 849.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.3937,
                "goal_rate": 0.3487,
                "goals": 1,
                "shots_on_target": 1.3953,
                "total_shots": 3.1148,
                "expected_assists": 0.2197,
                "key_pass": 1.9777,
                "rating": 7.2375,
                "minutes": 80.33,
                "total_pass": 36.4632,
                "accurate_pass": 30.9133,
                "duels_won": 2.4356,
                "total_long_balls": 1.0249,
                "accurate_long_balls": 0.5796,
                "total_opp_half_passes": 28.3063,
                "accurate_opp_half_passes": 23.2426,
                "crosses_total": 3.5605,
                "crosses_accurate": 1.3183,
                "touches": 51.7393,
                "possession_lost": 12.4293,
                "dispossessed": 1.2093,
                "duels_lost": 4.5227,
                "aerial_lost": 0.2513,
                "total_contest": 2.136,
                "won_contest": 0.8841,
                "ball_recovery": 2.3584,
                "challenges_lost": 1.0544,
                "fouls": 0.7624,
                "fouls_drawn": 0.6301,
                "assist_rate": 0.3282,
                "assists": 0,
                "interceptions": 0.2139,
                "tackles_won": 0.6404,
                "tackles": 0.8945,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.526,
                "big_chances_missed": 0.6551,
                "xgot": 0.421,
                "offsides": 0.2009,
                "ball_carries": 17.8505,
                "total_progression": 85.0329,
                "progressive_carries": 3.5872,
                "shots_off_target": 1.7195,
                "duel_xg_multiplier": 1.1097,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.275,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.3254,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9144,
                "creation_factor": 1.25,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 1,
                "goal_probability": 0.3254,
                "goal_rate": 0.3487,
                "scorer_weight": 0.36,
                "squad_weight_total": 1.5114,
                "weight_share": 0.2382,
                "finishing_factor": 0.9144,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.3937,
                "goal_rate": 0.3487,
                "goals": 1,
                "shots_on_target": 1.3953,
                "total_shots": 3.1148,
                "expected_assists": 0.2197,
                "key_pass": 1.9777,
                "rating": 7.2375,
                "minutes": 80.33,
                "total_pass": 36.4632,
                "accurate_pass": 30.9133,
                "duels_won": 2.4356,
                "total_long_balls": 1.0249,
                "accurate_long_balls": 0.5796,
                "total_opp_half_passes": 28.3063,
                "accurate_opp_half_passes": 23.2426,
                "crosses_total": 3.5605,
                "crosses_accurate": 1.3183,
                "touches": 51.7393,
                "possession_lost": 12.4293,
                "dispossessed": 1.2093,
                "duels_lost": 4.5227,
                "aerial_lost": 0.2513,
                "total_contest": 2.136,
                "won_contest": 0.8841,
                "ball_recovery": 2.3584,
                "challenges_lost": 1.0544,
                "fouls": 0.7624,
                "fouls_drawn": 0.6301,
                "assist_rate": 0.3282,
                "assists": 0,
                "interceptions": 0.2139,
                "tackles_won": 0.6404,
                "tackles": 0.8945,
                "clearances": 0.302,
                "blocks": 0.0637,
                "big_chances_created": 0.526,
                "big_chances_missed": 0.6551,
                "xgot": 0.421,
                "offsides": 0.2009,
                "ball_carries": 17.8505,
                "total_progression": 85.0329,
                "progressive_carries": 3.5872,
                "shots_off_target": 1.7195,
                "duel_xg_multiplier": 1.1097,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.5,
                "aerial_won": 1.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.275,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.3254,
                "projected_assists": 0,
                "assist_probability": 0.1972,
                "finishing_factor": 0.9144,
                "creation_factor": 1.25,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1972,
                "assist_rate": 0.3282,
                "provider_weight": 0.2746,
                "squad_weight_total": 1.1097,
                "weight_share": 0.2475,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Pape Gueye": {
          "player_id": 879694,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 18,
          "height": 187,
          "market_value": 39000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.107,
            "assist_rate": 0.083,
            "assists": 0,
            "expected_goals": 0.1471,
            "goal_rate": 0.1768,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "rating": 7.1085,
            "minutes": 79,
            "total_pass": 52,
            "accurate_pass": 44,
            "duels_won": 4,
            "total_long_balls": 7,
            "accurate_long_balls": 4,
            "total_own_half_passes": 21,
            "accurate_own_half_passes": 19,
            "total_opp_half_passes": 31,
            "accurate_opp_half_passes": 25,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 66,
            "possession_lost": 11.8293,
            "dispossessed": 0.6052,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 2,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1066,
            "ball_carries": 20,
            "total_progression": 53,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.2396,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.6,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.613,
            "pressing_faced": "LOW",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Guido Rodríguez",
            "opponent_faced": "Guido Rodríguez",
            "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1368,
            "projected_assists": 0,
            "assist_probability": 0.1015,
            "finishing_factor": 1.1679,
            "creation_factor": 0.8586,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 24,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0119,
                "total_shots": 0,
                "total_pass": 14,
                "accurate_pass": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0789,
                "expected_assists": 0.0297,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 46,
                "accurate_pass": 40,
                "key_pass": 1,
                "tackles": 2,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 87,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0742,
                "total_shots": 0,
                "total_pass": 56,
                "accurate_pass": 46,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 53,
                "rating": 9.0,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.1957,
                "expected_assists": 0.051,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 47,
                "accurate_pass": 41,
                "interceptions": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 54,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0333,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 35,
                "key_pass": 1,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 62,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.029,
                "expected_assists": 0.1173,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 59,
                "accurate_pass": 52,
                "key_pass": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1195,
                "total_shots": 0,
                "total_pass": 85,
                "accurate_pass": 68,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0469,
                "expected_assists": 0.0538,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 70,
                "accurate_pass": 63,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0217,
                "expected_assists": 0.1321,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 56,
                "accurate_pass": 47,
                "key_pass": 2,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083735,
              "match_date": "2026-05-24",
              "home_team": "Villarreal",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 75,
                "rating": 8.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0716,
                "expected_assists": 0.0361,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 49,
                "accurate_pass": 42,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 4,
                "duels_won": 2,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 826,
            "combined_rank_score": 394.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 30.0,
            "sofascore_rating": 8.0,
            "sofascore_appearances": 1.0,
            "fifa_rank": 758.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.1085,
            "source_file": "data/player_rankings.csv",
            "player_name": "Pape Gueye",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Florian Thauvin",
                  "ranking": 821
                },
                {
                  "player_name": "Corentin Tolisso",
                  "ranking": 822
                },
                {
                  "player_name": "José María Giménez",
                  "ranking": 823
                },
                {
                  "player_name": "Dean Henderson",
                  "ranking": 824
                },
                {
                  "player_name": "Palhinha",
                  "ranking": 825
                }
              ],
              "lower": [
                {
                  "player_name": "Caoimhin Kelleher",
                  "ranking": 827
                },
                {
                  "player_name": "Antonio Raíllo",
                  "ranking": 828
                },
                {
                  "player_name": "Dilshod Akhmadaliev",
                  "ranking": 829
                },
                {
                  "player_name": "Botirali Ergashev",
                  "ranking": 830
                },
                {
                  "player_name": "Mathias Jensen",
                  "ranking": 831
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 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.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0092,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "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.0,
              "shots_on_target_pct": 33.3,
              "prior_reliability": 0.2
            },
            "rationale": "XGBoost regressor (M_service) evaluated 39 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.20, gls/90: 0.3333333333333333, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 1.0078,
                "expected_assists": 0.1039,
                "assists": 0.0834,
                "assist_rate": 0.0834,
                "expected_goals": 0.1152,
                "goals": 0.139,
                "goal_rate": 0.139,
                "shots_on_target": 0.5087,
                "total_shots": 1.321,
                "rating": 7.1085,
                "minutes": 79.43,
                "total_pass": 51.4659,
                "accurate_pass": 43.3123,
                "duels_won": 3.6717,
                "total_long_balls": 6.7217,
                "accurate_long_balls": 3.6493,
                "total_own_half_passes": 20.3545,
                "accurate_own_half_passes": 18.6114,
                "total_opp_half_passes": 31.1115,
                "accurate_opp_half_passes": 24.701,
                "crosses_total": 0.6652,
                "crosses_accurate": 0.1657,
                "touches": 65.2273,
                "possession_lost": 11.7215,
                "dispossessed": 0.5997,
                "duels_lost": 2.9634,
                "aerial_won": 0.3904,
                "aerial_lost": 0.8218,
                "interceptions": 0.8629,
                "tackles_won": 0.4143,
                "tackles": 0.9926,
                "clearances": 1.6325,
                "total_contest": 0.805,
                "won_contest": 0.2543,
                "challenges_lost": 0.1878,
                "fouls": 0.8067,
                "fouls_drawn": 2.0345,
                "blocks": 0.3628,
                "big_chances_created": 0.0184,
                "big_chances_missed": 0.0553,
                "xgot": 0.0835,
                "ball_carries": 19.4355,
                "total_progression": 52.9071,
                "progressive_carries": 0.5388,
                "shots_off_target": 0.8123
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.1503,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 87.0,
                    "is_starting": true,
                    "weight": 0.1086,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 53.0,
                    "is_starting": false,
                    "weight": 0.0923,
                    "rating": 9.0
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 54.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 8.0
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Atlético Madrid",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 8.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "creative_index": 0.3313,
                  "totalShots": 1.262,
                  "expectedGoals": 0.1584,
                  "expectedAssists": 0.0576,
                  "onTargetScoringAttempt": 0.6533
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.0077810287475586,
                    "model_output": 1.0078,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1342
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0817
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0564
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0507
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0331
                        }
                      ],
                      "others": 0.0334,
                      "total": 1.0078,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.13976
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.082709
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.061403
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.055373
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.034541
                        }
                      ],
                      "others_margin": 0.033696
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.103904590010643,
                    "model_output": 0.1039,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0147
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0115
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0063
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0039
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0033
                        }
                      ],
                      "others": 0.0139,
                      "total": 0.1039,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.157567
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.121658
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.073397
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.045854
                        },
                        {
                          "name": "goals",
                          "margin": 0.037891
                        }
                      ],
                      "others_margin": 0.14418
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.083425372838974,
                    "model_output": 0.0834,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0079
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0078
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0046
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0042
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0043
                        }
                      ],
                      "others": -0.0078,
                      "total": 0.0834,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.095254
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.093396
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.054761
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.049595
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.047849
                        }
                      ],
                      "others_margin": -0.087364
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.11521103233098984,
                    "model_output": 0.1152,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0228
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0136
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0128
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0119
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0071
                        }
                      ],
                      "others": -0.0232,
                      "total": 0.1152,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": 0.217282
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.1103
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.09385
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.086673
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.052532
                        }
                      ],
                      "others_margin": -0.183363
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.139045849442482,
                    "model_output": 0.139,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0206
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0239
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0195
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0097
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0096
                        }
                      ],
                      "others": -0.0242,
                      "total": 0.139,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.188215
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.1817
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.127473
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.061092
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.060541
                        }
                      ],
                      "others_margin": -0.160344
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.508725106716156,
                    "model_output": 0.5087,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0798
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0745
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0547
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0247
                        },
                        {
                          "name": "goals",
                          "contribution": 0.018
                        }
                      ],
                      "others": -0.0196,
                      "total": 0.5087,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.218905
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.168586
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.107867
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.047185
                        },
                        {
                          "name": "goals",
                          "margin": 0.034676
                        }
                      ],
                      "others_margin": -0.037924
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.3210371732711792,
                    "model_output": 1.321,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.1701
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1523
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0605
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0353
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0345
                        }
                      ],
                      "others": -0.058,
                      "total": 1.321,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.170134
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.152289
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.060545
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.035251
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.03454
                        }
                      ],
                      "others_margin": -0.058116
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.108458995819092,
                    "model_output": 7.1085,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.1141
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0691
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0479
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0248
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0192
                        }
                      ],
                      "others": 0.0157,
                      "total": 7.1085,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.114106
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.069147
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.047929
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.024754
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.019211
                        }
                      ],
                      "others_margin": 0.015681
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 39,
                  "role_matches": 33,
                  "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.0092, quality 0.775)",
              "stats": {
                "key_pass": 1.0171,
                "expected_assists": 0.1049,
                "assists": 0.0842,
                "assist_rate": 0.0842,
                "expected_goals": 0.1163,
                "goals": 0.1403,
                "goal_rate": 0.1403,
                "shots_on_target": 0.5134,
                "total_shots": 1.3332,
                "rating": 7.1085,
                "minutes": 79.43,
                "total_pass": 51.9394,
                "accurate_pass": 43.7108,
                "duels_won": 3.7055,
                "total_long_balls": 6.7835,
                "accurate_long_balls": 3.6829,
                "total_own_half_passes": 20.5418,
                "accurate_own_half_passes": 18.7826,
                "total_opp_half_passes": 31.3977,
                "accurate_opp_half_passes": 24.9282,
                "crosses_total": 0.6713,
                "crosses_accurate": 0.1672,
                "touches": 65.8274,
                "possession_lost": 11.8293,
                "dispossessed": 0.6052,
                "duels_lost": 2.9907,
                "aerial_won": 0.394,
                "aerial_lost": 0.8294,
                "interceptions": 0.8708,
                "tackles_won": 0.4181,
                "tackles": 1.0017,
                "clearances": 1.6475,
                "total_contest": 0.8124,
                "won_contest": 0.2566,
                "challenges_lost": 0.1895,
                "fouls": 0.8141,
                "fouls_drawn": 2.0532,
                "blocks": 0.3661,
                "big_chances_created": 0.0186,
                "big_chances_missed": 0.0558,
                "xgot": 0.0843,
                "ball_carries": 19.6143,
                "total_progression": 53.3938,
                "progressive_carries": 0.5438,
                "shots_off_target": 0.8198
              },
              "params": {
                "market_value_eur": 39000000,
                "quality_factor": 0.7754,
                "boost_factor": 1.0092,
                "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.0148)",
              "stats": {
                "key_pass": 1.0171,
                "expected_assists": 0.1049,
                "assists": 0.083,
                "assist_rate": 0.083,
                "expected_goals": 0.1163,
                "goals": 0.1426,
                "goal_rate": 0.1426,
                "shots_on_target": 0.5101,
                "total_shots": 1.3265,
                "rating": 7.1085,
                "minutes": 79.43,
                "total_pass": 51.9394,
                "accurate_pass": 43.7108,
                "duels_won": 3.7055,
                "total_long_balls": 6.7835,
                "accurate_long_balls": 3.6829,
                "total_own_half_passes": 20.5418,
                "accurate_own_half_passes": 18.7826,
                "total_opp_half_passes": 31.3977,
                "accurate_opp_half_passes": 24.9282,
                "crosses_total": 0.6657,
                "crosses_accurate": 0.1672,
                "touches": 65.8274,
                "possession_lost": 11.8293,
                "dispossessed": 0.6052,
                "duels_lost": 2.9907,
                "aerial_won": 0.394,
                "aerial_lost": 0.8294,
                "interceptions": 0.8753,
                "tackles_won": 0.4206,
                "tackles": 1.0017,
                "clearances": 1.6475,
                "total_contest": 0.8124,
                "won_contest": 0.2566,
                "challenges_lost": 0.1895,
                "fouls": 0.8195,
                "fouls_drawn": 2.0489,
                "blocks": 0.3661,
                "big_chances_created": 0.0186,
                "big_chances_missed": 0.0558,
                "xgot": 0.0843,
                "ball_carries": 19.6143,
                "total_progression": 53.3938,
                "progressive_carries": 0.5438,
                "shots_off_target": 0.8198
              },
              "params": {
                "blend_weight": 0.0148,
                "history_matches": 39,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8826,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.3332,
                  "after": 1.3265
                },
                {
                  "stat": "totalCross",
                  "before": 0.6713,
                  "after": 0.6657
                },
                {
                  "stat": "fouls",
                  "before": 0.8141,
                  "after": 0.8195
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.0171,
                "expected_assists": 0.1049,
                "assists": 0.083,
                "assist_rate": 0.083,
                "expected_goals": 0.1163,
                "goals": 0.1426,
                "goal_rate": 0.1426,
                "shots_on_target": 0.5101,
                "total_shots": 1.3299,
                "rating": 7.1085,
                "minutes": 79.43,
                "total_pass": 51.9394,
                "accurate_pass": 43.7108,
                "duels_won": 3.7055,
                "total_long_balls": 6.7835,
                "accurate_long_balls": 3.6829,
                "total_own_half_passes": 20.5418,
                "accurate_own_half_passes": 18.7826,
                "total_opp_half_passes": 31.3977,
                "accurate_opp_half_passes": 24.9282,
                "crosses_total": 0.6657,
                "crosses_accurate": 0.1672,
                "touches": 65.8274,
                "possession_lost": 11.8293,
                "dispossessed": 0.6052,
                "duels_lost": 2.9907,
                "aerial_won": 0.394,
                "aerial_lost": 0.8294,
                "interceptions": 0.8753,
                "tackles_won": 0.4206,
                "tackles": 1.0017,
                "clearances": 1.6475,
                "total_contest": 0.8124,
                "won_contest": 0.2566,
                "challenges_lost": 0.1895,
                "fouls": 0.8195,
                "fouls_drawn": 2.0489,
                "blocks": 0.3661,
                "big_chances_created": 0.0186,
                "big_chances_missed": 0.0558,
                "xgot": 0.0843,
                "ball_carries": 19.6143,
                "total_progression": 53.3938,
                "progressive_carries": 0.5438,
                "shots_off_target": 0.8198
              },
              "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.0171,
                "expected_assists": 0.1049,
                "assists": 0.083,
                "assist_rate": 0.083,
                "expected_goals": 0.1442,
                "goals": 0.1768,
                "goal_rate": 0.1768,
                "shots_on_target": 0.6323,
                "total_shots": 1.6485,
                "rating": 7.1085,
                "minutes": 79.43,
                "total_pass": 51.9394,
                "accurate_pass": 43.7108,
                "duels_won": 3.7055,
                "total_long_balls": 6.7835,
                "accurate_long_balls": 3.6829,
                "total_own_half_passes": 20.5418,
                "accurate_own_half_passes": 18.7826,
                "total_opp_half_passes": 31.3977,
                "accurate_opp_half_passes": 24.9282,
                "crosses_total": 0.6657,
                "crosses_accurate": 0.1672,
                "touches": 65.8274,
                "possession_lost": 11.8293,
                "dispossessed": 0.6052,
                "duels_lost": 2.9907,
                "aerial_won": 1.2,
                "aerial_lost": 0.8294,
                "interceptions": 0.8753,
                "tackles_won": 0.4206,
                "tackles": 1.0017,
                "clearances": 1.6475,
                "total_contest": 0.8124,
                "won_contest": 0.2566,
                "challenges_lost": 0.1895,
                "fouls": 0.8195,
                "fouls_drawn": 2.0489,
                "blocks": 0.3661,
                "big_chances_created": 0.0186,
                "big_chances_missed": 0.0692,
                "xgot": 0.1045,
                "ball_carries": 19.6143,
                "total_progression": 53.3938,
                "progressive_carries": 0.5438,
                "shots_off_target": 1.0162,
                "duel_xg_multiplier": 1.2396,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.613,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Guido Rodríguez",
                "opponent_faced": "Guido Rodríguez",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Guido Rodríguez",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                  "duel_win_rate": 0.613,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.2396,
                  "skill_edge": 0.155,
                  "height_edge": 0.008,
                  "attacker_skill": 0.7972,
                  "defender_skill": 0.4527,
                  "attacker_role": "CM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Guido Rodríguez",
                      "market_value": 3600000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.4527
                    }
                  ],
                  "xg_override": 0.1442
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.394,
                  "after": 1.2
                },
                {
                  "stat": "totalShots",
                  "before": 1.3299,
                  "after": 1.6485
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.8198,
                  "after": 1.0162
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5101,
                  "after": 0.6323
                },
                {
                  "stat": "goals",
                  "before": 0.1426,
                  "after": 0.1768
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1163,
                  "after": 0.1442
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0843,
                  "after": 0.1045
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.0558,
                  "after": 0.0692
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 1.0171,
                "expected_assists": 0.1049,
                "assist_rate": 0.083,
                "assists": 0,
                "expected_goals": 0.1442,
                "goal_rate": 0.1768,
                "goals": 0,
                "shots_on_target": 0.6323,
                "total_shots": 1.6485,
                "rating": 7.1085,
                "minutes": 79.43,
                "total_pass": 51.9394,
                "accurate_pass": 43.7108,
                "duels_won": 3.7055,
                "total_long_balls": 6.7835,
                "accurate_long_balls": 3.6829,
                "total_own_half_passes": 20.5418,
                "accurate_own_half_passes": 18.7826,
                "total_opp_half_passes": 31.3977,
                "accurate_opp_half_passes": 24.9282,
                "crosses_total": 0.6657,
                "crosses_accurate": 0.1672,
                "touches": 65.8274,
                "possession_lost": 11.8293,
                "dispossessed": 0.6052,
                "duels_lost": 2.9907,
                "aerial_won": 1.2,
                "aerial_lost": 0.8294,
                "interceptions": 0.8753,
                "tackles_won": 0.4206,
                "tackles": 1.0017,
                "clearances": 1.6475,
                "total_contest": 0.8124,
                "won_contest": 0.2566,
                "challenges_lost": 0.1895,
                "fouls": 0.8195,
                "fouls_drawn": 2.0489,
                "blocks": 0.3661,
                "big_chances_created": 0.0186,
                "big_chances_missed": 0.0692,
                "xgot": 0.1045,
                "ball_carries": 19.6143,
                "total_progression": 53.3938,
                "progressive_carries": 0.5438,
                "shots_off_target": 1.0162,
                "duel_xg_multiplier": 1.2396,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.613,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Guido Rodríguez",
                "opponent_faced": "Guido Rodríguez",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "key_pass": 1.0171,
                "expected_assists": 0.107,
                "assist_rate": 0.083,
                "assists": 0,
                "expected_goals": 0.1471,
                "goal_rate": 0.1768,
                "goals": 0,
                "shots_on_target": 0.6323,
                "total_shots": 1.6485,
                "rating": 7.1085,
                "minutes": 79.43,
                "total_pass": 51.9394,
                "accurate_pass": 43.7108,
                "duels_won": 3.7055,
                "total_long_balls": 6.7835,
                "accurate_long_balls": 3.6829,
                "total_own_half_passes": 20.5418,
                "accurate_own_half_passes": 18.7826,
                "total_opp_half_passes": 31.3977,
                "accurate_opp_half_passes": 24.9282,
                "crosses_total": 0.6657,
                "crosses_accurate": 0.1672,
                "touches": 65.8274,
                "possession_lost": 11.8293,
                "dispossessed": 0.6052,
                "duels_lost": 2.9907,
                "aerial_won": 1.2,
                "aerial_lost": 0.8294,
                "interceptions": 0.8753,
                "tackles_won": 0.4206,
                "tackles": 1.0017,
                "clearances": 1.6475,
                "total_contest": 0.8124,
                "won_contest": 0.2566,
                "challenges_lost": 0.1895,
                "fouls": 0.8195,
                "fouls_drawn": 2.0489,
                "blocks": 0.3661,
                "big_chances_created": 0.0186,
                "big_chances_missed": 0.0692,
                "xgot": 0.1066,
                "ball_carries": 19.6143,
                "total_progression": 53.3938,
                "progressive_carries": 0.5438,
                "shots_off_target": 1.0162,
                "duel_xg_multiplier": 1.2396,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.613,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Guido Rodríguez",
                "opponent_faced": "Guido Rodríguez",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1679,
                "creation_factor": 0.8586
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 80.0)",
              "stats": {
                "key_pass": 1.0171,
                "expected_assists": 0.107,
                "assist_rate": 0.083,
                "assists": 0,
                "expected_goals": 0.1471,
                "goal_rate": 0.1768,
                "goals": 0,
                "shots_on_target": 0.6323,
                "total_shots": 1.6485,
                "rating": 7.1085,
                "minutes": 79.43,
                "total_pass": 51.9394,
                "accurate_pass": 43.7108,
                "duels_won": 3.7055,
                "total_long_balls": 6.7835,
                "accurate_long_balls": 3.6829,
                "total_own_half_passes": 20.5418,
                "accurate_own_half_passes": 18.7826,
                "total_opp_half_passes": 31.3977,
                "accurate_opp_half_passes": 24.9282,
                "crosses_total": 0.6657,
                "crosses_accurate": 0.1672,
                "touches": 65.8274,
                "possession_lost": 11.8293,
                "dispossessed": 0.6052,
                "duels_lost": 2.9907,
                "aerial_won": 1.2,
                "aerial_lost": 0.8294,
                "interceptions": 0.8753,
                "tackles_won": 0.4206,
                "tackles": 1.0017,
                "clearances": 1.6475,
                "total_contest": 0.8124,
                "won_contest": 0.2566,
                "challenges_lost": 0.1895,
                "fouls": 0.8195,
                "fouls_drawn": 2.0489,
                "blocks": 0.3661,
                "big_chances_created": 0.0186,
                "big_chances_missed": 0.0692,
                "xgot": 0.1066,
                "ball_carries": 19.6143,
                "total_progression": 53.3938,
                "progressive_carries": 0.5438,
                "shots_off_target": 1.0162,
                "duel_xg_multiplier": 1.2396,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.613,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Guido Rodríguez",
                "opponent_faced": "Guido Rodríguez",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1679,
                "creation_factor": 0.8586,
                "fifa_overall": 80.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": 826,
                "fifa_rank": 758.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 80.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 1.0171,
                "expected_assists": 0.107,
                "assist_rate": 0.083,
                "assists": 0,
                "expected_goals": 0.1471,
                "goal_rate": 0.1768,
                "goals": 0,
                "shots_on_target": 0.6323,
                "total_shots": 1.6485,
                "rating": 7.1085,
                "minutes": 79.43,
                "total_pass": 51.9394,
                "accurate_pass": 43.7108,
                "duels_won": 3.7055,
                "total_long_balls": 6.7835,
                "accurate_long_balls": 3.6829,
                "total_own_half_passes": 20.5418,
                "accurate_own_half_passes": 18.7826,
                "total_opp_half_passes": 31.3977,
                "accurate_opp_half_passes": 24.9282,
                "crosses_total": 0.6657,
                "crosses_accurate": 0.1672,
                "touches": 65.8274,
                "possession_lost": 11.8293,
                "dispossessed": 0.6052,
                "duels_lost": 2.9907,
                "aerial_won": 1.2,
                "aerial_lost": 0.8294,
                "interceptions": 0.8753,
                "tackles_won": 0.4206,
                "tackles": 1.0017,
                "clearances": 1.6475,
                "total_contest": 0.8124,
                "won_contest": 0.2566,
                "challenges_lost": 0.1895,
                "fouls": 0.8195,
                "fouls_drawn": 2.0489,
                "blocks": 0.3661,
                "big_chances_created": 0.0186,
                "big_chances_missed": 0.0692,
                "xgot": 0.1066,
                "ball_carries": 19.6143,
                "total_progression": 53.3938,
                "progressive_carries": 0.5438,
                "shots_off_target": 1.0162,
                "duel_xg_multiplier": 1.2396,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.613,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Guido Rodríguez",
                "opponent_faced": "Guido Rodríguez",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1368,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1679,
                "creation_factor": 0.8586,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1368,
                "goal_rate": 0.1768,
                "scorer_weight": 0.1718,
                "squad_weight_total": 1.5114,
                "weight_share": 0.1137,
                "finishing_factor": 1.1679,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 1.0171,
                "expected_assists": 0.107,
                "assist_rate": 0.083,
                "assists": 0,
                "expected_goals": 0.1471,
                "goal_rate": 0.1768,
                "goals": 0,
                "shots_on_target": 0.6323,
                "total_shots": 1.6485,
                "rating": 7.1085,
                "minutes": 79.43,
                "total_pass": 51.9394,
                "accurate_pass": 43.7108,
                "duels_won": 3.7055,
                "total_long_balls": 6.7835,
                "accurate_long_balls": 3.6829,
                "total_own_half_passes": 20.5418,
                "accurate_own_half_passes": 18.7826,
                "total_opp_half_passes": 31.3977,
                "accurate_opp_half_passes": 24.9282,
                "crosses_total": 0.6657,
                "crosses_accurate": 0.1672,
                "touches": 65.8274,
                "possession_lost": 11.8293,
                "dispossessed": 0.6052,
                "duels_lost": 2.9907,
                "aerial_won": 1.2,
                "aerial_lost": 0.8294,
                "interceptions": 0.8753,
                "tackles_won": 0.4206,
                "tackles": 1.0017,
                "clearances": 1.6475,
                "total_contest": 0.8124,
                "won_contest": 0.2566,
                "challenges_lost": 0.1895,
                "fouls": 0.8195,
                "fouls_drawn": 2.0489,
                "blocks": 0.3661,
                "big_chances_created": 0.0186,
                "big_chances_missed": 0.0692,
                "xgot": 0.1066,
                "ball_carries": 19.6143,
                "total_progression": 53.3938,
                "progressive_carries": 0.5438,
                "shots_off_target": 1.0162,
                "duel_xg_multiplier": 1.2396,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.6,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.613,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Guido Rodríguez",
                "opponent_faced": "Guido Rodríguez",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1368,
                "projected_assists": 0,
                "assist_probability": 0.1015,
                "finishing_factor": 1.1679,
                "creation_factor": 0.8586,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1015,
                "assist_rate": 0.083,
                "provider_weight": 0.0919,
                "squad_weight_total": 1.1097,
                "weight_share": 0.0828,
                "creation_factor": 0.8586,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Santi Comesaña": {
          "player_id": 843678,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 14,
          "height": 187,
          "market_value": 8400000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0761,
            "assist_rate": 0.0749,
            "assists": 0,
            "expected_goals": 0.0646,
            "goal_rate": 0.0686,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.9223,
            "minutes": 70,
            "total_pass": 42,
            "accurate_pass": 38,
            "duels_won": 2,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 18,
            "accurate_own_half_passes": 17,
            "total_opp_half_passes": 24,
            "accurate_opp_half_passes": 21,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 53,
            "possession_lost": 6.9204,
            "dispossessed": 0.7288,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1005,
            "ball_carries": 12,
            "total_progression": 36,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.1298,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.4,
            "crosses_attempted": 2.2,
            "duel_win_rate": 0.548,
            "pressing_faced": "LOW",
            "matchup_zone": "Left Mid vs Right Back — Wide Channel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Pablo Maffeo",
            "opponent_faced": "Pablo Maffeo",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0626,
            "projected_assists": 0,
            "assist_probability": 0.0733,
            "finishing_factor": 1.0468,
            "creation_factor": 1.0024,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 66,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0507,
                "expected_assists": 0.0331,
                "total_shots": 1,
                "total_pass": 39,
                "accurate_pass": 38,
                "key_pass": 1,
                "interceptions": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 56,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0084,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 20,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 37,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0953,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 41,
                "key_pass": 1,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5685,
                "expected_assists": 0.0428,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 70,
                "accurate_pass": 65,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 3,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 28,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0293,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 24,
                "key_pass": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 62,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0546,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 46,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 84,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0171,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 43,
                "interceptions": 1,
                "clearances": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 56,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.459,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 26,
                "tackles": 4,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 2,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083682,
              "match_date": "2026-05-17",
              "home_team": "Rayo Vallecano",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 64,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0196,
                "expected_assists": 0.0162,
                "total_shots": 1,
                "total_pass": 26,
                "accurate_pass": 23,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083644,
              "match_date": "2026-05-13",
              "home_team": "Villarreal",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 20,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0086,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1902,
            "combined_rank_score": 735.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 511.0,
            "sofascore_rating": 6.85,
            "sofascore_appearances": 34.0,
            "fifa_rank": 960.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9223,
            "source_file": "data/player_rankings.csv",
            "player_name": "Santi Comesaña",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jeong-hwan Kim",
                  "ranking": 1897
                },
                {
                  "player_name": "Ahmet Arslan",
                  "ranking": 1898
                },
                {
                  "player_name": "Matteo Gabbia",
                  "ranking": 1899
                },
                {
                  "player_name": "Otabek Jurakuziev",
                  "ranking": 1900
                },
                {
                  "player_name": "Choi Han-sol",
                  "ranking": 1901
                }
              ],
              "lower": [
                {
                  "player_name": "Federico Lanzillotta",
                  "ranking": 1903
                },
                {
                  "player_name": "Dong-su Lee",
                  "ranking": 1904
                },
                {
                  "player_name": "Armand Laurienté",
                  "ranking": 1905
                },
                {
                  "player_name": "Álex Jiménez",
                  "ranking": 1906
                },
                {
                  "player_name": "Carlos Baleba",
                  "ranking": 1907
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.772,
          "history_matches": 42,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 42,
            "data_confidence": 0.772,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 199.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.1467
            },
            "rationale": "XGBoost regressor (M_service) evaluated 42 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.15, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.8921,
                "expected_assists": 0.0746,
                "assists": 0.0757,
                "assist_rate": 0.0757,
                "expected_goals": 0.056,
                "goals": 0.0613,
                "goal_rate": 0.0613,
                "shots_on_target": 0.1795,
                "total_shots": 0.6483,
                "rating": 6.9223,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.463,
                "crosses_accurate": 0.1093,
                "touches": 53.4175,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 0.2212,
                "aerial_lost": 0.6628,
                "interceptions": 1.1783,
                "tackles_won": 0.7787,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4729,
                "fouls_drawn": 0.8838,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1353,
                "xgot": 0.0872,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.4687
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 37.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0784,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Rayo Vallecano",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Sevilla",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "creative_index": 0.3399,
                  "totalShots": 0.4276,
                  "expectedGoals": 0.0782,
                  "expectedAssists": 0.0682,
                  "onTargetScoringAttempt": 0.1252
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.892082691192627,
                    "model_output": 0.8921,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1215
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.08
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.067
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0342
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0278
                        }
                      ],
                      "others": 0.0851,
                      "total": 0.8921,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.127352
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.082024
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.074264
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.040155
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.033903
                        }
                      ],
                      "others_margin": 0.100305
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07462622970342636,
                    "model_output": 0.0746,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0139
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0125
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0071
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0045
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0032
                        }
                      ],
                      "others": -0.0043,
                      "total": 0.0746,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.150303
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.133758
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.084712
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.057908
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.041441
                        }
                      ],
                      "others_margin": -0.055911
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.0756901428103447,
                    "model_output": 0.0757,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.011
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0081
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.008
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0051
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0042
                        }
                      ],
                      "others": 0.0001,
                      "total": 0.0757,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.134812
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.100763
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.099286
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.069495
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.057837
                        }
                      ],
                      "others_margin": 0.001148
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.05601821467280388,
                    "model_output": 0.056,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0164
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0113
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0066
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0058
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.005
                        }
                      ],
                      "others": -0.0155,
                      "total": 0.056,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.19213
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.135687
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.077567
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.07379
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.067207
                        }
                      ],
                      "others_margin": -0.242154
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06127931922674179,
                    "model_output": 0.0613,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0166
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0133
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0086
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0052
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0046
                        }
                      ],
                      "others": -0.0069,
                      "total": 0.0613,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.183113
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.175706
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.11672
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.069563
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.064808
                        }
                      ],
                      "others_margin": -0.106397
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.17951491475105286,
                    "model_output": 0.1795,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0854
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.034
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.029
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0178
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0127
                        }
                      ],
                      "others": -0.0256,
                      "total": 0.1795,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.303725
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.152502
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.131359
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.078359
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.059958
                        }
                      ],
                      "others_margin": -0.133539
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6482605338096619,
                    "model_output": 0.6483,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2752
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1195
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0407
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0392
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0301
                        }
                      ],
                      "others": -0.0829,
                      "total": 0.6483,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.27523
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.119492
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.040723
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.039167
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.030063
                        }
                      ],
                      "others_margin": -0.082943
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.922348976135254,
                    "model_output": 6.9223,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0784
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.035
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0289
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0272
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0199
                        }
                      ],
                      "others": -0.029,
                      "total": 6.9223,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.078366
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.034955
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.028853
                        },
                        {
                          "name": "rating",
                          "margin": -0.02715
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.019949
                        }
                      ],
                      "others_margin": -0.028776
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 42,
                  "role_matches": 35,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0000, quality 0.503)",
              "stats": {
                "key_pass": 0.8921,
                "expected_assists": 0.0746,
                "assists": 0.0757,
                "assist_rate": 0.0757,
                "expected_goals": 0.056,
                "goals": 0.0613,
                "goal_rate": 0.0613,
                "shots_on_target": 0.1795,
                "total_shots": 0.6483,
                "rating": 6.9223,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.463,
                "crosses_accurate": 0.1093,
                "touches": 53.4175,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 0.2212,
                "aerial_lost": 0.6628,
                "interceptions": 1.1783,
                "tackles_won": 0.7787,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4729,
                "fouls_drawn": 0.8838,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1353,
                "xgot": 0.0872,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.4687
              },
              "params": {
                "market_value_eur": 8400000,
                "quality_factor": 0.5035,
                "boost_factor": 1.0,
                "reference_quality": 0.505,
                "history_matches": 42,
                "history_shrink": 0.1064,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0101)",
              "stats": {
                "key_pass": 0.8921,
                "expected_assists": 0.0746,
                "assists": 0.0749,
                "assist_rate": 0.0749,
                "expected_goals": 0.056,
                "goals": 0.0607,
                "goal_rate": 0.0607,
                "shots_on_target": 0.1777,
                "total_shots": 0.6417,
                "rating": 6.9223,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4583,
                "crosses_accurate": 0.1093,
                "touches": 53.4175,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 0.2212,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.7852,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4795,
                "fouls_drawn": 0.8784,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1353,
                "xgot": 0.0872,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.4687
              },
              "params": {
                "blend_weight": 0.0101,
                "history_matches": 42,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.779,
                "prior_reliability": 0.1467,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 0.6483,
                  "after": 0.6417
                },
                {
                  "stat": "fouls",
                  "before": 1.4729,
                  "after": 1.4795
                },
                {
                  "stat": "wonTackle",
                  "before": 0.7787,
                  "after": 0.7852
                },
                {
                  "stat": "wasFouled",
                  "before": 0.8838,
                  "after": 0.8784
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.8921,
                "expected_assists": 0.0746,
                "assists": 0.0749,
                "assist_rate": 0.0749,
                "expected_goals": 0.056,
                "goals": 0.0607,
                "goal_rate": 0.0607,
                "shots_on_target": 0.1777,
                "total_shots": 0.6464,
                "rating": 6.9223,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4583,
                "crosses_accurate": 0.1093,
                "touches": 53.4175,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 0.2212,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.7852,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4795,
                "fouls_drawn": 0.8784,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1353,
                "xgot": 0.0872,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.4687
              },
              "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.8921,
                "expected_assists": 0.0746,
                "assists": 0.0749,
                "assist_rate": 0.0749,
                "expected_goals": 0.0633,
                "goals": 0.0686,
                "goal_rate": 0.0686,
                "shots_on_target": 0.2008,
                "total_shots": 0.7303,
                "rating": 6.9223,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4583,
                "crosses_accurate": 0.1093,
                "touches": 53.4175,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 1.2,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.7852,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4795,
                "fouls_drawn": 0.8784,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1529,
                "xgot": 0.0985,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.5295,
                "duel_xg_multiplier": 1.1298,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.4,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.548,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Maffeo",
                "opponent_faced": "Pablo Maffeo",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Pablo Maffeo",
                  "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                  "duel_win_rate": 0.548,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.1298,
                  "skill_edge": 0.0323,
                  "height_edge": 0.056,
                  "attacker_skill": 0.5146,
                  "defender_skill": 0.4428,
                  "attacker_role": "LM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Pablo Maffeo",
                      "market_value": 2400000,
                      "role": "RB",
                      "price_index": 0.7,
                      "adjusted_quality": 0.4428
                    }
                  ],
                  "xg_override": 0.0633
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.2212,
                  "after": 1.2
                },
                {
                  "stat": "totalShots",
                  "before": 0.6464,
                  "after": 0.7303
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4687,
                  "after": 0.5295
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1777,
                  "after": 0.2008
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.1353,
                  "after": 0.1529
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0872,
                  "after": 0.0985
                },
                {
                  "stat": "goals",
                  "before": 0.0607,
                  "after": 0.0686
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.056,
                  "after": 0.0633
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.8921,
                "expected_assists": 0.0746,
                "assist_rate": 0.0749,
                "assists": 0,
                "expected_goals": 0.0633,
                "goal_rate": 0.0686,
                "goals": 0,
                "shots_on_target": 0.2008,
                "total_shots": 0.7303,
                "rating": 6.9223,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4583,
                "crosses_accurate": 0.1093,
                "touches": 53.4175,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 1.2,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.7852,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4795,
                "fouls_drawn": 0.8784,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1529,
                "xgot": 0.0985,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.5295,
                "duel_xg_multiplier": 1.1298,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.4,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.548,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Maffeo",
                "opponent_faced": "Pablo Maffeo",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "key_pass": 0.8921,
                "expected_assists": 0.0761,
                "assist_rate": 0.0749,
                "assists": 0,
                "expected_goals": 0.0646,
                "goal_rate": 0.0686,
                "goals": 0,
                "shots_on_target": 0.2008,
                "total_shots": 0.7303,
                "rating": 6.9223,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4583,
                "crosses_accurate": 0.1093,
                "touches": 53.4175,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 1.2,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.7852,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4795,
                "fouls_drawn": 0.8784,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1529,
                "xgot": 0.1005,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.5295,
                "duel_xg_multiplier": 1.1298,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.4,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.548,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Maffeo",
                "opponent_faced": "Pablo Maffeo",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0468,
                "creation_factor": 1.0024
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 79.0)",
              "stats": {
                "key_pass": 0.8921,
                "expected_assists": 0.0761,
                "assist_rate": 0.0749,
                "assists": 0,
                "expected_goals": 0.0646,
                "goal_rate": 0.0686,
                "goals": 0,
                "shots_on_target": 0.2008,
                "total_shots": 0.7303,
                "rating": 6.9223,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4583,
                "crosses_accurate": 0.1093,
                "touches": 53.4175,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 1.2,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.7852,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4795,
                "fouls_drawn": 0.8784,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1529,
                "xgot": 0.1005,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.5295,
                "duel_xg_multiplier": 1.1298,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.4,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.548,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Maffeo",
                "opponent_faced": "Pablo Maffeo",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0468,
                "creation_factor": 1.0024,
                "fifa_overall": 79.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": 1902,
                "fifa_rank": 960.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.8921,
                "expected_assists": 0.0761,
                "assist_rate": 0.0749,
                "assists": 0,
                "expected_goals": 0.0646,
                "goal_rate": 0.0686,
                "goals": 0,
                "shots_on_target": 0.2008,
                "total_shots": 0.7303,
                "rating": 6.9223,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4583,
                "crosses_accurate": 0.1093,
                "touches": 53.4175,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 1.2,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.7852,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4795,
                "fouls_drawn": 0.8784,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1529,
                "xgot": 0.1005,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.5295,
                "duel_xg_multiplier": 1.1298,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.4,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.548,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Maffeo",
                "opponent_faced": "Pablo Maffeo",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0626,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0468,
                "creation_factor": 1.0024,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0626,
                "goal_rate": 0.0686,
                "scorer_weight": 0.0676,
                "squad_weight_total": 1.5114,
                "weight_share": 0.0447,
                "finishing_factor": 1.0468,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.8921,
                "expected_assists": 0.0761,
                "assist_rate": 0.0749,
                "assists": 0,
                "expected_goals": 0.0646,
                "goal_rate": 0.0686,
                "goals": 0,
                "shots_on_target": 0.2008,
                "total_shots": 0.7303,
                "rating": 6.9223,
                "minutes": 70.11,
                "total_pass": 42.3201,
                "accurate_pass": 37.8699,
                "duels_won": 2.4175,
                "total_long_balls": 2.6535,
                "accurate_long_balls": 2.1586,
                "total_own_half_passes": 18.1107,
                "accurate_own_half_passes": 16.8612,
                "total_opp_half_passes": 24.2094,
                "accurate_opp_half_passes": 21.0087,
                "crosses_total": 0.4583,
                "crosses_accurate": 0.1093,
                "touches": 53.4175,
                "possession_lost": 6.9204,
                "dispossessed": 0.7288,
                "duels_lost": 3.9686,
                "aerial_won": 1.2,
                "aerial_lost": 0.6628,
                "interceptions": 1.1771,
                "tackles_won": 0.7852,
                "tackles": 1.0703,
                "clearances": 0.9727,
                "total_contest": 0.5366,
                "won_contest": 0.2422,
                "challenges_lost": 0.8238,
                "fouls": 1.4795,
                "fouls_drawn": 0.8784,
                "blocks": 0.4152,
                "big_chances_created": 0.0343,
                "big_chances_missed": 0.1529,
                "xgot": 0.1005,
                "ball_carries": 12.4012,
                "total_progression": 35.8249,
                "progressive_carries": 0.7882,
                "shots_off_target": 0.5295,
                "duel_xg_multiplier": 1.1298,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.4,
                "crosses_attempted": 2.2,
                "duel_win_rate": 0.548,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Mid vs Right Back — Wide Channel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Maffeo",
                "opponent_faced": "Pablo Maffeo",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0626,
                "projected_assists": 0,
                "assist_probability": 0.0733,
                "finishing_factor": 1.0468,
                "creation_factor": 1.0024,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0733,
                "assist_rate": 0.0749,
                "provider_weight": 0.0763,
                "squad_weight_total": 1.1097,
                "weight_share": 0.0687,
                "creation_factor": 1.0024,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Ilias Akhomach": {
          "player_id": 1089108,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 11,
          "height": 175,
          "market_value": 11100000,
          "stats": {
            "expected_goals": 0.1092,
            "goal_rate": 0.1702,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.1439,
            "key_pass": 1,
            "rating": 6.9814,
            "minutes": 73,
            "total_pass": 23,
            "accurate_pass": 18,
            "duels_won": 6,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 14,
            "crosses_total": 3,
            "crosses_accurate": 0,
            "touches": 43,
            "possession_lost": 13.8203,
            "dispossessed": 2.1192,
            "duels_lost": 5,
            "aerial_lost": 0,
            "total_contest": 5,
            "won_contest": 3,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "assist_rate": 0.2277,
            "assists": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0434,
            "offsides": 0,
            "ball_carries": 18,
            "total_progression": 102,
            "progressive_carries": 5,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9101,
            "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": "Justin De Haas, César Tárrega",
            "opponent_faced": "Justin De Haas, César Tárrega",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1034,
            "projected_assists": 1,
            "assist_probability": 0.134,
            "finishing_factor": 1.25,
            "creation_factor": 1.25,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 75,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1601,
                "expected_assists": 0.2957,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 21,
                "key_pass": 1,
                "interceptions": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 67,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0363,
                "expected_assists": 0.0483,
                "total_shots": 1,
                "total_pass": 14,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 2,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 67,
                "rating": 8.5,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0726,
                "expected_assists": 0.8929,
                "total_shots": 1,
                "total_pass": 25,
                "accurate_pass": 20,
                "key_pass": 2,
                "duels_won": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 63,
                "rating": 6.8,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0258,
                "expected_assists": 0.4781,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 29,
                "accurate_pass": 25,
                "key_pass": 2,
                "tackles": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 13,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0127,
                "expected_assists": 0.0046,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 6,
                "accurate_pass": 5,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 20,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0248,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 18,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 11,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "interceptions": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0069,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 6,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083239,
              "match_date": "2026-04-26",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Rayo Vallecano",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1036,
                "expected_assists": 0.0194,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 24,
                "accurate_pass": 16,
                "key_pass": 4,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 7,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083330,
              "match_date": "2026-04-23",
              "home_team": "Rayo Vallecano",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Rayo Vallecano",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 32,
                "rating": 7.1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0636,
                "expected_assists": 0.0197,
                "total_shots": 1,
                "total_pass": 6,
                "accurate_pass": 6,
                "key_pass": 1,
                "clearances": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3623,
            "combined_rank_score": 1590.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 768.0,
            "sofascore_rating": 6.645,
            "sofascore_appearances": 20.0,
            "fifa_rank": 2412.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9814,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ilias Akhomach",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Joe Scally",
                  "ranking": 3618
                },
                {
                  "player_name": "Petros Mantalos",
                  "ranking": 3619
                },
                {
                  "player_name": "Rodinei",
                  "ranking": 3620
                },
                {
                  "player_name": "David Jurásek",
                  "ranking": 3621
                },
                {
                  "player_name": "Raúl Moro",
                  "ranking": 3622
                }
              ],
              "lower": [
                {
                  "player_name": "Andrija Živković",
                  "ranking": 3624
                },
                {
                  "player_name": "Maffeo",
                  "ranking": 3625
                },
                {
                  "player_name": "Harold Moukoudi",
                  "ranking": 3626
                },
                {
                  "player_name": "Davide Calabria",
                  "ranking": 3627
                },
                {
                  "player_name": "Luka Jović",
                  "ranking": 3628
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.755,
          "history_matches": 28,
          "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": 28,
            "data_confidence": 0.755,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0014,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 0.0,
              "minutes": 47.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.0333
            },
            "rationale": "XGBoost regressor (F_service) evaluated 28 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.03, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1174,
                "goals": 0.1874,
                "goal_rate": 0.1874,
                "shots_on_target": 0.5914,
                "total_shots": 1.6322,
                "expected_assists": 0.1408,
                "key_pass": 1.2374,
                "rating": 6.9814,
                "minutes": 72.93,
                "total_pass": 22.5125,
                "accurate_pass": 18.0365,
                "duels_won": 5.5617,
                "total_long_balls": 0.7552,
                "accurate_long_balls": 0.4586,
                "total_opp_half_passes": 18.0259,
                "accurate_opp_half_passes": 13.9208,
                "crosses_total": 2.5695,
                "crosses_accurate": 0.3766,
                "touches": 42.6848,
                "possession_lost": 13.801,
                "dispossessed": 2.1162,
                "duels_lost": 5.1915,
                "aerial_lost": 0.1281,
                "total_contest": 4.6343,
                "won_contest": 2.749,
                "ball_recovery": 2.3411,
                "challenges_lost": 0.4217,
                "fouls": 0.6402,
                "fouls_drawn": 1.7159,
                "assists": 0.2281,
                "assist_rate": 0.2281,
                "interceptions": 0.2686,
                "tackles_won": 0.4121,
                "tackles": 1.0967,
                "clearances": 0.3812,
                "blocks": 0.0571,
                "big_chances_created": 0.4194,
                "big_chances_missed": 0.0638,
                "xgot": 0.0466,
                "offsides": 0.0644,
                "ball_carries": 18.1823,
                "total_progression": 102.1285,
                "progressive_carries": 4.6469,
                "shots_off_target": 1.0408
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.1516,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.1289,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.1095,
                    "rating": 8.5
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0931,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0791,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0673,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.0572,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0486,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0413,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-23",
                    "opponent": "Espanyol",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.0351,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "expectedGoals": 0.0656,
                  "totalOppositionHalfPasses": 14.9922,
                  "accurateOppositionHalfPasses": 11.8254,
                  "accuratePass": 14.6858,
                  "totalShots": 1.405
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.11744824796915054,
                    "model_output": 0.1174,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0629
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0573
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0258
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0163
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0082
                        }
                      ],
                      "others": -0.0358,
                      "total": 0.1174,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.27583
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.248205
                        },
                        {
                          "name": "goals",
                          "margin": -0.135643
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.096112
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.051889
                        }
                      ],
                      "others_margin": -0.265804
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.18735311925411224,
                    "model_output": 0.1874,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0657
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0272
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0207
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0076
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0074
                        }
                      ],
                      "others": -0.0329,
                      "total": 0.1874,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.281116
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.10699
                        },
                        {
                          "name": "goals",
                          "margin": -0.090012
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.033757
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.032867
                        }
                      ],
                      "others_margin": -0.161783
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5914150476455688,
                    "model_output": 0.5914,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1787
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0714
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0582
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0452
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0326
                        }
                      ],
                      "others": -0.0717,
                      "total": 0.5914,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.287655
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.105178
                        },
                        {
                          "name": "goals",
                          "margin": -0.094768
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.074392
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.050393
                        }
                      ],
                      "others_margin": -0.114469
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.6322383880615234,
                    "model_output": 1.6322,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4672
                        },
                        {
                          "name": "goals",
                          "contribution": -0.1011
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0764
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0404
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0381
                        }
                      ],
                      "others": -0.0405,
                      "total": 1.6322,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.467237
                        },
                        {
                          "name": "goals",
                          "margin": -0.101096
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.076361
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.040361
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.038133
                        }
                      ],
                      "others_margin": -0.04052
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.14082980155944824,
                    "model_output": 0.1408,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0163
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0098
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0097
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0102
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0079
                        }
                      ],
                      "others": 0.0225,
                      "total": 0.1408,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.225703
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.115015
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.102015
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.096369
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.069115
                        }
                      ],
                      "others_margin": 0.173545
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.2373557090759277,
                    "model_output": 1.2374,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2014
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0888
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0898
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0702
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0433
                        }
                      ],
                      "others": 0.15,
                      "total": 1.2374,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.259243
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.095989
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.088513
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.064063
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.039063
                        }
                      ],
                      "others_margin": 0.129218
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.981383800506592,
                    "model_output": 6.9814,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0689
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.048
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0331
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0294
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0205
                        }
                      ],
                      "others": 0.0542,
                      "total": 6.9814,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.068907
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.048015
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.033132
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.029398
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.020464
                        }
                      ],
                      "others_margin": 0.054116
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 28,
                  "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 1.0014, quality 0.535)",
              "stats": {
                "expected_goals": 0.1176,
                "goals": 0.1876,
                "goal_rate": 0.1876,
                "shots_on_target": 0.5922,
                "total_shots": 1.6345,
                "expected_assists": 0.141,
                "key_pass": 1.2391,
                "rating": 6.9814,
                "minutes": 72.93,
                "total_pass": 22.544,
                "accurate_pass": 18.0618,
                "duels_won": 5.5695,
                "total_long_balls": 0.7563,
                "accurate_long_balls": 0.4592,
                "total_opp_half_passes": 18.0511,
                "accurate_opp_half_passes": 13.9403,
                "crosses_total": 2.5731,
                "crosses_accurate": 0.3771,
                "touches": 42.7446,
                "possession_lost": 13.8203,
                "dispossessed": 2.1192,
                "duels_lost": 5.1988,
                "aerial_lost": 0.1283,
                "total_contest": 4.6408,
                "won_contest": 2.7528,
                "ball_recovery": 2.3444,
                "challenges_lost": 0.4223,
                "fouls": 0.6411,
                "fouls_drawn": 1.7183,
                "assists": 0.2284,
                "assist_rate": 0.2284,
                "interceptions": 0.269,
                "tackles_won": 0.4127,
                "tackles": 1.0982,
                "clearances": 0.3817,
                "blocks": 0.0572,
                "big_chances_created": 0.42,
                "big_chances_missed": 0.0639,
                "xgot": 0.0467,
                "offsides": 0.0645,
                "ball_carries": 18.2078,
                "total_progression": 102.2715,
                "progressive_carries": 4.6534,
                "shots_off_target": 1.0423
              },
              "params": {
                "market_value_eur": 11100000,
                "quality_factor": 0.5353,
                "boost_factor": 1.0014,
                "reference_quality": 0.505,
                "history_matches": 28,
                "history_shrink": 0.1515,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0033)",
              "stats": {
                "expected_goals": 0.1176,
                "goals": 0.187,
                "goal_rate": 0.187,
                "shots_on_target": 0.5903,
                "total_shots": 1.6291,
                "expected_assists": 0.141,
                "key_pass": 1.2391,
                "rating": 6.9814,
                "minutes": 72.93,
                "total_pass": 22.544,
                "accurate_pass": 18.0618,
                "duels_won": 5.5695,
                "total_long_balls": 0.7563,
                "accurate_long_balls": 0.4592,
                "total_opp_half_passes": 18.0511,
                "accurate_opp_half_passes": 13.9403,
                "crosses_total": 2.6072,
                "crosses_accurate": 0.3771,
                "touches": 42.7446,
                "possession_lost": 13.8203,
                "dispossessed": 2.1192,
                "duels_lost": 5.1988,
                "aerial_lost": 0.1283,
                "total_contest": 4.6408,
                "won_contest": 2.7528,
                "ball_recovery": 2.3444,
                "challenges_lost": 0.4223,
                "fouls": 0.6443,
                "fouls_drawn": 1.7233,
                "assists": 0.2277,
                "assist_rate": 0.2277,
                "interceptions": 0.2734,
                "tackles_won": 0.4113,
                "tackles": 1.0982,
                "clearances": 0.3817,
                "blocks": 0.0572,
                "big_chances_created": 0.42,
                "big_chances_missed": 0.0639,
                "xgot": 0.0467,
                "offsides": 0.0643,
                "ball_carries": 18.2078,
                "total_progression": 102.2715,
                "progressive_carries": 4.6534,
                "shots_off_target": 1.0423
              },
              "params": {
                "blend_weight": 0.0033,
                "history_matches": 28,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8103,
                "prior_reliability": 0.0333,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 2.5731,
                  "after": 2.6072
                },
                {
                  "stat": "totalShots",
                  "before": 1.6345,
                  "after": 1.6291
                },
                {
                  "stat": "wasFouled",
                  "before": 1.7183,
                  "after": 1.7233
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1176,
                "goals": 0.187,
                "goal_rate": 0.187,
                "shots_on_target": 0.5903,
                "total_shots": 1.6326,
                "expected_assists": 0.141,
                "key_pass": 1.2391,
                "rating": 6.9814,
                "minutes": 72.93,
                "total_pass": 22.544,
                "accurate_pass": 18.0618,
                "duels_won": 5.5695,
                "total_long_balls": 0.7563,
                "accurate_long_balls": 0.4592,
                "total_opp_half_passes": 18.0511,
                "accurate_opp_half_passes": 13.9403,
                "crosses_total": 2.6072,
                "crosses_accurate": 0.3771,
                "touches": 42.7446,
                "possession_lost": 13.8203,
                "dispossessed": 2.1192,
                "duels_lost": 5.1988,
                "aerial_lost": 0.1283,
                "total_contest": 4.6408,
                "won_contest": 2.7528,
                "ball_recovery": 2.3444,
                "challenges_lost": 0.4223,
                "fouls": 0.6443,
                "fouls_drawn": 1.7233,
                "assists": 0.2277,
                "assist_rate": 0.2277,
                "interceptions": 0.2734,
                "tackles_won": 0.4113,
                "tackles": 1.0982,
                "clearances": 0.3817,
                "blocks": 0.0572,
                "big_chances_created": 0.42,
                "big_chances_missed": 0.0639,
                "xgot": 0.0467,
                "offsides": 0.0643,
                "ball_carries": 18.2078,
                "total_progression": 102.2715,
                "progressive_carries": 4.6534,
                "shots_off_target": 1.0423
              },
              "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.107,
                "goals": 0.1702,
                "goal_rate": 0.1702,
                "shots_on_target": 0.5372,
                "total_shots": 1.4858,
                "expected_assists": 0.141,
                "key_pass": 1.2391,
                "rating": 6.9814,
                "minutes": 72.93,
                "total_pass": 22.544,
                "accurate_pass": 18.0618,
                "duels_won": 5.5695,
                "total_long_balls": 0.7563,
                "accurate_long_balls": 0.4592,
                "total_opp_half_passes": 18.0511,
                "accurate_opp_half_passes": 13.9403,
                "crosses_total": 2.6072,
                "crosses_accurate": 0.3771,
                "touches": 42.7446,
                "possession_lost": 13.8203,
                "dispossessed": 2.1192,
                "duels_lost": 5.1988,
                "aerial_lost": 0.1283,
                "total_contest": 4.6408,
                "won_contest": 2.7528,
                "ball_recovery": 2.3444,
                "challenges_lost": 0.4223,
                "fouls": 0.6443,
                "fouls_drawn": 1.7233,
                "assists": 0.2277,
                "assist_rate": 0.2277,
                "interceptions": 0.2734,
                "tackles_won": 0.4113,
                "tackles": 1.0982,
                "clearances": 0.3817,
                "blocks": 0.0572,
                "big_chances_created": 0.42,
                "big_chances_missed": 0.0582,
                "xgot": 0.0425,
                "offsides": 0.0643,
                "ball_carries": 18.2078,
                "total_progression": 102.2715,
                "progressive_carries": 4.6534,
                "shots_off_target": 0.9486,
                "duel_xg_multiplier": 0.9101,
                "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": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Justin De Haas, César Tárrega",
                  "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.9101,
                  "skill_edge": -0.0012,
                  "height_edge": -0.06,
                  "attacker_skill": 0.5353,
                  "defender_skill": 0.5379,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Justin De Haas",
                      "market_value": 7700000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.5256
                    },
                    {
                      "player": "César Tárrega",
                      "market_value": 9300000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.5502
                    }
                  ],
                  "xg_override": 0.107
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.6326,
                  "after": 1.4858
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.0423,
                  "after": 0.9486
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5903,
                  "after": 0.5372
                },
                {
                  "stat": "goals",
                  "before": 0.187,
                  "after": 0.1702
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1176,
                  "after": 0.107
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.0639,
                  "after": 0.0582
                }
              ]
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.107,
                "goal_rate": 0.1702,
                "goals": 0,
                "shots_on_target": 0.5372,
                "total_shots": 1.4858,
                "expected_assists": 0.141,
                "key_pass": 1.2391,
                "rating": 6.9814,
                "minutes": 72.93,
                "total_pass": 22.544,
                "accurate_pass": 18.0618,
                "duels_won": 5.5695,
                "total_long_balls": 0.7563,
                "accurate_long_balls": 0.4592,
                "total_opp_half_passes": 18.0511,
                "accurate_opp_half_passes": 13.9403,
                "crosses_total": 2.6072,
                "crosses_accurate": 0.3771,
                "touches": 42.7446,
                "possession_lost": 13.8203,
                "dispossessed": 2.1192,
                "duels_lost": 5.1988,
                "aerial_lost": 0.1283,
                "total_contest": 4.6408,
                "won_contest": 2.7528,
                "ball_recovery": 2.3444,
                "challenges_lost": 0.4223,
                "fouls": 0.6443,
                "fouls_drawn": 1.7233,
                "assist_rate": 0.2277,
                "assists": 0,
                "interceptions": 0.2734,
                "tackles_won": 0.4113,
                "tackles": 1.0982,
                "clearances": 0.3817,
                "blocks": 0.0572,
                "big_chances_created": 0.42,
                "big_chances_missed": 0.0582,
                "xgot": 0.0425,
                "offsides": 0.0643,
                "ball_carries": 18.2078,
                "total_progression": 102.2715,
                "progressive_carries": 4.6534,
                "shots_off_target": 0.9486,
                "duel_xg_multiplier": 0.9101,
                "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": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.1092,
                "goal_rate": 0.1702,
                "goals": 0,
                "shots_on_target": 0.5372,
                "total_shots": 1.4858,
                "expected_assists": 0.1439,
                "key_pass": 1.2391,
                "rating": 6.9814,
                "minutes": 72.93,
                "total_pass": 22.544,
                "accurate_pass": 18.0618,
                "duels_won": 5.5695,
                "total_long_balls": 0.7563,
                "accurate_long_balls": 0.4592,
                "total_opp_half_passes": 18.0511,
                "accurate_opp_half_passes": 13.9403,
                "crosses_total": 2.6072,
                "crosses_accurate": 0.3771,
                "touches": 42.7446,
                "possession_lost": 13.8203,
                "dispossessed": 2.1192,
                "duels_lost": 5.1988,
                "aerial_lost": 0.1283,
                "total_contest": 4.6408,
                "won_contest": 2.7528,
                "ball_recovery": 2.3444,
                "challenges_lost": 0.4223,
                "fouls": 0.6443,
                "fouls_drawn": 1.7233,
                "assist_rate": 0.2277,
                "assists": 0,
                "interceptions": 0.2734,
                "tackles_won": 0.4113,
                "tackles": 1.0982,
                "clearances": 0.3817,
                "blocks": 0.0572,
                "big_chances_created": 0.42,
                "big_chances_missed": 0.0582,
                "xgot": 0.0434,
                "offsides": 0.0643,
                "ball_carries": 18.2078,
                "total_progression": 102.2715,
                "progressive_carries": 4.6534,
                "shots_off_target": 0.9486,
                "duel_xg_multiplier": 0.9101,
                "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": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "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 75.0)",
              "stats": {
                "expected_goals": 0.1092,
                "goal_rate": 0.1702,
                "goals": 0,
                "shots_on_target": 0.5372,
                "total_shots": 1.4858,
                "expected_assists": 0.1439,
                "key_pass": 1.2391,
                "rating": 6.9814,
                "minutes": 72.93,
                "total_pass": 22.544,
                "accurate_pass": 18.0618,
                "duels_won": 5.5695,
                "total_long_balls": 0.7563,
                "accurate_long_balls": 0.4592,
                "total_opp_half_passes": 18.0511,
                "accurate_opp_half_passes": 13.9403,
                "crosses_total": 2.6072,
                "crosses_accurate": 0.3771,
                "touches": 42.7446,
                "possession_lost": 13.8203,
                "dispossessed": 2.1192,
                "duels_lost": 5.1988,
                "aerial_lost": 0.1283,
                "total_contest": 4.6408,
                "won_contest": 2.7528,
                "ball_recovery": 2.3444,
                "challenges_lost": 0.4223,
                "fouls": 0.6443,
                "fouls_drawn": 1.7233,
                "assist_rate": 0.2277,
                "assists": 0,
                "interceptions": 0.2734,
                "tackles_won": 0.4113,
                "tackles": 1.0982,
                "clearances": 0.3817,
                "blocks": 0.0572,
                "big_chances_created": 0.42,
                "big_chances_missed": 0.0582,
                "xgot": 0.0434,
                "offsides": 0.0643,
                "ball_carries": 18.2078,
                "total_progression": 102.2715,
                "progressive_carries": 4.6534,
                "shots_off_target": 0.9486,
                "duel_xg_multiplier": 0.9101,
                "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": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "match_squad_rank": 7,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3623,
                "fifa_rank": 2412.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.1092,
                "goal_rate": 0.1702,
                "goals": 0,
                "shots_on_target": 0.5372,
                "total_shots": 1.4858,
                "expected_assists": 0.1439,
                "key_pass": 1.2391,
                "rating": 6.9814,
                "minutes": 72.93,
                "total_pass": 22.544,
                "accurate_pass": 18.0618,
                "duels_won": 5.5695,
                "total_long_balls": 0.7563,
                "accurate_long_balls": 0.4592,
                "total_opp_half_passes": 18.0511,
                "accurate_opp_half_passes": 13.9403,
                "crosses_total": 2.6072,
                "crosses_accurate": 0.3771,
                "touches": 42.7446,
                "possession_lost": 13.8203,
                "dispossessed": 2.1192,
                "duels_lost": 5.1988,
                "aerial_lost": 0.1283,
                "total_contest": 4.6408,
                "won_contest": 2.7528,
                "ball_recovery": 2.3444,
                "challenges_lost": 0.4223,
                "fouls": 0.6443,
                "fouls_drawn": 1.7233,
                "assist_rate": 0.2277,
                "assists": 0,
                "interceptions": 0.2734,
                "tackles_won": 0.4113,
                "tackles": 1.0982,
                "clearances": 0.3817,
                "blocks": 0.0572,
                "big_chances_created": 0.42,
                "big_chances_missed": 0.0582,
                "xgot": 0.0434,
                "offsides": 0.0643,
                "ball_carries": 18.2078,
                "total_progression": 102.2715,
                "progressive_carries": 4.6534,
                "shots_off_target": 0.9486,
                "duel_xg_multiplier": 0.9101,
                "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": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1034,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1034,
                "goal_rate": 0.1702,
                "scorer_weight": 0.1365,
                "squad_weight_total": 1.5114,
                "weight_share": 0.0903,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.1092,
                "goal_rate": 0.1702,
                "goals": 0,
                "shots_on_target": 0.5372,
                "total_shots": 1.4858,
                "expected_assists": 0.1439,
                "key_pass": 1.2391,
                "rating": 6.9814,
                "minutes": 72.93,
                "total_pass": 22.544,
                "accurate_pass": 18.0618,
                "duels_won": 5.5695,
                "total_long_balls": 0.7563,
                "accurate_long_balls": 0.4592,
                "total_opp_half_passes": 18.0511,
                "accurate_opp_half_passes": 13.9403,
                "crosses_total": 2.6072,
                "crosses_accurate": 0.3771,
                "touches": 42.7446,
                "possession_lost": 13.8203,
                "dispossessed": 2.1192,
                "duels_lost": 5.1988,
                "aerial_lost": 0.1283,
                "total_contest": 4.6408,
                "won_contest": 2.7528,
                "ball_recovery": 2.3444,
                "challenges_lost": 0.4223,
                "fouls": 0.6443,
                "fouls_drawn": 1.7233,
                "assist_rate": 0.2277,
                "assists": 1,
                "interceptions": 0.2734,
                "tackles_won": 0.4113,
                "tackles": 1.0982,
                "clearances": 0.3817,
                "blocks": 0.0572,
                "big_chances_created": 0.42,
                "big_chances_missed": 0.0582,
                "xgot": 0.0434,
                "offsides": 0.0643,
                "ball_carries": 18.2078,
                "total_progression": 102.2715,
                "progressive_carries": 4.6534,
                "shots_off_target": 0.9486,
                "duel_xg_multiplier": 0.9101,
                "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": "Justin De Haas, César Tárrega",
                "opponent_faced": "Justin De Haas, César Tárrega",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1034,
                "projected_assists": 1,
                "assist_probability": 0.134,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 1,
                "assist_probability": 0.134,
                "assist_rate": 0.2277,
                "provider_weight": 0.1799,
                "squad_weight_total": 1.1097,
                "weight_share": 0.1621,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Sergi Cardona": {
          "player_id": 986245,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 23,
          "height": 186,
          "market_value": 8600000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.7441,
            "minutes": 86,
            "total_pass": 44,
            "accurate_pass": 38,
            "duels_won": 4,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 20,
            "accurate_own_half_passes": 19,
            "total_opp_half_passes": 24,
            "accurate_opp_half_passes": 19,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 69,
            "possession_lost": 12.8862,
            "dispossessed": 0.3439,
            "duels_lost": 4,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0491,
            "goals": 0,
            "assist_rate": 0.0095,
            "assists": 0,
            "expected_goals": 0.0255,
            "expected_assists": 0.1268,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0158,
            "ball_carries": 16,
            "total_progression": 78,
            "progressive_carries": 2,
            "key_pass": 1,
            "shots_off_target": 0,
            "tackles_in_zone": 2.0,
            "tackles_won_in_zone": 1.5,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.454,
            "opponent_faced": "Javier Guerra",
            "pressing_zone": "Left Wing vs Right Back — Flank Battle",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0252,
            "projected_assists": 0,
            "assist_probability": 0.1191,
            "finishing_factor": 1.25,
            "creation_factor": 0.8,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2749,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 42,
                "key_pass": 3,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 2,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 67,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0064,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 25,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.015,
                "expected_assists": 0.3181,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 62,
                "accurate_pass": 52,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0457,
                "expected_assists": 0.0406,
                "total_shots": 2,
                "total_pass": 80,
                "accurate_pass": 73,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 2,
                "duels_won": 4,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0381,
                "total_shots": 0,
                "total_pass": 59,
                "accurate_pass": 52,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083735,
              "match_date": "2026-05-24",
              "home_team": "Villarreal",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 23,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0146,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 10,
                "clearances": 2,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083682,
              "match_date": "2026-05-17",
              "home_team": "Rayo Vallecano",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.043,
                "expected_assists": 0.0321,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 40,
                "accurate_pass": 38,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083573,
              "match_date": "2026-05-10",
              "home_team": "Mallorca",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0138,
                "expected_assists": 0.007,
                "total_shots": 1,
                "total_pass": 38,
                "accurate_pass": 31,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083512,
              "match_date": "2026-05-02",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 17,
                "rating": 7.2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0041,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 11,
                "key_pass": 1,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083248,
              "match_date": "2026-04-26",
              "home_team": "Villarreal",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 12,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0055,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 7,
                "clearances": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 2148,
            "combined_rank_score": 810.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 653.0,
            "sofascore_rating": 6.7387,
            "sofascore_appearances": 31.0,
            "fifa_rank": 967.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7441,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sergi Cardona",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Álvaro Valles",
                  "ranking": 2143
                },
                {
                  "player_name": "Lazar Samardžić",
                  "ranking": 2144
                },
                {
                  "player_name": "Giovanny Avalos",
                  "ranking": 2145
                },
                {
                  "player_name": "Nahuel Tenaglia",
                  "ranking": 2146
                },
                {
                  "player_name": "Breel Embolo",
                  "ranking": 2147
                }
              ],
              "lower": [
                {
                  "player_name": "Kim Geon-oh",
                  "ranking": 2149
                },
                {
                  "player_name": "Ben Chilwell",
                  "ranking": 2150
                },
                {
                  "player_name": "Nicholas Duarte",
                  "ranking": 2151
                },
                {
                  "player_name": "Edem Nemanov",
                  "ranking": 2152
                },
                {
                  "player_name": "Samú Costa",
                  "ranking": 2153
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 36,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 36,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "XGBoost regressor (D_service) evaluated 36 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.00, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.9992,
                "tackles": 1.6718,
                "tackles_won": 1.0504,
                "clearances": 2.3105,
                "aerial_won": 0.7595,
                "total_shots": 0.5731,
                "rating": 6.7441,
                "minutes": 85.9,
                "total_pass": 44.4497,
                "accurate_pass": 37.8142,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.4759,
                "accurate_own_half_passes": 19.0585,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 69.0024,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "assists": 0.0095,
                "assist_rate": 0.0095,
                "expected_goals": 0.025,
                "expected_assists": 0.1243,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0155,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4321
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.1279,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1087,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0924,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Atlético Madrid",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0667,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Mallorca",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Levante UD",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.041,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Celta Vigo",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 1.847,
                  "aerialWon": 0.6875,
                  "totalClearance_p90": 2.7175,
                  "totalTackle": 1.393,
                  "defensive_actions": 2.3557
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.9991740584373474,
                    "model_output": 0.9992,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1172
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0375
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0305
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0254
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0199
                        }
                      ],
                      "others": 0.0202,
                      "total": 0.9992,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.127666
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.037605
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.030482
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.02609
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.020505
                        }
                      ],
                      "others_margin": 0.020417
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.6718111038208008,
                    "model_output": 1.6718,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1824
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0921
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0514
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0493
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0295
                        }
                      ],
                      "others": -0.057,
                      "total": 1.6718,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.123875
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.057191
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.030549
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.02845
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.016945
                        }
                      ],
                      "others_margin": -0.033511
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.0504016876220703,
                    "model_output": 1.0504,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.116
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0355
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.032
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0273
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0264
                        }
                      ],
                      "others": 0.0868,
                      "total": 1.0504,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.128671
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.03625
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.032625
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.028702
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.027796
                        }
                      ],
                      "others_margin": 0.086183
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.310455799102783,
                    "model_output": 2.3105,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": -0.5803
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3671
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2819
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.223
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0857
                        }
                      ],
                      "others": -0.3108,
                      "total": 2.3105,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.185634
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.12136
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.091868
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.079177
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.032179
                        }
                      ],
                      "others_margin": -0.126181
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.7595142722129822,
                    "model_output": 0.7595,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.3934
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1237
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0877
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0736
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.046
                        }
                      ],
                      "others": -0.1487,
                      "total": 0.7595,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.334118
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.117536
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.081881
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.074341
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.049406
                        }
                      ],
                      "others_margin": -0.178683
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5730513334274292,
                    "model_output": 0.5731,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0675
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0221
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0177
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0112
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.011
                        }
                      ],
                      "others": -0.0089,
                      "total": 0.5731,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.067533
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.022101
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.017738
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.011169
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.010978
                        }
                      ],
                      "others_margin": -0.009069
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.744089603424072,
                    "model_output": 6.7441,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0163
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0118
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0093
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0088
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0083
                        }
                      ],
                      "others": -0.043,
                      "total": 6.7441,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.016272
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.011807
                        },
                        {
                          "name": "touches",
                          "margin": 0.009259
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.008838
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.008262
                        }
                      ],
                      "others_margin": -0.042916
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 36,
                  "role_matches": 25,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0000, quality 0.506)",
              "stats": {
                "interceptions": 0.9992,
                "tackles": 1.6718,
                "tackles_won": 1.0504,
                "clearances": 2.3105,
                "aerial_won": 0.7595,
                "total_shots": 0.5731,
                "rating": 6.7441,
                "minutes": 85.9,
                "total_pass": 44.4497,
                "accurate_pass": 37.8142,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.4759,
                "accurate_own_half_passes": 19.0585,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 69.0024,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "assists": 0.0095,
                "assist_rate": 0.0095,
                "expected_goals": 0.025,
                "expected_assists": 0.1243,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0155,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4321
              },
              "params": {
                "market_value_eur": 8600000,
                "quality_factor": 0.5059,
                "boost_factor": 1.0,
                "reference_quality": 0.505,
                "history_matches": 36,
                "history_shrink": 0.122,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.9992,
                "tackles": 1.6718,
                "tackles_won": 1.0504,
                "clearances": 2.3105,
                "aerial_won": 0.7595,
                "total_shots": 0.5731,
                "rating": 6.7441,
                "minutes": 85.9,
                "total_pass": 44.4497,
                "accurate_pass": 37.8142,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.4759,
                "accurate_own_half_passes": 19.0585,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 69.0024,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "assists": 0.0095,
                "assist_rate": 0.0095,
                "expected_goals": 0.025,
                "expected_assists": 0.1243,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0155,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4321
              },
              "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.9992,
                "tackles": 1.6718,
                "tackles_won": 1.0504,
                "clearances": 2.3105,
                "aerial_won": 0.7595,
                "total_shots": 0.5731,
                "rating": 6.7441,
                "minutes": 85.9,
                "total_pass": 44.4497,
                "accurate_pass": 37.8142,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.4759,
                "accurate_own_half_passes": 19.0585,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 69.0024,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "assists": 0.0095,
                "assist_rate": 0.0095,
                "expected_goals": 0.025,
                "expected_assists": 0.1243,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0155,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4321,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.5,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.454,
                "opponent_faced": "Javier Guerra",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Javier Guerra",
                  "matchup_zone": "Left Wing vs Right Back — Flank Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.9992,
                "tackles": 1.6718,
                "tackles_won": 1.0504,
                "clearances": 2.3105,
                "aerial_won": 0.7595,
                "total_shots": 0.5731,
                "rating": 6.7441,
                "minutes": 85.9,
                "total_pass": 44.4497,
                "accurate_pass": 37.8142,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.4759,
                "accurate_own_half_passes": 19.0585,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 69.0024,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0095,
                "assists": 0,
                "expected_goals": 0.025,
                "expected_assists": 0.1243,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0155,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4321,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.5,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.454,
                "opponent_faced": "Javier Guerra",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "interceptions": 0.9992,
                "tackles": 1.6718,
                "tackles_won": 1.0504,
                "clearances": 2.3105,
                "aerial_won": 0.7595,
                "total_shots": 0.5731,
                "rating": 6.7441,
                "minutes": 85.9,
                "total_pass": 44.4497,
                "accurate_pass": 37.8142,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.4759,
                "accurate_own_half_passes": 19.0585,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 69.0024,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0095,
                "assists": 0,
                "expected_goals": 0.0255,
                "expected_assists": 0.1268,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0158,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4321,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.5,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.454,
                "opponent_faced": "Javier Guerra",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 79.0)",
              "stats": {
                "interceptions": 0.9992,
                "tackles": 1.6718,
                "tackles_won": 1.0504,
                "clearances": 2.3105,
                "aerial_won": 0.7595,
                "total_shots": 0.5731,
                "rating": 6.7441,
                "minutes": 85.9,
                "total_pass": 44.4497,
                "accurate_pass": 37.8142,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.4759,
                "accurate_own_half_passes": 19.0585,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 69.0024,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0095,
                "assists": 0,
                "expected_goals": 0.0255,
                "expected_assists": 0.1268,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0158,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4321,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.5,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.454,
                "opponent_faced": "Javier Guerra",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 79.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": 2148,
                "fifa_rank": 967.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 0.9992,
                "tackles": 1.6718,
                "tackles_won": 1.0504,
                "clearances": 2.3105,
                "aerial_won": 0.7595,
                "total_shots": 0.5731,
                "rating": 6.7441,
                "minutes": 85.9,
                "total_pass": 44.4497,
                "accurate_pass": 37.8142,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.4759,
                "accurate_own_half_passes": 19.0585,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 69.0024,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0095,
                "assists": 0,
                "expected_goals": 0.0255,
                "expected_assists": 0.1268,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0158,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4321,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.5,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.454,
                "opponent_faced": "Javier Guerra",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0252,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0252,
                "goal_rate": 0.0491,
                "scorer_weight": 0.0319,
                "squad_weight_total": 1.5114,
                "weight_share": 0.0211,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "interceptions": 0.9992,
                "tackles": 1.6718,
                "tackles_won": 1.0504,
                "clearances": 2.3105,
                "aerial_won": 0.7595,
                "total_shots": 0.5731,
                "rating": 6.7441,
                "minutes": 85.9,
                "total_pass": 44.4497,
                "accurate_pass": 37.8142,
                "duels_won": 4.1583,
                "total_long_balls": 3.2871,
                "accurate_long_balls": 1.1663,
                "total_own_half_passes": 20.4759,
                "accurate_own_half_passes": 19.0585,
                "total_opp_half_passes": 23.9738,
                "accurate_opp_half_passes": 18.7556,
                "crosses_total": 3.3439,
                "crosses_accurate": 0.5434,
                "touches": 69.0024,
                "possession_lost": 12.8862,
                "dispossessed": 0.3439,
                "duels_lost": 3.7567,
                "aerial_lost": 0.4603,
                "total_contest": 0.9101,
                "won_contest": 0.3565,
                "ball_recovery": 3.4622,
                "challenges_lost": 1.0744,
                "fouls": 1.3304,
                "fouls_drawn": 1.2456,
                "blocks": 0.2111,
                "goal_rate": 0.0491,
                "goals": 0,
                "assist_rate": 0.0095,
                "assists": 0,
                "expected_goals": 0.0255,
                "expected_assists": 0.1268,
                "shots_on_target": 0.141,
                "big_chances_created": 0.4629,
                "xgot": 0.0158,
                "ball_carries": 16.1657,
                "total_progression": 78.1248,
                "progressive_carries": 1.5749,
                "key_pass": 0.9784,
                "shots_off_target": 0.4321,
                "tackles_in_zone": 2.0,
                "tackles_won_in_zone": 1.5,
                "interceptions_in_zone": 0.8,
                "clearances_in_zone": 0.7,
                "aerial_duels_won": 0.8,
                "defensive_success_rate": 0.454,
                "opponent_faced": "Javier Guerra",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0252,
                "projected_assists": 0,
                "assist_probability": 0.1191,
                "finishing_factor": 1.25,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1191,
                "assist_rate": 0.0095,
                "provider_weight": 0.1014,
                "squad_weight_total": 1.1097,
                "weight_share": 0.0914,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Renato Veiga": {
          "player_id": 1087359,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 12,
          "height": 190,
          "market_value": 29000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 7.0245,
            "minutes": 90,
            "total_pass": 79,
            "accurate_pass": 72,
            "duels_won": 2,
            "total_long_balls": 9,
            "accurate_long_balls": 5,
            "total_own_half_passes": 48,
            "accurate_own_half_passes": 46,
            "total_opp_half_passes": 31,
            "accurate_opp_half_passes": 26,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 91,
            "possession_lost": 8.3699,
            "dispossessed": 0.1855,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0917,
            "assists": 0,
            "expected_goals": 0.019,
            "expected_assists": 0.0913,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0003,
            "ball_carries": 31,
            "total_progression": 122,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 1,
            "tackles_in_zone": 1.1,
            "tackles_won_in_zone": 1.0,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Dani Raba",
            "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.0188,
            "projected_assists": 0,
            "assist_probability": 0.0873,
            "finishing_factor": 0.8,
            "creation_factor": 1.0158,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0299,
                "expected_assists": 0.0139,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 68,
                "accurate_pass": 56,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2275,
                "total_shots": 0,
                "total_pass": 110,
                "accurate_pass": 106,
                "key_pass": 1,
                "clearances": 5,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0176,
                "expected_assists": 0.0731,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 92,
                "accurate_pass": 82,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.3191,
                "total_shots": 0,
                "total_pass": 91,
                "accurate_pass": 84,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0209,
                "total_shots": 0,
                "total_pass": 78,
                "accurate_pass": 74,
                "interceptions": 3,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1297,
                "expected_assists": 0.0324,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 92,
                "accurate_pass": 84,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0087,
                "total_shots": 0,
                "total_pass": 58,
                "accurate_pass": 52,
                "interceptions": 2,
                "clearances": 8,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2498,
                "total_shots": 0,
                "total_pass": 80,
                "accurate_pass": 76,
                "interceptions": 2,
                "clearances": 9,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083644,
              "match_date": "2026-05-13",
              "home_team": "Villarreal",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0324,
                "total_shots": 0,
                "total_pass": 88,
                "accurate_pass": 81,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083573,
              "match_date": "2026-05-10",
              "home_team": "Mallorca",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0034,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 45,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 2081,
            "combined_rank_score": 791.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 336.0,
            "sofascore_rating": 7.0,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1247.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0245,
            "source_file": "data/player_rankings.csv",
            "player_name": "Renato Veiga",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Chan-dong Lee",
                  "ranking": 2076
                },
                {
                  "player_name": "Leonardo Spinazzola",
                  "ranking": 2077
                },
                {
                  "player_name": "Toni Martínez",
                  "ranking": 2078
                },
                {
                  "player_name": "Callum Hudson Odoi",
                  "ranking": 2079
                },
                {
                  "player_name": "Cédric Bakambu",
                  "ranking": 2080
                }
              ],
              "lower": [
                {
                  "player_name": "Shodiyor Shodiboev",
                  "ranking": 2082
                },
                {
                  "player_name": "Matija Rom",
                  "ranking": 2083
                },
                {
                  "player_name": "Franco Rami",
                  "ranking": 2084
                },
                {
                  "player_name": "Jon Aramburu",
                  "ranking": 2085
                },
                {
                  "player_name": "Nikita Haikin",
                  "ranking": 2086
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 40,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 40,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0068,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 270.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.67,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.2
            },
            "rationale": "XGBoost regressor (D_service) evaluated 40 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.20, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.063,
                "tackles": 0.9135,
                "tackles_won": 0.5802,
                "clearances": 4.9823,
                "aerial_won": 1.4408,
                "total_shots": 0.6611,
                "rating": 7.0245,
                "minutes": 89.85,
                "total_pass": 78.6096,
                "accurate_pass": 71.5111,
                "duels_won": 2.114,
                "total_long_balls": 8.8836,
                "accurate_long_balls": 4.4913,
                "total_own_half_passes": 48.0417,
                "accurate_own_half_passes": 45.9022,
                "total_opp_half_passes": 30.568,
                "accurate_opp_half_passes": 25.609,
                "crosses_total": 0.0703,
                "crosses_accurate": 0.0,
                "touches": 90.8441,
                "possession_lost": 8.3134,
                "dispossessed": 0.1842,
                "duels_lost": 2.1063,
                "aerial_lost": 0.7154,
                "total_contest": 0.4827,
                "won_contest": 0.3452,
                "ball_recovery": 3.4354,
                "challenges_lost": 0.4344,
                "fouls": 0.7289,
                "fouls_drawn": 0.1287,
                "blocks": 1.2299,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0924,
                "assist_rate": 0.0924,
                "expected_goals": 0.0185,
                "expected_assists": 0.0889,
                "shots_on_target": 0.0075,
                "big_chances_created": 0.0962,
                "xgot": 0.0003,
                "ball_carries": 31.2242,
                "total_progression": 121.0688,
                "progressive_carries": 0.778,
                "key_pass": 0.3587,
                "shots_off_target": 0.6536
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0923,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Mallorca",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 5.1221,
                  "aerialWon": 1.2728,
                  "totalClearance_p90": 5.3445,
                  "totalTackle": 0.3343,
                  "defensive_actions": 1.3823
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.0629727840423584,
                    "model_output": 1.063,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1105
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0408
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0388
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0316
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0292
                        }
                      ],
                      "others": 0.0102,
                      "total": 1.063,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.120826
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.041206
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.037588
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.029631
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.027392
                        }
                      ],
                      "others_margin": 0.009657
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.9135100841522217,
                    "model_output": 0.9135,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1643
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1452
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.1352
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0686
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0611
                        }
                      ],
                      "others": -0.1856,
                      "total": 0.9135,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.126459
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.112585
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.104405
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.057478
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.054134
                        }
                      ],
                      "others_margin": -0.184869
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.5802267789840698,
                    "model_output": 0.5802,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1116
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0778
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.074
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0324
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0273
                        }
                      ],
                      "others": -0.0897,
                      "total": 0.5802,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.141704
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.112176
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.106954
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.045413
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.03992
                        }
                      ],
                      "others_margin": -0.143677
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.98225736618042,
                    "model_output": 4.9823,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.6148
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4769
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.3243
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2491
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.2537
                        }
                      ],
                      "others": -0.3616,
                      "total": 4.9823,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.165103
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.111586
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.069335
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.050174
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.048639
                        }
                      ],
                      "others_margin": -0.070078
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.4408246278762817,
                    "model_output": 1.4408,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.1354
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1265
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0775
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0769
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.069
                        }
                      ],
                      "others": -0.0039,
                      "total": 1.4408,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.102824
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.096427
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.057973
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.057553
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.048931
                        }
                      ],
                      "others_margin": -0.002713
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.661101758480072,
                    "model_output": 0.6611,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0597
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0556
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0535
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0264
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0251
                        }
                      ],
                      "others": 0.0187,
                      "total": 0.6611,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.059663
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.055584
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.053536
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.026422
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.025111
                        }
                      ],
                      "others_margin": 0.018691
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.02450704574585,
                    "model_output": 7.0245,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0792
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0737
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0463
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0266
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0248
                        }
                      ],
                      "others": 0.0331,
                      "total": 7.0245,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.079201
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.073689
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.046255
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.026645
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.024753
                        }
                      ],
                      "others_margin": 0.033088
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 40,
                  "role_matches": 35,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0068, quality 0.710)",
              "stats": {
                "interceptions": 1.0702,
                "tackles": 0.9197,
                "tackles_won": 0.5842,
                "clearances": 5.0161,
                "aerial_won": 1.4506,
                "total_shots": 0.6656,
                "rating": 7.0245,
                "minutes": 89.85,
                "total_pass": 79.1441,
                "accurate_pass": 71.9974,
                "duels_won": 2.1284,
                "total_long_balls": 8.944,
                "accurate_long_balls": 4.5218,
                "total_own_half_passes": 48.3684,
                "accurate_own_half_passes": 46.2143,
                "total_opp_half_passes": 30.7759,
                "accurate_opp_half_passes": 25.7831,
                "crosses_total": 0.0708,
                "crosses_accurate": 0.0,
                "touches": 91.4618,
                "possession_lost": 8.3699,
                "dispossessed": 0.1855,
                "duels_lost": 2.1206,
                "aerial_lost": 0.7203,
                "total_contest": 0.486,
                "won_contest": 0.3475,
                "ball_recovery": 3.4588,
                "challenges_lost": 0.4374,
                "fouls": 0.7339,
                "fouls_drawn": 0.1296,
                "blocks": 1.2383,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.093,
                "assist_rate": 0.093,
                "expected_goals": 0.0186,
                "expected_assists": 0.0895,
                "shots_on_target": 0.0076,
                "big_chances_created": 0.0969,
                "xgot": 0.0003,
                "ball_carries": 31.4365,
                "total_progression": 121.8921,
                "progressive_carries": 0.7833,
                "key_pass": 0.3611,
                "shots_off_target": 0.658
              },
              "params": {
                "market_value_eur": 29000000,
                "quality_factor": 0.71,
                "boost_factor": 1.0068,
                "reference_quality": 0.505,
                "history_matches": 40,
                "history_shrink": 0.1111,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0144)",
              "stats": {
                "interceptions": 1.074,
                "tackles": 0.9197,
                "tackles_won": 0.5758,
                "clearances": 5.0161,
                "aerial_won": 1.4506,
                "total_shots": 0.6656,
                "rating": 7.0245,
                "minutes": 89.85,
                "total_pass": 79.1441,
                "accurate_pass": 71.9974,
                "duels_won": 2.1284,
                "total_long_balls": 8.944,
                "accurate_long_balls": 4.5218,
                "total_own_half_passes": 48.3684,
                "accurate_own_half_passes": 46.2143,
                "total_opp_half_passes": 30.7759,
                "accurate_opp_half_passes": 25.7831,
                "crosses_total": 0.0746,
                "crosses_accurate": 0.0,
                "touches": 91.4618,
                "possession_lost": 8.3699,
                "dispossessed": 0.1855,
                "duels_lost": 2.1206,
                "aerial_lost": 0.7203,
                "total_contest": 0.486,
                "won_contest": 0.3475,
                "ball_recovery": 3.4588,
                "challenges_lost": 0.4374,
                "fouls": 0.7377,
                "fouls_drawn": 0.1325,
                "blocks": 1.2383,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0917,
                "assist_rate": 0.0917,
                "expected_goals": 0.0186,
                "expected_assists": 0.0895,
                "shots_on_target": 0.0075,
                "big_chances_created": 0.0969,
                "xgot": 0.0003,
                "ball_carries": 31.4365,
                "total_progression": 121.8921,
                "progressive_carries": 0.7833,
                "key_pass": 0.3611,
                "shots_off_target": 0.658
              },
              "params": {
                "blend_weight": 0.0144,
                "history_matches": 40,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9983,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 0.5842,
                  "after": 0.5758
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.074,
                "tackles": 0.9197,
                "tackles_won": 0.5758,
                "clearances": 5.0161,
                "aerial_won": 1.4506,
                "total_shots": 0.6656,
                "rating": 7.0245,
                "minutes": 89.85,
                "total_pass": 79.1441,
                "accurate_pass": 71.9974,
                "duels_won": 2.1284,
                "total_long_balls": 8.944,
                "accurate_long_balls": 4.5218,
                "total_own_half_passes": 48.3684,
                "accurate_own_half_passes": 46.2143,
                "total_opp_half_passes": 30.7759,
                "accurate_opp_half_passes": 25.7831,
                "crosses_total": 0.0746,
                "crosses_accurate": 0.0,
                "touches": 91.4618,
                "possession_lost": 8.3699,
                "dispossessed": 0.1855,
                "duels_lost": 2.1206,
                "aerial_lost": 0.7203,
                "total_contest": 0.486,
                "won_contest": 0.3475,
                "ball_recovery": 3.4588,
                "challenges_lost": 0.4374,
                "fouls": 0.7377,
                "fouls_drawn": 0.1325,
                "blocks": 1.2383,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0917,
                "assist_rate": 0.0917,
                "expected_goals": 0.0186,
                "expected_assists": 0.0895,
                "shots_on_target": 0.0075,
                "big_chances_created": 0.0969,
                "xgot": 0.0003,
                "ball_carries": 31.4365,
                "total_progression": 121.8921,
                "progressive_carries": 0.7833,
                "key_pass": 0.3611,
                "shots_off_target": 0.658
              },
              "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.074,
                "tackles": 0.9197,
                "tackles_won": 0.5758,
                "clearances": 5.0161,
                "aerial_won": 1.4506,
                "total_shots": 0.6656,
                "rating": 7.0245,
                "minutes": 89.85,
                "total_pass": 79.1441,
                "accurate_pass": 71.9974,
                "duels_won": 2.1284,
                "total_long_balls": 8.944,
                "accurate_long_balls": 4.5218,
                "total_own_half_passes": 48.3684,
                "accurate_own_half_passes": 46.2143,
                "total_opp_half_passes": 30.7759,
                "accurate_opp_half_passes": 25.7831,
                "crosses_total": 0.0746,
                "crosses_accurate": 0.0,
                "touches": 91.4618,
                "possession_lost": 8.3699,
                "dispossessed": 0.1855,
                "duels_lost": 2.1206,
                "aerial_lost": 0.7203,
                "total_contest": 0.486,
                "won_contest": 0.3475,
                "ball_recovery": 3.4588,
                "challenges_lost": 0.4374,
                "fouls": 0.7377,
                "fouls_drawn": 0.1325,
                "blocks": 1.2383,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0917,
                "assist_rate": 0.0917,
                "expected_goals": 0.0186,
                "expected_assists": 0.0895,
                "shots_on_target": 0.0075,
                "big_chances_created": 0.0969,
                "xgot": 0.0003,
                "ball_carries": 31.4365,
                "total_progression": 121.8921,
                "progressive_carries": 0.7833,
                "key_pass": 0.3611,
                "shots_off_target": 0.658,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Dani Raba",
                "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": "Dani Raba",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.074,
                "tackles": 0.9197,
                "tackles_won": 0.5758,
                "clearances": 5.0161,
                "aerial_won": 1.4506,
                "total_shots": 0.6656,
                "rating": 7.0245,
                "minutes": 89.85,
                "total_pass": 79.1441,
                "accurate_pass": 71.9974,
                "duels_won": 2.1284,
                "total_long_balls": 8.944,
                "accurate_long_balls": 4.5218,
                "total_own_half_passes": 48.3684,
                "accurate_own_half_passes": 46.2143,
                "total_opp_half_passes": 30.7759,
                "accurate_opp_half_passes": 25.7831,
                "crosses_total": 0.0746,
                "crosses_accurate": 0.0,
                "touches": 91.4618,
                "possession_lost": 8.3699,
                "dispossessed": 0.1855,
                "duels_lost": 2.1206,
                "aerial_lost": 0.7203,
                "total_contest": 0.486,
                "won_contest": 0.3475,
                "ball_recovery": 3.4588,
                "challenges_lost": 0.4374,
                "fouls": 0.7377,
                "fouls_drawn": 0.1325,
                "blocks": 1.2383,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0917,
                "assists": 0,
                "expected_goals": 0.0186,
                "expected_assists": 0.0895,
                "shots_on_target": 0.0075,
                "big_chances_created": 0.0969,
                "xgot": 0.0003,
                "ball_carries": 31.4365,
                "total_progression": 121.8921,
                "progressive_carries": 0.7833,
                "key_pass": 0.3611,
                "shots_off_target": 0.658,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Dani Raba",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "interceptions": 1.074,
                "tackles": 0.9197,
                "tackles_won": 0.5758,
                "clearances": 5.0161,
                "aerial_won": 1.4506,
                "total_shots": 0.6656,
                "rating": 7.0245,
                "minutes": 89.85,
                "total_pass": 79.1441,
                "accurate_pass": 71.9974,
                "duels_won": 2.1284,
                "total_long_balls": 8.944,
                "accurate_long_balls": 4.5218,
                "total_own_half_passes": 48.3684,
                "accurate_own_half_passes": 46.2143,
                "total_opp_half_passes": 30.7759,
                "accurate_opp_half_passes": 25.7831,
                "crosses_total": 0.0746,
                "crosses_accurate": 0.0,
                "touches": 91.4618,
                "possession_lost": 8.3699,
                "dispossessed": 0.1855,
                "duels_lost": 2.1206,
                "aerial_lost": 0.7203,
                "total_contest": 0.486,
                "won_contest": 0.3475,
                "ball_recovery": 3.4588,
                "challenges_lost": 0.4374,
                "fouls": 0.7377,
                "fouls_drawn": 0.1325,
                "blocks": 1.2383,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0917,
                "assists": 0,
                "expected_goals": 0.019,
                "expected_assists": 0.0913,
                "shots_on_target": 0.0075,
                "big_chances_created": 0.0969,
                "xgot": 0.0003,
                "ball_carries": 31.4365,
                "total_progression": 121.8921,
                "progressive_carries": 0.7833,
                "key_pass": 0.3611,
                "shots_off_target": 0.658,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Dani Raba",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.0158
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 78.0)",
              "stats": {
                "interceptions": 1.074,
                "tackles": 0.9197,
                "tackles_won": 0.5758,
                "clearances": 5.0161,
                "aerial_won": 1.4506,
                "total_shots": 0.6656,
                "rating": 7.0245,
                "minutes": 89.85,
                "total_pass": 79.1441,
                "accurate_pass": 71.9974,
                "duels_won": 2.1284,
                "total_long_balls": 8.944,
                "accurate_long_balls": 4.5218,
                "total_own_half_passes": 48.3684,
                "accurate_own_half_passes": 46.2143,
                "total_opp_half_passes": 30.7759,
                "accurate_opp_half_passes": 25.7831,
                "crosses_total": 0.0746,
                "crosses_accurate": 0.0,
                "touches": 91.4618,
                "possession_lost": 8.3699,
                "dispossessed": 0.1855,
                "duels_lost": 2.1206,
                "aerial_lost": 0.7203,
                "total_contest": 0.486,
                "won_contest": 0.3475,
                "ball_recovery": 3.4588,
                "challenges_lost": 0.4374,
                "fouls": 0.7377,
                "fouls_drawn": 0.1325,
                "blocks": 1.2383,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0917,
                "assists": 0,
                "expected_goals": 0.019,
                "expected_assists": 0.0913,
                "shots_on_target": 0.0075,
                "big_chances_created": 0.0969,
                "xgot": 0.0003,
                "ball_carries": 31.4365,
                "total_progression": 121.8921,
                "progressive_carries": 0.7833,
                "key_pass": 0.3611,
                "shots_off_target": 0.658,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Dani Raba",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.0158,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 5,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2081,
                "fifa_rank": 1247.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.074,
                "tackles": 0.9197,
                "tackles_won": 0.5758,
                "clearances": 5.0161,
                "aerial_won": 1.4506,
                "total_shots": 0.6656,
                "rating": 7.0245,
                "minutes": 89.85,
                "total_pass": 79.1441,
                "accurate_pass": 71.9974,
                "duels_won": 2.1284,
                "total_long_balls": 8.944,
                "accurate_long_balls": 4.5218,
                "total_own_half_passes": 48.3684,
                "accurate_own_half_passes": 46.2143,
                "total_opp_half_passes": 30.7759,
                "accurate_opp_half_passes": 25.7831,
                "crosses_total": 0.0746,
                "crosses_accurate": 0.0,
                "touches": 91.4618,
                "possession_lost": 8.3699,
                "dispossessed": 0.1855,
                "duels_lost": 2.1206,
                "aerial_lost": 0.7203,
                "total_contest": 0.486,
                "won_contest": 0.3475,
                "ball_recovery": 3.4588,
                "challenges_lost": 0.4374,
                "fouls": 0.7377,
                "fouls_drawn": 0.1325,
                "blocks": 1.2383,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0917,
                "assists": 0,
                "expected_goals": 0.019,
                "expected_assists": 0.0913,
                "shots_on_target": 0.0075,
                "big_chances_created": 0.0969,
                "xgot": 0.0003,
                "ball_carries": 31.4365,
                "total_progression": 121.8921,
                "progressive_carries": 0.7833,
                "key_pass": 0.3611,
                "shots_off_target": 0.658,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Dani Raba",
                "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.0188,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.0158,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0188,
                "goal_rate": 0.0,
                "scorer_weight": 0.0152,
                "squad_weight_total": 1.5114,
                "weight_share": 0.0101,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "interceptions": 1.074,
                "tackles": 0.9197,
                "tackles_won": 0.5758,
                "clearances": 5.0161,
                "aerial_won": 1.4506,
                "total_shots": 0.6656,
                "rating": 7.0245,
                "minutes": 89.85,
                "total_pass": 79.1441,
                "accurate_pass": 71.9974,
                "duels_won": 2.1284,
                "total_long_balls": 8.944,
                "accurate_long_balls": 4.5218,
                "total_own_half_passes": 48.3684,
                "accurate_own_half_passes": 46.2143,
                "total_opp_half_passes": 30.7759,
                "accurate_opp_half_passes": 25.7831,
                "crosses_total": 0.0746,
                "crosses_accurate": 0.0,
                "touches": 91.4618,
                "possession_lost": 8.3699,
                "dispossessed": 0.1855,
                "duels_lost": 2.1206,
                "aerial_lost": 0.7203,
                "total_contest": 0.486,
                "won_contest": 0.3475,
                "ball_recovery": 3.4588,
                "challenges_lost": 0.4374,
                "fouls": 0.7377,
                "fouls_drawn": 0.1325,
                "blocks": 1.2383,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0917,
                "assists": 0,
                "expected_goals": 0.019,
                "expected_assists": 0.0913,
                "shots_on_target": 0.0075,
                "big_chances_created": 0.0969,
                "xgot": 0.0003,
                "ball_carries": 31.4365,
                "total_progression": 121.8921,
                "progressive_carries": 0.7833,
                "key_pass": 0.3611,
                "shots_off_target": 0.658,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.0,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Dani Raba",
                "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.0188,
                "projected_assists": 0,
                "assist_probability": 0.0873,
                "finishing_factor": 0.8,
                "creation_factor": 1.0158,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0873,
                "assist_rate": 0.0917,
                "provider_weight": 0.0927,
                "squad_weight_total": 1.1097,
                "weight_share": 0.0836,
                "creation_factor": 1.0158,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Juan Foyth": {
          "player_id": 873189,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 8,
          "height": 187,
          "market_value": 8600000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 2,
            "total_shots": 1,
            "rating": 7.0202,
            "minutes": 80,
            "total_pass": 59,
            "accurate_pass": 54,
            "duels_won": 4,
            "total_long_balls": 4,
            "accurate_long_balls": 3,
            "total_own_half_passes": 35,
            "accurate_own_half_passes": 33,
            "total_opp_half_passes": 24,
            "accurate_opp_half_passes": 21,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 71,
            "possession_lost": 6.1434,
            "dispossessed": 0.5467,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0405,
            "expected_assists": 0.044,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.002,
            "ball_carries": 21,
            "total_progression": 89,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "opponent_faced": "Dani Raba",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0397,
            "projected_assists": 0,
            "assist_probability": 0.043,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0121,
                "total_shots": 0,
                "total_pass": 80,
                "accurate_pass": 73,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 56,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0116,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 35,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3212,
                "expected_assists": 0.0206,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 88,
                "accurate_pass": 83,
                "tackles": 5,
                "tackles_won": 4,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 4,
                "duels_won": 11,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2948,
                "total_shots": 0,
                "total_pass": 68,
                "accurate_pass": 62,
                "key_pass": 1,
                "interceptions": 3,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0313,
                "total_shots": 0,
                "total_pass": 75,
                "accurate_pass": 68,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 8,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083186,
              "match_date": "2026-01-24",
              "home_team": "Villarreal",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 24,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0013,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 12,
                "clearances": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083224,
              "match_date": "2026-01-17",
              "home_team": "Real Betis",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.005,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 33,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "duels_won": 2,
                "ball_recovery": 6
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083214,
              "match_date": "2026-01-10",
              "home_team": "Villarreal",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0154,
                "total_shots": 0,
                "total_pass": 63,
                "accurate_pass": 54,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 8,
                "aerial_won": 4,
                "duels_won": 8,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083198,
              "match_date": "2026-01-03",
              "home_team": "Elche",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 10,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "clearances": 6
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083159,
              "match_date": "2025-12-06",
              "home_team": "Villarreal",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0474,
                "total_shots": 0,
                "total_pass": 67,
                "accurate_pass": 59,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 1291,
            "combined_rank_score": 559.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 1.0,
            "fifa_rank": 962.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0202,
            "source_file": "data/player_rankings.csv",
            "player_name": "Juan Foyth",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mario Hermoso",
                  "ranking": 1286
                },
                {
                  "player_name": "Giovani Lo Celso",
                  "ranking": 1287
                },
                {
                  "player_name": "Lucas Torreira",
                  "ranking": 1288
                },
                {
                  "player_name": "Diego Ulloa",
                  "ranking": 1289
                },
                {
                  "player_name": "David Neres",
                  "ranking": 1290
                }
              ],
              "lower": [
                {
                  "player_name": "Patrick Berg",
                  "ranking": 1292
                },
                {
                  "player_name": "Nicholas Pennington",
                  "ranking": 1293
                },
                {
                  "player_name": "Park Jae-Hwan",
                  "ranking": 1294
                },
                {
                  "player_name": "Franco Frías",
                  "ranking": 1295
                },
                {
                  "player_name": "César Fuentes",
                  "ranking": 1296
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 18,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 18,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0001,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 270.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 1.33,
              "shots_on_target_pct": 25.0,
              "prior_reliability": 0.2
            },
            "rationale": "XGBoost regressor (D_service) evaluated 18 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.20, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.1637,
                "tackles": 1.5457,
                "tackles_won": 0.9539,
                "clearances": 4.507,
                "aerial_won": 1.5848,
                "total_shots": 0.4912,
                "rating": 7.0202,
                "minutes": 80.42,
                "total_pass": 59.1487,
                "accurate_pass": 53.9893,
                "duels_won": 3.5841,
                "total_long_balls": 4.3774,
                "accurate_long_balls": 2.9272,
                "total_own_half_passes": 35.0587,
                "accurate_own_half_passes": 33.1343,
                "total_opp_half_passes": 24.0899,
                "accurate_opp_half_passes": 20.8549,
                "crosses_total": 0.0436,
                "crosses_accurate": 0.0436,
                "touches": 70.7349,
                "possession_lost": 6.1428,
                "dispossessed": 0.5466,
                "duels_lost": 2.3527,
                "aerial_lost": 0.8863,
                "total_contest": 0.1303,
                "won_contest": 0.0867,
                "ball_recovery": 3.9418,
                "challenges_lost": 0.1276,
                "fouls": 0.7487,
                "fouls_drawn": 0.2827,
                "blocks": 0.9723,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0397,
                "expected_assists": 0.0431,
                "shots_on_target": 0.1157,
                "big_chances_created": 0.1028,
                "xgot": 0.002,
                "ball_carries": 21.1451,
                "total_progression": 88.7244,
                "progressive_carries": 0.1076,
                "key_pass": 0.2584,
                "shots_off_target": 0.3755
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1585,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 56.0,
                    "is_starting": true,
                    "weight": 0.1347,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1145,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0973,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0827,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-01-24",
                    "opponent": "Real Madrid",
                    "minutes": 24.0,
                    "is_starting": true,
                    "weight": 0.0703,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-01-17",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0598,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-01-10",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0508,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-01-03",
                    "opponent": "Elche",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0432,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2025-12-06",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0367,
                    "rating": 7.9
                  }
                ],
                "feature_row": {
                  "history_matches": 18.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.8251,
                  "aerialWon": 1.3955,
                  "totalClearance_p90": 6.3364,
                  "totalTackle": 1.7082,
                  "defensive_actions": 2.977
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1637214422225952,
                    "model_output": 1.1637,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1236
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0755
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0319
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0247
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0164
                        }
                      ],
                      "others": 0.0313,
                      "total": 1.1637,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.134289
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.073885
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.029702
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.022376
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.014546
                        }
                      ],
                      "others_margin": 0.027272
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.5457231998443604,
                    "model_output": 1.5457,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1787
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0868
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0653
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0608
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0437
                        }
                      ],
                      "others": -0.0991,
                      "total": 1.5457,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.12152
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.057159
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.043296
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.038729
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.026953
                        }
                      ],
                      "others_margin": -0.062147
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.9539058804512024,
                    "model_output": 0.9539,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1166
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0665
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0534
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0455
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0368
                        }
                      ],
                      "others": -0.1031,
                      "total": 0.9539,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.129262
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.066882
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.053358
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.045609
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.035425
                        }
                      ],
                      "others_margin": -0.10261
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.507033348083496,
                    "model_output": 4.507,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4347
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.3552
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.2904
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.292
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.1161
                        }
                      ],
                      "others": -0.4065,
                      "total": 4.507,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.119486
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.088046
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.066616
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.062807
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.023921
                        }
                      ],
                      "others_margin": -0.08636
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.584798812866211,
                    "model_output": 1.5848,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1524
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0779
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0781
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0678
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0598
                        }
                      ],
                      "others": 0.0188,
                      "total": 1.5848,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.104359
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.049415
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.047195
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.040882
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.037448
                        }
                      ],
                      "others_margin": 0.012001
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.4911764860153198,
                    "model_output": 0.4912,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0604
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0196
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0167
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0165
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0153
                        }
                      ],
                      "others": -0.009,
                      "total": 0.4912,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.060382
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.019581
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.016729
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.016511
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.015345
                        }
                      ],
                      "others_margin": -0.009003
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.020205020904541,
                    "model_output": 7.0202,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": 0.05
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0434
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0369
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": 0.0236
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0139
                        }
                      ],
                      "others": 0.062,
                      "total": 7.0202,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": 0.050003
                        },
                        {
                          "name": "rating",
                          "margin": 0.04336
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.03689
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": 0.023569
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.013919
                        }
                      ],
                      "others_margin": 0.062081
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 18,
                  "role_matches": 17,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0001, quality 0.506)",
              "stats": {
                "interceptions": 1.1638,
                "tackles": 1.5459,
                "tackles_won": 0.954,
                "clearances": 4.5075,
                "aerial_won": 1.585,
                "total_shots": 0.4912,
                "rating": 7.0202,
                "minutes": 80.42,
                "total_pass": 59.1546,
                "accurate_pass": 53.9947,
                "duels_won": 3.5845,
                "total_long_balls": 4.3778,
                "accurate_long_balls": 2.9275,
                "total_own_half_passes": 35.0622,
                "accurate_own_half_passes": 33.1376,
                "total_opp_half_passes": 24.0923,
                "accurate_opp_half_passes": 20.857,
                "crosses_total": 0.0436,
                "crosses_accurate": 0.0436,
                "touches": 70.742,
                "possession_lost": 6.1434,
                "dispossessed": 0.5467,
                "duels_lost": 2.3529,
                "aerial_lost": 0.8864,
                "total_contest": 0.1303,
                "won_contest": 0.0867,
                "ball_recovery": 3.9422,
                "challenges_lost": 0.1276,
                "fouls": 0.7488,
                "fouls_drawn": 0.2827,
                "blocks": 0.9724,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0397,
                "expected_assists": 0.0431,
                "shots_on_target": 0.1157,
                "big_chances_created": 0.1028,
                "xgot": 0.002,
                "ball_carries": 21.1472,
                "total_progression": 88.7333,
                "progressive_carries": 0.1076,
                "key_pass": 0.2584,
                "shots_off_target": 0.3755
              },
              "params": {
                "market_value_eur": 8600000,
                "quality_factor": 0.5059,
                "boost_factor": 1.0001,
                "reference_quality": 0.505,
                "history_matches": 18,
                "history_shrink": 0.2174,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0283)",
              "stats": {
                "interceptions": 1.1898,
                "tackles": 1.5459,
                "tackles_won": 0.9691,
                "clearances": 4.5075,
                "aerial_won": 1.585,
                "total_shots": 0.5109,
                "rating": 7.0202,
                "minutes": 80.42,
                "total_pass": 59.1546,
                "accurate_pass": 53.9947,
                "duels_won": 3.5845,
                "total_long_balls": 4.3778,
                "accurate_long_balls": 2.9275,
                "total_own_half_passes": 35.0622,
                "accurate_own_half_passes": 33.1376,
                "total_opp_half_passes": 24.0923,
                "accurate_opp_half_passes": 20.857,
                "crosses_total": 0.0424,
                "crosses_accurate": 0.0436,
                "touches": 70.742,
                "possession_lost": 6.1434,
                "dispossessed": 0.5467,
                "duels_lost": 2.3529,
                "aerial_lost": 0.8864,
                "total_contest": 0.1303,
                "won_contest": 0.0867,
                "ball_recovery": 3.9422,
                "challenges_lost": 0.1276,
                "fouls": 0.7361,
                "fouls_drawn": 0.2915,
                "blocks": 0.9724,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0397,
                "expected_assists": 0.0431,
                "shots_on_target": 0.1208,
                "big_chances_created": 0.1028,
                "xgot": 0.002,
                "ball_carries": 21.1472,
                "total_progression": 88.7333,
                "progressive_carries": 0.1076,
                "key_pass": 0.2584,
                "shots_off_target": 0.3755
              },
              "params": {
                "blend_weight": 0.0283,
                "history_matches": 18,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8936,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 1.1638,
                  "after": 1.1898
                },
                {
                  "stat": "totalShots",
                  "before": 0.4912,
                  "after": 0.5109
                },
                {
                  "stat": "wonTackle",
                  "before": 0.954,
                  "after": 0.9691
                },
                {
                  "stat": "fouls",
                  "before": 0.7488,
                  "after": 0.7361
                },
                {
                  "stat": "wasFouled",
                  "before": 0.2827,
                  "after": 0.2915
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1157,
                  "after": 0.1208
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1898,
                "tackles": 1.5459,
                "tackles_won": 0.9691,
                "clearances": 4.5075,
                "aerial_won": 1.585,
                "total_shots": 0.5109,
                "rating": 7.0202,
                "minutes": 80.42,
                "total_pass": 59.1546,
                "accurate_pass": 53.9947,
                "duels_won": 3.5845,
                "total_long_balls": 4.3778,
                "accurate_long_balls": 2.9275,
                "total_own_half_passes": 35.0622,
                "accurate_own_half_passes": 33.1376,
                "total_opp_half_passes": 24.0923,
                "accurate_opp_half_passes": 20.857,
                "crosses_total": 0.0424,
                "crosses_accurate": 0.0424,
                "touches": 70.742,
                "possession_lost": 6.1434,
                "dispossessed": 0.5467,
                "duels_lost": 2.3529,
                "aerial_lost": 0.8864,
                "total_contest": 0.1303,
                "won_contest": 0.0867,
                "ball_recovery": 3.9422,
                "challenges_lost": 0.1276,
                "fouls": 0.7361,
                "fouls_drawn": 0.2915,
                "blocks": 0.9724,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0397,
                "expected_assists": 0.0431,
                "shots_on_target": 0.1208,
                "big_chances_created": 0.1028,
                "xgot": 0.002,
                "ball_carries": 21.1472,
                "total_progression": 88.7333,
                "progressive_carries": 0.1076,
                "key_pass": 0.2584,
                "shots_off_target": 0.3755
              },
              "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.1898,
                "tackles": 1.5459,
                "tackles_won": 0.9691,
                "clearances": 4.5075,
                "aerial_won": 1.585,
                "total_shots": 0.5109,
                "rating": 7.0202,
                "minutes": 80.42,
                "total_pass": 59.1546,
                "accurate_pass": 53.9947,
                "duels_won": 3.5845,
                "total_long_balls": 4.3778,
                "accurate_long_balls": 2.9275,
                "total_own_half_passes": 35.0622,
                "accurate_own_half_passes": 33.1376,
                "total_opp_half_passes": 24.0923,
                "accurate_opp_half_passes": 20.857,
                "crosses_total": 0.0424,
                "crosses_accurate": 0.0424,
                "touches": 70.742,
                "possession_lost": 6.1434,
                "dispossessed": 0.5467,
                "duels_lost": 2.3529,
                "aerial_lost": 0.8864,
                "total_contest": 0.1303,
                "won_contest": 0.0867,
                "ball_recovery": 3.9422,
                "challenges_lost": 0.1276,
                "fouls": 0.7361,
                "fouls_drawn": 0.2915,
                "blocks": 0.9724,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0397,
                "expected_assists": 0.0431,
                "shots_on_target": 0.1208,
                "big_chances_created": 0.1028,
                "xgot": 0.002,
                "ball_carries": 21.1472,
                "total_progression": 88.7333,
                "progressive_carries": 0.1076,
                "key_pass": 0.2584,
                "shots_off_target": 0.3755,
                "opponent_faced": "Dani Raba",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Dani Raba",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.1898,
                "tackles": 1.5459,
                "tackles_won": 0.9691,
                "clearances": 4.5075,
                "aerial_won": 1.585,
                "total_shots": 0.5109,
                "rating": 7.0202,
                "minutes": 80.42,
                "total_pass": 59.1546,
                "accurate_pass": 53.9947,
                "duels_won": 3.5845,
                "total_long_balls": 4.3778,
                "accurate_long_balls": 2.9275,
                "total_own_half_passes": 35.0622,
                "accurate_own_half_passes": 33.1376,
                "total_opp_half_passes": 24.0923,
                "accurate_opp_half_passes": 20.857,
                "crosses_total": 0.0424,
                "crosses_accurate": 0.0424,
                "touches": 70.742,
                "possession_lost": 6.1434,
                "dispossessed": 0.5467,
                "duels_lost": 2.3529,
                "aerial_lost": 0.8864,
                "total_contest": 0.1303,
                "won_contest": 0.0867,
                "ball_recovery": 3.9422,
                "challenges_lost": 0.1276,
                "fouls": 0.7361,
                "fouls_drawn": 0.2915,
                "blocks": 0.9724,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0397,
                "expected_assists": 0.0431,
                "shots_on_target": 0.1208,
                "big_chances_created": 0.1028,
                "xgot": 0.002,
                "ball_carries": 21.1472,
                "total_progression": 88.7333,
                "progressive_carries": 0.1076,
                "key_pass": 0.2584,
                "shots_off_target": 0.3755,
                "opponent_faced": "Dani Raba",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "interceptions": 1.1898,
                "tackles": 1.5459,
                "tackles_won": 0.9691,
                "clearances": 4.5075,
                "aerial_won": 1.585,
                "total_shots": 0.5109,
                "rating": 7.0202,
                "minutes": 80.42,
                "total_pass": 59.1546,
                "accurate_pass": 53.9947,
                "duels_won": 3.5845,
                "total_long_balls": 4.3778,
                "accurate_long_balls": 2.9275,
                "total_own_half_passes": 35.0622,
                "accurate_own_half_passes": 33.1376,
                "total_opp_half_passes": 24.0923,
                "accurate_opp_half_passes": 20.857,
                "crosses_total": 0.0424,
                "crosses_accurate": 0.0424,
                "touches": 70.742,
                "possession_lost": 6.1434,
                "dispossessed": 0.5467,
                "duels_lost": 2.3529,
                "aerial_lost": 0.8864,
                "total_contest": 0.1303,
                "won_contest": 0.0867,
                "ball_recovery": 3.9422,
                "challenges_lost": 0.1276,
                "fouls": 0.7361,
                "fouls_drawn": 0.2915,
                "blocks": 0.9724,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0405,
                "expected_assists": 0.044,
                "shots_on_target": 0.1208,
                "big_chances_created": 0.1028,
                "xgot": 0.002,
                "ball_carries": 21.1472,
                "total_progression": 88.7333,
                "progressive_carries": 0.1076,
                "key_pass": 0.2584,
                "shots_off_target": 0.3755,
                "opponent_faced": "Dani Raba",
                "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": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 79.0)",
              "stats": {
                "interceptions": 1.1898,
                "tackles": 1.5459,
                "tackles_won": 0.9691,
                "clearances": 4.5075,
                "aerial_won": 1.585,
                "total_shots": 0.5109,
                "rating": 7.0202,
                "minutes": 80.42,
                "total_pass": 59.1546,
                "accurate_pass": 53.9947,
                "duels_won": 3.5845,
                "total_long_balls": 4.3778,
                "accurate_long_balls": 2.9275,
                "total_own_half_passes": 35.0622,
                "accurate_own_half_passes": 33.1376,
                "total_opp_half_passes": 24.0923,
                "accurate_opp_half_passes": 20.857,
                "crosses_total": 0.0424,
                "crosses_accurate": 0.0424,
                "touches": 70.742,
                "possession_lost": 6.1434,
                "dispossessed": 0.5467,
                "duels_lost": 2.3529,
                "aerial_lost": 0.8864,
                "total_contest": 0.1303,
                "won_contest": 0.0867,
                "ball_recovery": 3.9422,
                "challenges_lost": 0.1276,
                "fouls": 0.7361,
                "fouls_drawn": 0.2915,
                "blocks": 0.9724,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0405,
                "expected_assists": 0.044,
                "shots_on_target": 0.1208,
                "big_chances_created": 0.1028,
                "xgot": 0.002,
                "ball_carries": 21.1472,
                "total_progression": 88.7333,
                "progressive_carries": 0.1076,
                "key_pass": 0.2584,
                "shots_off_target": 0.3755,
                "opponent_faced": "Dani Raba",
                "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": 6,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1291,
                "fifa_rank": 962.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.1898,
                "tackles": 1.5459,
                "tackles_won": 0.9691,
                "clearances": 4.5075,
                "aerial_won": 1.585,
                "total_shots": 0.5109,
                "rating": 7.0202,
                "minutes": 80.42,
                "total_pass": 59.1546,
                "accurate_pass": 53.9947,
                "duels_won": 3.5845,
                "total_long_balls": 4.3778,
                "accurate_long_balls": 2.9275,
                "total_own_half_passes": 35.0622,
                "accurate_own_half_passes": 33.1376,
                "total_opp_half_passes": 24.0923,
                "accurate_opp_half_passes": 20.857,
                "crosses_total": 0.0424,
                "crosses_accurate": 0.0424,
                "touches": 70.742,
                "possession_lost": 6.1434,
                "dispossessed": 0.5467,
                "duels_lost": 2.3529,
                "aerial_lost": 0.8864,
                "total_contest": 0.1303,
                "won_contest": 0.0867,
                "ball_recovery": 3.9422,
                "challenges_lost": 0.1276,
                "fouls": 0.7361,
                "fouls_drawn": 0.2915,
                "blocks": 0.9724,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0405,
                "expected_assists": 0.044,
                "shots_on_target": 0.1208,
                "big_chances_created": 0.1028,
                "xgot": 0.002,
                "ball_carries": 21.1472,
                "total_progression": 88.7333,
                "progressive_carries": 0.1076,
                "key_pass": 0.2584,
                "shots_off_target": 0.3755,
                "opponent_faced": "Dani Raba",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0397,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0397,
                "goal_rate": 0.0,
                "scorer_weight": 0.0324,
                "squad_weight_total": 1.5114,
                "weight_share": 0.0214,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "interceptions": 1.1898,
                "tackles": 1.5459,
                "tackles_won": 0.9691,
                "clearances": 4.5075,
                "aerial_won": 1.585,
                "total_shots": 0.5109,
                "rating": 7.0202,
                "minutes": 80.42,
                "total_pass": 59.1546,
                "accurate_pass": 53.9947,
                "duels_won": 3.5845,
                "total_long_balls": 4.3778,
                "accurate_long_balls": 2.9275,
                "total_own_half_passes": 35.0622,
                "accurate_own_half_passes": 33.1376,
                "total_opp_half_passes": 24.0923,
                "accurate_opp_half_passes": 20.857,
                "crosses_total": 0.0424,
                "crosses_accurate": 0.0424,
                "touches": 70.742,
                "possession_lost": 6.1434,
                "dispossessed": 0.5467,
                "duels_lost": 2.3529,
                "aerial_lost": 0.8864,
                "total_contest": 0.1303,
                "won_contest": 0.0867,
                "ball_recovery": 3.9422,
                "challenges_lost": 0.1276,
                "fouls": 0.7361,
                "fouls_drawn": 0.2915,
                "blocks": 0.9724,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0405,
                "expected_assists": 0.044,
                "shots_on_target": 0.1208,
                "big_chances_created": 0.1028,
                "xgot": 0.002,
                "ball_carries": 21.1472,
                "total_progression": 88.7333,
                "progressive_carries": 0.1076,
                "key_pass": 0.2584,
                "shots_off_target": 0.3755,
                "opponent_faced": "Dani Raba",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0397,
                "projected_assists": 0,
                "assist_probability": 0.043,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.043,
                "assist_rate": 0.0,
                "provider_weight": 0.0352,
                "squad_weight_total": 1.1097,
                "weight_share": 0.0317,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Péter Gulácsi": {
          "player_id": 37096,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 25,
          "height": 190,
          "market_value": 970000,
          "stats": {
            "saves": 3,
            "goals_prevented": 0.1394,
            "rating": 7.068,
            "minutes": 90,
            "total_pass": 24,
            "accurate_pass": 22,
            "total_long_balls": 6,
            "accurate_long_balls": 3,
            "touches": 34,
            "clearances": 1,
            "ball_recovery": 8,
            "high_claims": 0,
            "punches": 0.8675,
            "aerial_won": 0,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 2,
            "possession_lost": 2.5746,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 23,
            "accurate_own_half_passes": 22,
            "gk_engine_opponent_lambda": 0.919,
            "shots_faced": 8.5,
            "expected_saves": 2.08,
            "high_pressure_saves": 0.72,
            "opponent_faced": "Javier Guerra, Dani Raba",
            "matchup_zone": "Goalkeeper shot-stopping context",
            "antagonist_source": "formation_fallback",
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "finishing_factor": 1.0,
            "creation_factor": 1.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 22,
                "ball_recovery": 12,
                "saves": 1,
                "goals_prevented": 0.2455
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 17,
                "ball_recovery": 6,
                "saves": 3,
                "goals_prevented": 0.42
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 33,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 8,
                "goals_prevented": -0.4904
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 20,
                "ball_recovery": 3,
                "goals_prevented": -0.1208
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 9.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 18,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 8,
                "saves": 10,
                "goals_prevented": 1.96
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 616,
            "combined_rank_score": 318.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 409.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.068,
            "source_file": "data/player_rankings.csv",
            "player_name": "Péter Gulácsi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mender García",
                  "ranking": 611
                },
                {
                  "player_name": "José Fajardo",
                  "ranking": 612
                },
                {
                  "player_name": "Konstantinos Fortounis",
                  "ranking": 613
                },
                {
                  "player_name": "N'Golo Kanté",
                  "ranking": 614
                },
                {
                  "player_name": "Mason Greenwood",
                  "ranking": 615
                }
              ],
              "lower": [
                {
                  "player_name": "Oliver Baumann",
                  "ranking": 617
                },
                {
                  "player_name": "Iñigo Martínez",
                  "ranking": 618
                },
                {
                  "player_name": "Omar Marmoush",
                  "ranking": 619
                },
                {
                  "player_name": "Pathé Ismaël Ciss",
                  "ranking": 620
                },
                {
                  "player_name": "Riccardo Orsolini",
                  "ranking": 621
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.562,
          "history_matches": 5,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "G_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "accurateLongBalls",
              "totalOwnHalfPasses",
              "accurateOwnHalfPasses",
              "saves",
              "savedShotsFromInsideTheBox",
              "goodHighClaim",
              "punches",
              "aerialWon",
              "totalKeeperSweeper",
              "accurateKeeperSweeper",
              "totalClearance",
              "ballRecovery",
              "touches",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "goalkeeperValueNormalized",
              "goalsPrevented",
              "rating",
              "pass_accuracy",
              "long_ball_accuracy",
              "save_contribution",
              "inside_box_save_rate",
              "sweeper_accuracy",
              "sweeper_actions_p90",
              "distribution_accuracy",
              "commanding_index",
              "history_matches"
            ],
            "targets_predicted": [
              "saves",
              "goalsPrevented",
              "rating"
            ],
            "history_matches": 5,
            "data_confidence": 0.562,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9899,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "XGBoost regressor (G_service) evaluated 5 historical appearances across 3 target models; FBref 2026-2027 prior blended (La Liga, Villarreal, rel: 0.00, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 2.652,
                "goals_prevented": 0.1408,
                "rating": 7.068,
                "minutes": 90.0,
                "total_pass": 24.7037,
                "accurate_pass": 22.1028,
                "total_long_balls": 5.8131,
                "accurate_long_balls": 3.4414,
                "touches": 34.3512,
                "clearances": 1.3423,
                "ball_recovery": 7.7922,
                "high_claims": 0.3219,
                "punches": 0.8764,
                "aerial_won": 0.3356,
                "sweeper_actions": 0.866,
                "sweeper_accurate": 0.866,
                "saves_inside_box": 1.9544,
                "possession_lost": 2.6009,
                "duels_won": 0.3356,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 22.7964,
                "accurate_own_half_passes": 21.8736
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-24T10:04:55.355626+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 200,
                    "rows": 7186
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1408,
                    "rating": 9.6
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "possessionLostCtrl": 2.6009,
                  "distribution_accuracy": 0.9571,
                  "saves": 2.3648,
                  "goalkeeperValueNormalized": 0.2276,
                  "save_contribution": 2.6876,
                  "accurateOwnHalfPasses": 21.8736
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.651961088180542,
                    "model_output": 2.652,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "saves",
                        "importance": 0.0396
                      },
                      {
                        "name": "save_contribution",
                        "importance": 0.0396
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0361
                      },
                      {
                        "name": "defensiveValueNormalized",
                        "importance": 0.0356
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 2.9357,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.1074
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.0641
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": -0.0483
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0277
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0269
                        }
                      ],
                      "others": -0.0093,
                      "total": 2.652,
                      "log_link": true,
                      "margin_base": 1.076962,
                      "item_margins": [
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.037267
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.022912
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": -0.017615
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.010268
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.010043
                        }
                      ],
                      "others_margin": -0.003558
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": 0.14080630242824554,
                    "model_output": 0.1408,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0403
                      },
                      {
                        "name": "punches",
                        "importance": 0.0402
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.039
                      },
                      {
                        "name": "goodHighClaim",
                        "importance": 0.0381
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0377
                      }
                    ],
                    "decomposition": {
                      "base": -0.0276,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0935
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0391
                        },
                        {
                          "name": "saves",
                          "contribution": 0.0299
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.0161
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0135
                        }
                      ],
                      "others": 0.0355,
                      "total": 0.1408,
                      "log_link": false,
                      "margin_base": -0.027557,
                      "item_margins": [
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.093524
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.039117
                        },
                        {
                          "name": "saves",
                          "margin": 0.029929
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.016052
                        },
                        {
                          "name": "rating",
                          "margin": -0.013475
                        }
                      ],
                      "others_margin": 0.035321
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.067952632904053,
                    "model_output": 7.068,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "saves",
                        "importance": 0.0419
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0397
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0368
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0351
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 6.9908,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0272
                        },
                        {
                          "name": "totalKeeperSweeper",
                          "contribution": 0.0265
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": 0.0246
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0141
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0141
                        }
                      ],
                      "others": -0.0011,
                      "total": 7.068,
                      "log_link": false,
                      "margin_base": 6.990849,
                      "item_margins": [
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.027179
                        },
                        {
                          "name": "totalKeeperSweeper",
                          "margin": 0.026479
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": 0.024583
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.014139
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.014055
                        }
                      ],
                      "others_margin": -0.001221
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 5,
                  "role_matches": 5,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9899, quality 0.437)",
              "stats": {
                "saves": 2.6252,
                "goals_prevented": 0.1394,
                "rating": 7.068,
                "minutes": 90.0,
                "total_pass": 24.4542,
                "accurate_pass": 21.8796,
                "total_long_balls": 5.7544,
                "accurate_long_balls": 3.4066,
                "touches": 34.0043,
                "clearances": 1.3287,
                "ball_recovery": 7.7135,
                "high_claims": 0.3186,
                "punches": 0.8675,
                "aerial_won": 0.3322,
                "sweeper_actions": 0.8573,
                "sweeper_accurate": 0.8573,
                "saves_inside_box": 1.9347,
                "possession_lost": 2.5746,
                "duels_won": 0.3322,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 22.5662,
                "accurate_own_half_passes": 21.6527
              },
              "params": {
                "market_value_eur": 970000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9899,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 2.6252,
                "goals_prevented": 0.1394,
                "rating": 7.068,
                "minutes": 90.0,
                "total_pass": 24.4542,
                "accurate_pass": 21.8796,
                "total_long_balls": 5.7544,
                "accurate_long_balls": 3.4066,
                "touches": 34.0043,
                "clearances": 1.3287,
                "ball_recovery": 7.7135,
                "high_claims": 0.3186,
                "punches": 0.8675,
                "aerial_won": 0.3322,
                "sweeper_actions": 0.8573,
                "sweeper_accurate": 0.8573,
                "saves_inside_box": 1.9347,
                "possession_lost": 2.5746,
                "duels_won": 0.3322,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 22.5662,
                "accurate_own_half_passes": 21.6527
              },
              "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.6252,
                "goals_prevented": 0.1394,
                "rating": 7.068,
                "minutes": 90.0,
                "total_pass": 24.4542,
                "accurate_pass": 21.8796,
                "total_long_balls": 5.7544,
                "accurate_long_balls": 3.4066,
                "touches": 34.0043,
                "clearances": 1.3287,
                "ball_recovery": 7.7135,
                "high_claims": 0.3186,
                "punches": 0.8675,
                "aerial_won": 0.3322,
                "sweeper_actions": 0.8573,
                "sweeper_accurate": 0.8573,
                "saves_inside_box": 1.9347,
                "possession_lost": 2.5746,
                "duels_won": 0.3322,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 22.5662,
                "accurate_own_half_passes": 21.6527,
                "gk_engine_opponent_lambda": 0.919,
                "shots_faced": 8.7,
                "expected_saves": 2.13,
                "high_pressure_saves": 0.74,
                "opponent_faced": "Javier Guerra, Dani Raba",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Javier Guerra, Dani Raba",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 0.919
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "saves": 2.6252,
                "goals_prevented": 0.1394,
                "rating": 7.068,
                "minutes": 90.0,
                "total_pass": 24.4542,
                "accurate_pass": 21.8796,
                "total_long_balls": 5.7544,
                "accurate_long_balls": 3.4066,
                "touches": 34.0043,
                "clearances": 1.3287,
                "ball_recovery": 7.7135,
                "high_claims": 0.3186,
                "punches": 0.8675,
                "aerial_won": 0.3322,
                "sweeper_actions": 0.8573,
                "sweeper_accurate": 0.8573,
                "saves_inside_box": 1.9347,
                "possession_lost": 2.5746,
                "duels_won": 0.3322,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 22.5662,
                "accurate_own_half_passes": 21.6527,
                "gk_engine_opponent_lambda": 0.919,
                "shots_faced": 8.7,
                "expected_saves": 2.13,
                "high_pressure_saves": 0.74,
                "opponent_faced": "Javier Guerra, Dani Raba",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "saves": 2.6252,
                "goals_prevented": 0.1394,
                "rating": 7.068,
                "minutes": 90.0,
                "total_pass": 24.4542,
                "accurate_pass": 21.8796,
                "total_long_balls": 5.7544,
                "accurate_long_balls": 3.4066,
                "touches": 34.0043,
                "clearances": 1.3287,
                "ball_recovery": 7.7135,
                "high_claims": 0.3186,
                "punches": 0.8675,
                "aerial_won": 0.3322,
                "sweeper_actions": 0.8573,
                "sweeper_accurate": 0.8573,
                "saves_inside_box": 1.9347,
                "possession_lost": 2.5746,
                "duels_won": 0.3322,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 22.5662,
                "accurate_own_half_passes": 21.6527,
                "gk_engine_opponent_lambda": 0.919,
                "shots_faced": 8.5,
                "expected_saves": 2.08,
                "high_pressure_saves": 0.72,
                "opponent_faced": "Javier Guerra, Dani Raba",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 8.7,
                  "after": 8.5
                },
                {
                  "stat": "expected_saves",
                  "before": 2.13,
                  "after": 2.08
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 0.74,
                  "after": 0.72
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 82.0)",
              "stats": {
                "saves": 2.6252,
                "goals_prevented": 0.1394,
                "rating": 7.068,
                "minutes": 90.0,
                "total_pass": 24.4542,
                "accurate_pass": 21.8796,
                "total_long_balls": 5.7544,
                "accurate_long_balls": 3.4066,
                "touches": 34.0043,
                "clearances": 1.3287,
                "ball_recovery": 7.7135,
                "high_claims": 0.3186,
                "punches": 0.8675,
                "aerial_won": 0.3322,
                "sweeper_actions": 0.8573,
                "sweeper_accurate": 0.8573,
                "saves_inside_box": 1.9347,
                "possession_lost": 2.5746,
                "duels_won": 0.3322,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 22.5662,
                "accurate_own_half_passes": 21.6527,
                "gk_engine_opponent_lambda": 0.919,
                "shots_faced": 8.5,
                "expected_saves": 2.08,
                "high_pressure_saves": 0.72,
                "opponent_faced": "Javier Guerra, Dani Raba",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 82.0
              },
              "params": {
                "match_squad_rank": 4,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 616,
                "fifa_rank": 409.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 82.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "saves": 2.6252,
                "goals_prevented": 0.1394,
                "rating": 7.068,
                "minutes": 90.0,
                "total_pass": 24.4542,
                "accurate_pass": 21.8796,
                "total_long_balls": 5.7544,
                "accurate_long_balls": 3.4066,
                "touches": 34.0043,
                "clearances": 1.3287,
                "ball_recovery": 7.7135,
                "high_claims": 0.3186,
                "punches": 0.8675,
                "aerial_won": 0.3322,
                "sweeper_actions": 0.8573,
                "sweeper_accurate": 0.8573,
                "saves_inside_box": 1.9347,
                "possession_lost": 2.5746,
                "duels_won": 0.3322,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 22.5662,
                "accurate_own_half_passes": 21.6527,
                "gk_engine_opponent_lambda": 0.919,
                "shots_faced": 8.5,
                "expected_saves": 2.08,
                "high_pressure_saves": 0.72,
                "opponent_faced": "Javier Guerra, Dani Raba",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 1.5114,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "saves": 2.6252,
                "goals_prevented": 0.1394,
                "rating": 7.068,
                "minutes": 90.0,
                "total_pass": 24.4542,
                "accurate_pass": 21.8796,
                "total_long_balls": 5.7544,
                "accurate_long_balls": 3.4066,
                "touches": 34.0043,
                "clearances": 1.3287,
                "ball_recovery": 7.7135,
                "high_claims": 0.3186,
                "punches": 0.8675,
                "aerial_won": 0.3322,
                "sweeper_actions": 0.8573,
                "sweeper_accurate": 0.8573,
                "saves_inside_box": 1.9347,
                "possession_lost": 2.5746,
                "duels_won": 0.3322,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 22.5662,
                "accurate_own_half_passes": 21.6527,
                "gk_engine_opponent_lambda": 0.919,
                "shots_faced": 8.5,
                "expected_saves": 2.08,
                "high_pressure_saves": 0.72,
                "opponent_faced": "Javier Guerra, Dani Raba",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 1.1097,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Alexander Freeman": {
          "player_id": 1184541,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 3,
          "height": 188,
          "market_value": 13800000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.8888,
            "minutes": 90,
            "total_pass": 68,
            "accurate_pass": 63,
            "duels_won": 7,
            "total_long_balls": 4,
            "accurate_long_balls": 3,
            "total_own_half_passes": 32,
            "accurate_own_half_passes": 31,
            "total_opp_half_passes": 36,
            "accurate_opp_half_passes": 32,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 94,
            "possession_lost": 9.2141,
            "dispossessed": 0.4039,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 7,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0228,
            "expected_assists": 0.0494,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0173,
            "ball_carries": 24,
            "total_progression": 77,
            "progressive_carries": 2,
            "key_pass": 1,
            "shots_off_target": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.9,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Dani Raba",
            "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.0225,
            "projected_assists": 0,
            "assist_probability": 0.0482,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1054,
                "total_shots": 0,
                "total_pass": 77,
                "accurate_pass": 68,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 11
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0267,
                "total_shots": 0,
                "total_pass": 53,
                "accurate_pass": 48,
                "key_pass": 2,
                "tackles": 7,
                "tackles_won": 5,
                "interceptions": 3,
                "clearances": 7,
                "aerial_won": 3,
                "duels_won": 11,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0975,
                "expected_assists": 0.0373,
                "total_shots": 1,
                "total_pass": 72,
                "accurate_pass": 69,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 9
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0657,
                "total_shots": 0,
                "total_pass": 68,
                "accurate_pass": 62,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 8,
                "ball_recovery": 9
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 14,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0127,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 17,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0716,
                "expected_assists": 0.0423,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 83,
                "accurate_pass": 80,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 28,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.059,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 30,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083644,
              "match_date": "2026-05-13",
              "home_team": "Villarreal",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0261,
                "total_shots": 0,
                "total_pass": 72,
                "accurate_pass": 65,
                "tackles": 5,
                "tackles_won": 4,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083512,
              "match_date": "2026-05-02",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0066,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 51,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 5,
                "ball_recovery": 7
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 416,
            "combined_rank_score": 378.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 257.0,
            "sofascore_rating": 7.1,
            "sofascore_appearances": 2.0,
            "fifa_rank": 500.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8888,
            "source_file": "data/player_rankings.csv",
            "player_name": "Alexander Freeman",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Itsuki Urata",
                  "ranking": 411
                },
                {
                  "player_name": "Chi-Won Choi",
                  "ranking": 412
                },
                {
                  "player_name": "Youssef Enriquez",
                  "ranking": 413
                },
                {
                  "player_name": "Beom Song",
                  "ranking": 414
                },
                {
                  "player_name": "Irakli Azarovi",
                  "ranking": 415
                }
              ],
              "lower": [
                {
                  "player_name": "Johaneko Louis Jean",
                  "ranking": 417
                },
                {
                  "player_name": "Roman Begunov",
                  "ranking": 418
                },
                {
                  "player_name": "Cristhian Paredes",
                  "ranking": 419
                },
                {
                  "player_name": "Alex Sandro",
                  "ranking": 420
                },
                {
                  "player_name": "Ismoilbek Usmonxo'jayev",
                  "ranking": 421
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 17,
          "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": 17,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0042,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 17 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.2152,
                "tackles": 2.0038,
                "tackles_won": 1.2766,
                "clearances": 2.7503,
                "aerial_won": 1.4625,
                "total_shots": 0.4924,
                "rating": 6.8888,
                "minutes": 90.0,
                "total_pass": 67.6568,
                "accurate_pass": 62.3895,
                "duels_won": 6.912,
                "total_long_balls": 3.517,
                "accurate_long_balls": 2.6479,
                "total_own_half_passes": 32.1667,
                "accurate_own_half_passes": 30.6001,
                "total_opp_half_passes": 35.4901,
                "accurate_opp_half_passes": 31.7894,
                "crosses_total": 0.5998,
                "crosses_accurate": 0.0,
                "touches": 93.7122,
                "possession_lost": 9.1756,
                "dispossessed": 0.4022,
                "duels_lost": 4.1532,
                "aerial_lost": 1.0036,
                "total_contest": 2.097,
                "won_contest": 1.3264,
                "ball_recovery": 7.2466,
                "challenges_lost": 1.5662,
                "fouls": 0.6167,
                "fouls_drawn": 0.8364,
                "blocks": 0.3328,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0222,
                "expected_assists": 0.0482,
                "shots_on_target": 0.1076,
                "big_chances_created": 0.2062,
                "xgot": 0.0169,
                "ball_carries": 23.5905,
                "total_progression": 77.0861,
                "progressive_carries": 1.5308,
                "key_pass": 0.9813,
                "shots_off_target": 0.3848
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1601,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1361,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1157,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0983,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0836,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.071,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0604,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 2.0,
                    "is_starting": false,
                    "weight": 0.0513,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0436,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0371,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 17.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 2.5636,
                  "aerialWon": 1.478,
                  "totalClearance_p90": 3.7537,
                  "totalTackle": 2.213,
                  "defensive_actions": 3.2553
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.2152055501937866,
                    "model_output": 1.2152,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1179
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0459
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.036
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0309
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0266
                        }
                      ],
                      "others": 0.0976,
                      "total": 1.2152,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.128472
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.045879
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.034587
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.028682
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.024113
                        }
                      ],
                      "others_margin": 0.083626
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 2.003844738006592,
                    "model_output": 2.0038,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2144
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1014
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0914
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0801
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0809
                        }
                      ],
                      "others": 0.0525,
                      "total": 2.0038,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.144131
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.061563
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.052383
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.043744
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.042337
                        }
                      ],
                      "others_margin": 0.02661
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.2766162157058716,
                    "model_output": 1.2766,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1337
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0972
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0574
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0571
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0576
                        }
                      ],
                      "others": 0.0286,
                      "total": 1.2766,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.146857
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.094661
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.052018
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.049123
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.047266
                        }
                      ],
                      "others_margin": 0.02269
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.750321865081787,
                    "model_output": 2.7503,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4613
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.4587
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.251
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1853
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0748
                        }
                      ],
                      "others": -0.1663,
                      "total": 2.7503,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.126364
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.125586
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.076061
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.060105
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.025309
                        }
                      ],
                      "others_margin": -0.058708
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.4625040292739868,
                    "model_output": 1.4625,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1624
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.1542
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.1063
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0577
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0412
                        }
                      ],
                      "others": -0.0341,
                      "total": 1.4625,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.110861
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.094967
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.06453
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.036868
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.027175
                        }
                      ],
                      "others_margin": -0.022921
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.492392897605896,
                    "model_output": 0.4924,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0803
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0565
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0217
                        },
                        {
                          "name": "duelWon",
                          "contribution": 0.0158
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0133
                        }
                      ],
                      "others": -0.0095,
                      "total": 0.4924,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.080328
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.056458
                        },
                        {
                          "name": "rating",
                          "margin": 0.021705
                        },
                        {
                          "name": "duelWon",
                          "margin": 0.015815
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.013294
                        }
                      ],
                      "others_margin": -0.009492
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.888825416564941,
                    "model_output": 6.8888,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0405
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0364
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0322
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0267
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0266
                        }
                      ],
                      "others": -0.0108,
                      "total": 6.8888,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.040515
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.036354
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.032223
                        },
                        {
                          "name": "rating",
                          "margin": 0.026671
                        },
                        {
                          "name": "wonTackle",
                          "margin": -0.026609
                        }
                      ],
                      "others_margin": -0.010712
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 17,
                  "role_matches": 8,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0042, quality 0.566)",
              "stats": {
                "interceptions": 1.2203,
                "tackles": 2.0123,
                "tackles_won": 1.282,
                "clearances": 2.7619,
                "aerial_won": 1.4686,
                "total_shots": 0.4945,
                "rating": 6.8888,
                "minutes": 90.0,
                "total_pass": 67.941,
                "accurate_pass": 62.6515,
                "duels_won": 6.941,
                "total_long_balls": 3.5318,
                "accurate_long_balls": 2.659,
                "total_own_half_passes": 32.3018,
                "accurate_own_half_passes": 30.7286,
                "total_opp_half_passes": 35.6392,
                "accurate_opp_half_passes": 31.9229,
                "crosses_total": 0.6023,
                "crosses_accurate": 0.0,
                "touches": 94.1058,
                "possession_lost": 9.2141,
                "dispossessed": 0.4039,
                "duels_lost": 4.1706,
                "aerial_lost": 1.0078,
                "total_contest": 2.1058,
                "won_contest": 1.332,
                "ball_recovery": 7.277,
                "challenges_lost": 1.5728,
                "fouls": 0.6193,
                "fouls_drawn": 0.8399,
                "blocks": 0.3342,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0223,
                "expected_assists": 0.0484,
                "shots_on_target": 0.1081,
                "big_chances_created": 0.2071,
                "xgot": 0.017,
                "ball_carries": 23.6896,
                "total_progression": 77.4099,
                "progressive_carries": 1.5372,
                "key_pass": 0.9854,
                "shots_off_target": 0.3864
              },
              "params": {
                "market_value_eur": 13800000,
                "quality_factor": 0.566,
                "boost_factor": 1.0042,
                "reference_quality": 0.505,
                "history_matches": 17,
                "history_shrink": 0.2273,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.2203,
                "tackles": 2.0123,
                "tackles_won": 1.282,
                "clearances": 2.7619,
                "aerial_won": 1.4686,
                "total_shots": 0.4945,
                "rating": 6.8888,
                "minutes": 90.0,
                "total_pass": 67.941,
                "accurate_pass": 62.6515,
                "duels_won": 6.941,
                "total_long_balls": 3.5318,
                "accurate_long_balls": 2.659,
                "total_own_half_passes": 32.3018,
                "accurate_own_half_passes": 30.7286,
                "total_opp_half_passes": 35.6392,
                "accurate_opp_half_passes": 31.9229,
                "crosses_total": 0.6023,
                "crosses_accurate": 0.0,
                "touches": 94.1058,
                "possession_lost": 9.2141,
                "dispossessed": 0.4039,
                "duels_lost": 4.1706,
                "aerial_lost": 1.0078,
                "total_contest": 2.1058,
                "won_contest": 1.332,
                "ball_recovery": 7.277,
                "challenges_lost": 1.5728,
                "fouls": 0.6193,
                "fouls_drawn": 0.8399,
                "blocks": 0.3342,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0223,
                "expected_assists": 0.0484,
                "shots_on_target": 0.1081,
                "big_chances_created": 0.2071,
                "xgot": 0.017,
                "ball_carries": 23.6896,
                "total_progression": 77.4099,
                "progressive_carries": 1.5372,
                "key_pass": 0.9854,
                "shots_off_target": 0.3864
              },
              "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.2203,
                "tackles": 2.0123,
                "tackles_won": 1.282,
                "clearances": 2.7619,
                "aerial_won": 1.4686,
                "total_shots": 0.4945,
                "rating": 6.8888,
                "minutes": 90.0,
                "total_pass": 67.941,
                "accurate_pass": 62.6515,
                "duels_won": 6.941,
                "total_long_balls": 3.5318,
                "accurate_long_balls": 2.659,
                "total_own_half_passes": 32.3018,
                "accurate_own_half_passes": 30.7286,
                "total_opp_half_passes": 35.6392,
                "accurate_opp_half_passes": 31.9229,
                "crosses_total": 0.6023,
                "crosses_accurate": 0.0,
                "touches": 94.1058,
                "possession_lost": 9.2141,
                "dispossessed": 0.4039,
                "duels_lost": 4.1706,
                "aerial_lost": 1.0078,
                "total_contest": 2.1058,
                "won_contest": 1.332,
                "ball_recovery": 7.277,
                "challenges_lost": 1.5728,
                "fouls": 0.6193,
                "fouls_drawn": 0.8399,
                "blocks": 0.3342,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0223,
                "expected_assists": 0.0484,
                "shots_on_target": 0.1081,
                "big_chances_created": 0.2071,
                "xgot": 0.017,
                "ball_carries": 23.6896,
                "total_progression": 77.4099,
                "progressive_carries": 1.5372,
                "key_pass": 0.9854,
                "shots_off_target": 0.3864,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Dani Raba",
                "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": "Dani Raba",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.2203,
                "tackles": 2.0123,
                "tackles_won": 1.282,
                "clearances": 2.7619,
                "aerial_won": 1.4686,
                "total_shots": 0.4945,
                "rating": 6.8888,
                "minutes": 90.0,
                "total_pass": 67.941,
                "accurate_pass": 62.6515,
                "duels_won": 6.941,
                "total_long_balls": 3.5318,
                "accurate_long_balls": 2.659,
                "total_own_half_passes": 32.3018,
                "accurate_own_half_passes": 30.7286,
                "total_opp_half_passes": 35.6392,
                "accurate_opp_half_passes": 31.9229,
                "crosses_total": 0.6023,
                "crosses_accurate": 0.0,
                "touches": 94.1058,
                "possession_lost": 9.2141,
                "dispossessed": 0.4039,
                "duels_lost": 4.1706,
                "aerial_lost": 1.0078,
                "total_contest": 2.1058,
                "won_contest": 1.332,
                "ball_recovery": 7.277,
                "challenges_lost": 1.5728,
                "fouls": 0.6193,
                "fouls_drawn": 0.8399,
                "blocks": 0.3342,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0223,
                "expected_assists": 0.0484,
                "shots_on_target": 0.1081,
                "big_chances_created": 0.2071,
                "xgot": 0.017,
                "ball_carries": 23.6896,
                "total_progression": 77.4099,
                "progressive_carries": 1.5372,
                "key_pass": 0.9854,
                "shots_off_target": 0.3864,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Dani Raba",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "interceptions": 1.2203,
                "tackles": 2.0123,
                "tackles_won": 1.282,
                "clearances": 2.7619,
                "aerial_won": 1.4686,
                "total_shots": 0.4945,
                "rating": 6.8888,
                "minutes": 90.0,
                "total_pass": 67.941,
                "accurate_pass": 62.6515,
                "duels_won": 6.941,
                "total_long_balls": 3.5318,
                "accurate_long_balls": 2.659,
                "total_own_half_passes": 32.3018,
                "accurate_own_half_passes": 30.7286,
                "total_opp_half_passes": 35.6392,
                "accurate_opp_half_passes": 31.9229,
                "crosses_total": 0.6023,
                "crosses_accurate": 0.0,
                "touches": 94.1058,
                "possession_lost": 9.2141,
                "dispossessed": 0.4039,
                "duels_lost": 4.1706,
                "aerial_lost": 1.0078,
                "total_contest": 2.1058,
                "won_contest": 1.332,
                "ball_recovery": 7.277,
                "challenges_lost": 1.5728,
                "fouls": 0.6193,
                "fouls_drawn": 0.8399,
                "blocks": 0.3342,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0228,
                "expected_assists": 0.0494,
                "shots_on_target": 0.1081,
                "big_chances_created": 0.2071,
                "xgot": 0.0173,
                "ball_carries": 23.6896,
                "total_progression": 77.4099,
                "progressive_carries": 1.5372,
                "key_pass": 0.9854,
                "shots_off_target": 0.3864,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Dani Raba",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "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 81.0)",
              "stats": {
                "interceptions": 1.2203,
                "tackles": 2.0123,
                "tackles_won": 1.282,
                "clearances": 2.7619,
                "aerial_won": 1.4686,
                "total_shots": 0.4945,
                "rating": 6.8888,
                "minutes": 90.0,
                "total_pass": 67.941,
                "accurate_pass": 62.6515,
                "duels_won": 6.941,
                "total_long_balls": 3.5318,
                "accurate_long_balls": 2.659,
                "total_own_half_passes": 32.3018,
                "accurate_own_half_passes": 30.7286,
                "total_opp_half_passes": 35.6392,
                "accurate_opp_half_passes": 31.9229,
                "crosses_total": 0.6023,
                "crosses_accurate": 0.0,
                "touches": 94.1058,
                "possession_lost": 9.2141,
                "dispossessed": 0.4039,
                "duels_lost": 4.1706,
                "aerial_lost": 1.0078,
                "total_contest": 2.1058,
                "won_contest": 1.332,
                "ball_recovery": 7.277,
                "challenges_lost": 1.5728,
                "fouls": 0.6193,
                "fouls_drawn": 0.8399,
                "blocks": 0.3342,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0228,
                "expected_assists": 0.0494,
                "shots_on_target": 0.1081,
                "big_chances_created": 0.2071,
                "xgot": 0.0173,
                "ball_carries": 23.6896,
                "total_progression": 77.4099,
                "progressive_carries": 1.5372,
                "key_pass": 0.9854,
                "shots_off_target": 0.3864,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Dani Raba",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 81.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": 416,
                "fifa_rank": 500.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 81.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.2203,
                "tackles": 2.0123,
                "tackles_won": 1.282,
                "clearances": 2.7619,
                "aerial_won": 1.4686,
                "total_shots": 0.4945,
                "rating": 6.8888,
                "minutes": 90.0,
                "total_pass": 67.941,
                "accurate_pass": 62.6515,
                "duels_won": 6.941,
                "total_long_balls": 3.5318,
                "accurate_long_balls": 2.659,
                "total_own_half_passes": 32.3018,
                "accurate_own_half_passes": 30.7286,
                "total_opp_half_passes": 35.6392,
                "accurate_opp_half_passes": 31.9229,
                "crosses_total": 0.6023,
                "crosses_accurate": 0.0,
                "touches": 94.1058,
                "possession_lost": 9.2141,
                "dispossessed": 0.4039,
                "duels_lost": 4.1706,
                "aerial_lost": 1.0078,
                "total_contest": 2.1058,
                "won_contest": 1.332,
                "ball_recovery": 7.277,
                "challenges_lost": 1.5728,
                "fouls": 0.6193,
                "fouls_drawn": 0.8399,
                "blocks": 0.3342,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0228,
                "expected_assists": 0.0494,
                "shots_on_target": 0.1081,
                "big_chances_created": 0.2071,
                "xgot": 0.0173,
                "ball_carries": 23.6896,
                "total_progression": 77.4099,
                "progressive_carries": 1.5372,
                "key_pass": 0.9854,
                "shots_off_target": 0.3864,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Dani Raba",
                "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.0225,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0225,
                "goal_rate": 0.0,
                "scorer_weight": 0.0182,
                "squad_weight_total": 1.5114,
                "weight_share": 0.0121,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "interceptions": 1.2203,
                "tackles": 2.0123,
                "tackles_won": 1.282,
                "clearances": 2.7619,
                "aerial_won": 1.4686,
                "total_shots": 0.4945,
                "rating": 6.8888,
                "minutes": 90.0,
                "total_pass": 67.941,
                "accurate_pass": 62.6515,
                "duels_won": 6.941,
                "total_long_balls": 3.5318,
                "accurate_long_balls": 2.659,
                "total_own_half_passes": 32.3018,
                "accurate_own_half_passes": 30.7286,
                "total_opp_half_passes": 35.6392,
                "accurate_opp_half_passes": 31.9229,
                "crosses_total": 0.6023,
                "crosses_accurate": 0.0,
                "touches": 94.1058,
                "possession_lost": 9.2141,
                "dispossessed": 0.4039,
                "duels_lost": 4.1706,
                "aerial_lost": 1.0078,
                "total_contest": 2.1058,
                "won_contest": 1.332,
                "ball_recovery": 7.277,
                "challenges_lost": 1.5728,
                "fouls": 0.6193,
                "fouls_drawn": 0.8399,
                "blocks": 0.3342,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0228,
                "expected_assists": 0.0494,
                "shots_on_target": 0.1081,
                "big_chances_created": 0.2071,
                "xgot": 0.0173,
                "ball_carries": 23.6896,
                "total_progression": 77.4099,
                "progressive_carries": 1.5372,
                "key_pass": 0.9854,
                "shots_off_target": 0.3864,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.9,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Dani Raba",
                "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.0225,
                "projected_assists": 0,
                "assist_probability": 0.0482,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0482,
                "assist_rate": 0.0,
                "provider_weight": 0.0395,
                "squad_weight_total": 1.1097,
                "weight_share": 0.0356,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "bench_players": {
        "Luiz Júnior": {
          "player_id": 1066603,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 1,
          "height": 192,
          "market_value": 12400000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0458,
            "rating": 7.1415,
            "minutes": 5,
            "total_pass": 4,
            "accurate_pass": 3,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "touches": 5,
            "clearances": 0,
            "ball_recovery": 1,
            "high_claims": 0,
            "punches": 0.2773,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.8502,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "bench_appearance_probability": 0.129,
            "bench_expected_minutes": 4.84,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.547,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 5.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 15,
                "ball_recovery": 4,
                "goals_prevented": -1.7728
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 18,
                "clearances": 2,
                "ball_recovery": 8,
                "saves": 1,
                "goals_prevented": -0.2317
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 25,
                "ball_recovery": 5,
                "saves": 2,
                "goals_prevented": -1.1323
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 18,
                "ball_recovery": 6,
                "saves": 3,
                "goals_prevented": -0.6088
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083102,
              "match_date": "2026-04-12",
              "home_team": "Athletic Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 8.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 19,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 14,
                "saves": 5,
                "goals_prevented": 1.3408
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081812,
              "match_date": "2026-04-06",
              "home_team": "Girona FC",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Girona FC",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 20,
                "ball_recovery": 8,
                "saves": 2,
                "goals_prevented": -0.5786
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081808,
              "match_date": "2026-03-20",
              "home_team": "Villarreal",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 6,
                "clearances": 4,
                "ball_recovery": 9,
                "saves": 3,
                "goals_prevented": 0.3769
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081806,
              "match_date": "2026-03-13",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 16,
                "clearances": 1,
                "ball_recovery": 7
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081803,
              "match_date": "2026-03-08",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 13,
                "clearances": 3,
                "ball_recovery": 11,
                "saves": 6,
                "goals_prevented": 0.7456
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081789,
              "match_date": "2026-02-28",
              "home_team": "FC Barcelona",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 10,
                "ball_recovery": 6,
                "saves": 4,
                "goals_prevented": -1.2781
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 2073,
            "combined_rank_score": 790.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 339.0,
            "sofascore_rating": 6.9929,
            "sofascore_appearances": 28.0,
            "fifa_rank": 1241.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 7.1415,
            "source_file": "data/player_rankings.csv",
            "player_name": "Luiz Júnior",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kim Jong-Seok",
                  "ranking": 2068
                },
                {
                  "player_name": "Ariel Cáceres",
                  "ranking": 2069
                },
                {
                  "player_name": "Lucas Zelarayán",
                  "ranking": 2070
                },
                {
                  "player_name": "Šime Gržan",
                  "ranking": 2071
                },
                {
                  "player_name": "Kaku",
                  "ranking": 2072
                }
              ],
              "lower": [
                {
                  "player_name": "Maximiliano Rodríguez",
                  "ranking": 2074
                },
                {
                  "player_name": "Abbos Gulomov",
                  "ranking": 2075
                },
                {
                  "player_name": "Chan-dong Lee",
                  "ranking": 2076
                },
                {
                  "player_name": "Leonardo Spinazzola",
                  "ranking": 2077
                },
                {
                  "player_name": "Toni Martínez",
                  "ranking": 2078
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 32,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "G_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "accurateLongBalls",
              "totalOwnHalfPasses",
              "accurateOwnHalfPasses",
              "saves",
              "savedShotsFromInsideTheBox",
              "goodHighClaim",
              "punches",
              "aerialWon",
              "totalKeeperSweeper",
              "accurateKeeperSweeper",
              "totalClearance",
              "ballRecovery",
              "touches",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "goalkeeperValueNormalized",
              "goalsPrevented",
              "rating",
              "pass_accuracy",
              "long_ball_accuracy",
              "save_contribution",
              "inside_box_save_rate",
              "sweeper_accuracy",
              "sweeper_actions_p90",
              "distribution_accuracy",
              "commanding_index",
              "history_matches"
            ],
            "targets_predicted": [
              "saves",
              "goalsPrevented",
              "rating"
            ],
            "history_matches": 32,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 4.838865452352355,
            "bench_appearance_prob": 0.12903933874328888,
            "market_value_adjustment": 1.0018,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost G_service (32 historical appearances) to 4.8 expected mins (appearance prob 0.13)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 2.6739,
                "goals_prevented": 0.2693,
                "rating": 7.1415,
                "minutes": 28.5,
                "total_pass": 21.7857,
                "accurate_pass": 16.8137,
                "total_long_balls": 7.9087,
                "accurate_long_balls": 3.067,
                "touches": 30.646,
                "clearances": 1.3444,
                "ball_recovery": 7.6506,
                "high_claims": 1.1485,
                "punches": 1.6306,
                "aerial_won": 0.147,
                "sweeper_actions": 1.4583,
                "sweeper_accurate": 1.2888,
                "saves_inside_box": 1.1445,
                "possession_lost": 4.9983,
                "duels_won": 0.2114,
                "duels_lost": 0.1983,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0307,
                "fouls_drawn": 0.0826,
                "total_own_half_passes": 16.7615,
                "accurate_own_half_passes": 15.4017
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-24T10:04:55.355626+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 200,
                    "rows": 7186
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1508,
                    "rating": 5.3
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1282,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.109,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0926,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0787,
                    "rating": 8.5
                  },
                  {
                    "match_date": "2026-04-06",
                    "opponent": "Girona FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0669,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-20",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0569,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-13",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0484,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-03-08",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-02-28",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "possessionLostCtrl": 4.9983,
                  "distribution_accuracy": 0.9008,
                  "saves": 2.1333,
                  "goalkeeperValueNormalized": -0.1397,
                  "save_contribution": 1.7004,
                  "accurateOwnHalfPasses": 15.4016
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.6738600730895996,
                    "model_output": 2.6739,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "saves",
                        "importance": 0.0396
                      },
                      {
                        "name": "save_contribution",
                        "importance": 0.0396
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0361
                      },
                      {
                        "name": "defensiveValueNormalized",
                        "importance": 0.0356
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 2.9357,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.136
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.0407
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0358
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0284
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0246
                        }
                      ],
                      "others": -0.0531,
                      "total": 2.6739,
                      "log_link": true,
                      "margin_base": 1.076962,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.047444
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.01465
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.013067
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.010385
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.008965
                        }
                      ],
                      "others_margin": -0.019699
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": 0.2692926526069641,
                    "model_output": 0.2693,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0403
                      },
                      {
                        "name": "punches",
                        "importance": 0.0402
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.039
                      },
                      {
                        "name": "goodHighClaim",
                        "importance": 0.0381
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0377
                      }
                    ],
                    "decomposition": {
                      "base": -0.0276,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.1683
                        },
                        {
                          "name": "sweeper_accuracy",
                          "contribution": 0.0817
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.0693
                        },
                        {
                          "name": "goalsPrevented",
                          "contribution": 0.0482
                        },
                        {
                          "name": "punches",
                          "contribution": -0.0464
                        }
                      ],
                      "others": -0.0242,
                      "total": 0.2693,
                      "log_link": false,
                      "margin_base": -0.027557,
                      "item_margins": [
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.168257
                        },
                        {
                          "name": "sweeper_accuracy",
                          "margin": 0.081683
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.069256
                        },
                        {
                          "name": "goalsPrevented",
                          "margin": 0.048169
                        },
                        {
                          "name": "punches",
                          "margin": -0.046434
                        }
                      ],
                      "others_margin": -0.024081
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.141465663909912,
                    "model_output": 7.1415,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "saves",
                        "importance": 0.0419
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.0397
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0368
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0351
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0351
                      }
                    ],
                    "decomposition": {
                      "base": 6.9908,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.1241
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0242
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": -0.0216
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": 0.0175
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.0173
                        }
                      ],
                      "others": 0.0376,
                      "total": 7.1415,
                      "log_link": false,
                      "margin_base": 6.990849,
                      "item_margins": [
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.124121
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.02417
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "margin": -0.021613
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": 0.01752
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.017276
                        }
                      ],
                      "others_margin": 0.037482
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 32,
                  "role_matches": 0,
                  "minutes_source": "position_median",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0018, quality 0.550)",
              "stats": {
                "saves": 2.6787,
                "goals_prevented": 0.2698,
                "rating": 7.1415,
                "minutes": 28.5,
                "total_pass": 21.8249,
                "accurate_pass": 16.844,
                "total_long_balls": 7.9229,
                "accurate_long_balls": 3.0725,
                "touches": 30.7012,
                "clearances": 1.3468,
                "ball_recovery": 7.6644,
                "high_claims": 1.1506,
                "punches": 1.6335,
                "aerial_won": 0.1473,
                "sweeper_actions": 1.4609,
                "sweeper_accurate": 1.2911,
                "saves_inside_box": 1.1466,
                "possession_lost": 5.0073,
                "duels_won": 0.2118,
                "duels_lost": 0.1987,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0308,
                "fouls_drawn": 0.0827,
                "total_own_half_passes": 16.7917,
                "accurate_own_half_passes": 15.4294
              },
              "params": {
                "market_value_eur": 12400000,
                "quality_factor": 0.5502,
                "boost_factor": 1.0018,
                "reference_quality": 0.505,
                "history_matches": 32,
                "history_shrink": 0.1351,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 28.5 to 4.8 expected minutes (appearance prob 0.13)",
              "stats": {
                "saves": 0.4548,
                "goals_prevented": 0.0458,
                "rating": 7.1415,
                "minutes": 4.84,
                "total_pass": 3.7055,
                "accurate_pass": 2.8599,
                "total_long_balls": 1.3452,
                "accurate_long_balls": 0.5217,
                "touches": 5.2126,
                "clearances": 0.2287,
                "ball_recovery": 1.3013,
                "high_claims": 0.1954,
                "punches": 0.2773,
                "aerial_won": 0.025,
                "sweeper_actions": 0.248,
                "sweeper_accurate": 0.2192,
                "saves_inside_box": 0.1947,
                "possession_lost": 0.8502,
                "duels_won": 0.036,
                "duels_lost": 0.0337,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0052,
                "fouls_drawn": 0.014,
                "total_own_half_passes": 2.851,
                "accurate_own_half_passes": 2.6197,
                "bench_appearance_probability": 0.129,
                "bench_expected_minutes": 4.84
              },
              "params": {
                "expected_minutes": 4.84,
                "projection_minutes": 28.5,
                "minutes_scale": 0.1698,
                "appearance_probability": 0.129
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.4548,
                "goals_prevented": 0.0458,
                "rating": 7.1415,
                "minutes": 4.84,
                "total_pass": 3.7055,
                "accurate_pass": 2.8599,
                "total_long_balls": 1.3452,
                "accurate_long_balls": 0.5217,
                "touches": 5.2126,
                "clearances": 0.2287,
                "ball_recovery": 1.3013,
                "high_claims": 0.1954,
                "punches": 0.2773,
                "aerial_won": 0.025,
                "sweeper_actions": 0.248,
                "sweeper_accurate": 0.2192,
                "saves_inside_box": 0.1947,
                "possession_lost": 0.8502,
                "duels_won": 0.036,
                "duels_lost": 0.0337,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0052,
                "fouls_drawn": 0.014,
                "total_own_half_passes": 2.851,
                "accurate_own_half_passes": 2.6197,
                "bench_appearance_probability": 0.129,
                "bench_expected_minutes": 4.84
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "saves": 0.4548,
                "goals_prevented": 0.0458,
                "rating": 7.1415,
                "minutes": 4.84,
                "total_pass": 3.7055,
                "accurate_pass": 2.8599,
                "total_long_balls": 1.3452,
                "accurate_long_balls": 0.5217,
                "touches": 5.2126,
                "clearances": 0.2287,
                "ball_recovery": 1.3013,
                "high_claims": 0.1954,
                "punches": 0.2773,
                "aerial_won": 0.025,
                "sweeper_actions": 0.248,
                "sweeper_accurate": 0.2192,
                "saves_inside_box": 0.1947,
                "possession_lost": 0.8502,
                "duels_won": 0.036,
                "duels_lost": 0.0337,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0052,
                "fouls_drawn": 0.014,
                "total_own_half_passes": 2.851,
                "accurate_own_half_passes": 2.6197,
                "bench_appearance_probability": 0.129,
                "bench_expected_minutes": 4.84,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.129,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 78.0)",
              "stats": {
                "saves": 0.4548,
                "goals_prevented": 0.0458,
                "rating": 7.1415,
                "minutes": 4.84,
                "total_pass": 3.7055,
                "accurate_pass": 2.8599,
                "total_long_balls": 1.3452,
                "accurate_long_balls": 0.5217,
                "touches": 5.2126,
                "clearances": 0.2287,
                "ball_recovery": 1.3013,
                "high_claims": 0.1954,
                "punches": 0.2773,
                "aerial_won": 0.025,
                "sweeper_actions": 0.248,
                "sweeper_accurate": 0.2192,
                "saves_inside_box": 0.1947,
                "possession_lost": 0.8502,
                "duels_won": 0.036,
                "duels_lost": 0.0337,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0052,
                "fouls_drawn": 0.014,
                "total_own_half_passes": 2.851,
                "accurate_own_half_passes": 2.6197,
                "bench_appearance_probability": 0.129,
                "bench_expected_minutes": 4.84,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 2,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2073,
                "fifa_rank": 1241.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            }
          ]
        },
        "Carlos Romero": {
          "player_id": 1396048,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 20,
          "height": 174,
          "market_value": 24000000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.7405,
            "minutes": 14,
            "total_pass": 21,
            "accurate_pass": 18,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 8,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 11,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 33,
            "possession_lost": 5.5317,
            "dispossessed": 0.4646,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0384,
            "goals": 0,
            "assist_rate": 0.0248,
            "assists": 0,
            "expected_goals": 0.0334,
            "expected_assists": 0.0363,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0738,
            "ball_carries": 9,
            "total_progression": 41,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.236,
            "bench_expected_minutes": 14.49,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.547,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 34,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0783,
                "expected_assists": 0.0152,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 18,
                "accurate_pass": 16,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 27,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0754,
                "expected_assists": 0.0685,
                "total_shots": 1,
                "total_pass": 23,
                "accurate_pass": 19,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0367,
                "expected_assists": 0.0239,
                "total_shots": 1,
                "total_pass": 60,
                "accurate_pass": 54,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0469,
                "expected_assists": 0.053,
                "total_shots": 1,
                "total_pass": 57,
                "accurate_pass": 52,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0296,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 34,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.016,
                "expected_assists": 0.0973,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 53,
                "accurate_pass": 50,
                "tackles": 3,
                "tackles_won": 3,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 12,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083719,
              "match_date": "2026-05-23",
              "home_team": "Espanyol",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1193,
                "expected_assists": 0.2291,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 42,
                "accurate_pass": 34,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 8,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Osasuna",
              "stats": {
                "minutes": 90,
                "rating": 9.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0256,
                "expected_assists": 0.018,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 22,
                "accurate_pass": 20,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 3,
                "clearances": 3,
                "duels_won": 8,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083629,
              "match_date": "2026-05-13",
              "home_team": "Espanyol",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0672,
                "expected_assists": 0.1447,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 44,
                "accurate_pass": 34,
                "key_pass": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083587,
              "match_date": "2026-05-09",
              "home_team": "Sevilla",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 75,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0131,
                "expected_assists": 0.0027,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 14,
                "accurate_pass": 12,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 1032,
            "combined_rank_score": 460.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 1.0,
            "fifa_rank": 764.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7405,
            "source_file": "data/player_rankings.csv",
            "player_name": "Carlos Romero",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mamadou Sangare",
                  "ranking": 1027
                },
                {
                  "player_name": "Azizbek  Pirmukhamedov",
                  "ranking": 1028
                },
                {
                  "player_name": "Jonas Urbig",
                  "ranking": 1029
                },
                {
                  "player_name": "James Donachie",
                  "ranking": 1030
                },
                {
                  "player_name": "Felipe Campos",
                  "ranking": 1031
                }
              ],
              "lower": [
                {
                  "player_name": "Shota Gvazava",
                  "ranking": 1033
                },
                {
                  "player_name": "Joachim Andersen",
                  "ranking": 1034
                },
                {
                  "player_name": "Alisson",
                  "ranking": 1035
                },
                {
                  "player_name": "Anthony Elanga",
                  "ranking": 1036
                },
                {
                  "player_name": "Sander Berge",
                  "ranking": 1037
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 42,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 42,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 14.48735814265611,
            "bench_appearance_prob": 0.236,
            "market_value_adjustment": 1.0052,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.2
            },
            "rationale": "Bench projection scaled from XGBoost D_service (42 historical appearances) to 14.5 expected mins (appearance prob 0.24); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.3,
                "tackles": 0.726,
                "tackles_won": 0.5314,
                "clearances": 0.7823,
                "aerial_won": 0.2319,
                "total_shots": 0.4403,
                "rating": 6.7405,
                "minutes": 24.39,
                "total_pass": 35.5458,
                "accurate_pass": 30.5955,
                "duels_won": 4.0912,
                "total_long_balls": 2.2412,
                "accurate_long_balls": 1.2591,
                "total_own_half_passes": 13.8414,
                "accurate_own_half_passes": 12.4443,
                "total_opp_half_passes": 21.7044,
                "accurate_opp_half_passes": 18.1511,
                "crosses_total": 1.5174,
                "crosses_accurate": 0.215,
                "touches": 54.8039,
                "possession_lost": 9.2647,
                "dispossessed": 0.4622,
                "duels_lost": 2.6415,
                "aerial_lost": 0.4953,
                "total_contest": 2.1457,
                "won_contest": 1.3838,
                "ball_recovery": 4.3306,
                "challenges_lost": 0.6208,
                "fouls": 0.3317,
                "fouls_drawn": 0.8997,
                "blocks": 0.484,
                "goals": 0.0652,
                "goal_rate": 0.0652,
                "assists": 0.0422,
                "assist_rate": 0.0422,
                "expected_goals": 0.0559,
                "expected_assists": 0.0608,
                "shots_on_target": 0.3526,
                "big_chances_created": 0.0625,
                "xgot": 0.1237,
                "ball_carries": 15.5997,
                "total_progression": 69.4863,
                "progressive_carries": 2.1929,
                "key_pass": 0.7756,
                "shots_off_target": 0.0877
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.1502,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.1276,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Real Sociedad",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Osasuna",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 9.7
                  },
                  {
                    "match_date": "2026-05-13",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-09",
                    "opponent": "Sevilla",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 1.7251,
                  "aerialWon": 0.3646,
                  "totalClearance_p90": 2.2349,
                  "totalTackle": 1.5178,
                  "defensive_actions": 2.1074
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.3000221848487854,
                    "model_output": 0.3,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4978
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0241
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0178
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0114
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0098
                        }
                      ],
                      "others": -0.035,
                      "total": 0.3,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.864223
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.068813
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.051368
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.032446
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.028828
                        }
                      ],
                      "others_margin": -0.110511
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.7260312438011169,
                    "model_output": 0.726,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7657
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0234
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0223
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0166
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0153
                        }
                      ],
                      "others": 0.031,
                      "total": 0.726,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.806641
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.037181
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.034159
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.024673
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.022275
                        }
                      ],
                      "others_margin": 0.043891
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.5313946604728699,
                    "model_output": 0.5314,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4388
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.027
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0195
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0138
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0121
                        }
                      ],
                      "others": 0.077,
                      "total": 0.5314,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.732494
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.064373
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.04392
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.029978
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.026322
                        }
                      ],
                      "others_margin": 0.156697
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.7822914123535156,
                    "model_output": 0.7823,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.0202
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.2862
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0741
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0687
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0569
                        }
                      ],
                      "others": -0.1367,
                      "total": 0.7823,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.891177
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.227797
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.068535
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.06798
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.060037
                        }
                      ],
                      "others_margin": -0.161124
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.23192273080348969,
                    "model_output": 0.2319,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7997
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.2075
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0368
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0285
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0227
                        }
                      ],
                      "others": -0.0581,
                      "total": 0.2319,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.861215
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.437748
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.102373
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.0874
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.075472
                        }
                      ],
                      "others_margin": -0.222959
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.4403091073036194,
                    "model_output": 0.4403,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2596
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1907
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.024
                        },
                        {
                          "name": "rating",
                          "contribution": 0.019
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0175
                        }
                      ],
                      "others": -0.0262,
                      "total": 0.4403,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.259606
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.190712
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.024025
                        },
                        {
                          "name": "rating",
                          "margin": 0.019001
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.017543
                        }
                      ],
                      "others_margin": -0.026307
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.740544319152832,
                    "model_output": 6.7405,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0308
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0219
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0182
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0169
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0127
                        }
                      ],
                      "others": -0.0702,
                      "total": 6.7405,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.030806
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.021856
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.018184
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.016949
                        },
                        {
                          "name": "touches",
                          "margin": 0.012692
                        }
                      ],
                      "others_margin": -0.070245
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 42,
                  "role_matches": 2,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0052, quality 0.669)",
              "stats": {
                "interceptions": 0.3016,
                "tackles": 0.7298,
                "tackles_won": 0.5342,
                "clearances": 0.7864,
                "aerial_won": 0.2331,
                "total_shots": 0.4426,
                "rating": 6.7405,
                "minutes": 24.39,
                "total_pass": 35.7306,
                "accurate_pass": 30.7546,
                "duels_won": 4.1125,
                "total_long_balls": 2.2529,
                "accurate_long_balls": 1.2656,
                "total_own_half_passes": 13.9134,
                "accurate_own_half_passes": 12.509,
                "total_opp_half_passes": 21.8173,
                "accurate_opp_half_passes": 18.2455,
                "crosses_total": 1.5253,
                "crosses_accurate": 0.2161,
                "touches": 55.0889,
                "possession_lost": 9.3129,
                "dispossessed": 0.4646,
                "duels_lost": 2.6552,
                "aerial_lost": 0.4979,
                "total_contest": 2.1569,
                "won_contest": 1.391,
                "ball_recovery": 4.3531,
                "challenges_lost": 0.624,
                "fouls": 0.3334,
                "fouls_drawn": 0.9044,
                "blocks": 0.4865,
                "goals": 0.0655,
                "goal_rate": 0.0655,
                "assists": 0.0424,
                "assist_rate": 0.0424,
                "expected_goals": 0.0562,
                "expected_assists": 0.0611,
                "shots_on_target": 0.3544,
                "big_chances_created": 0.0628,
                "xgot": 0.1243,
                "ball_carries": 15.6808,
                "total_progression": 69.8476,
                "progressive_carries": 2.2043,
                "key_pass": 0.7796,
                "shots_off_target": 0.0882
              },
              "params": {
                "market_value_eur": 24000000,
                "quality_factor": 0.6685,
                "boost_factor": 1.0052,
                "reference_quality": 0.505,
                "history_matches": 42,
                "history_shrink": 0.1064,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0138)",
              "stats": {
                "interceptions": 0.2987,
                "tackles": 0.7298,
                "tackles_won": 0.5331,
                "clearances": 0.7864,
                "aerial_won": 0.2331,
                "total_shots": 0.439,
                "rating": 6.7405,
                "minutes": 24.39,
                "total_pass": 35.7306,
                "accurate_pass": 30.7546,
                "duels_won": 4.1125,
                "total_long_balls": 2.2529,
                "accurate_long_balls": 1.2656,
                "total_own_half_passes": 13.9134,
                "accurate_own_half_passes": 12.509,
                "total_opp_half_passes": 21.8173,
                "accurate_opp_half_passes": 18.2455,
                "crosses_total": 1.5117,
                "crosses_accurate": 0.2161,
                "touches": 55.0889,
                "possession_lost": 9.3129,
                "dispossessed": 0.4646,
                "duels_lost": 2.6552,
                "aerial_lost": 0.4979,
                "total_contest": 2.1569,
                "won_contest": 1.391,
                "ball_recovery": 4.3531,
                "challenges_lost": 0.624,
                "fouls": 0.3313,
                "fouls_drawn": 0.9006,
                "blocks": 0.4865,
                "goals": 0.0646,
                "goal_rate": 0.0646,
                "assists": 0.0418,
                "assist_rate": 0.0418,
                "expected_goals": 0.0562,
                "expected_assists": 0.0611,
                "shots_on_target": 0.3495,
                "big_chances_created": 0.0628,
                "xgot": 0.1243,
                "ball_carries": 15.6808,
                "total_progression": 69.8476,
                "progressive_carries": 2.2043,
                "key_pass": 0.7796,
                "shots_off_target": 0.0882
              },
              "params": {
                "blend_weight": 0.0138,
                "history_matches": 42,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.271,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 1.5253,
                  "after": 1.5117
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 24.4 to 14.5 expected minutes (appearance prob 0.24)",
              "stats": {
                "interceptions": 0.1774,
                "tackles": 0.4335,
                "tackles_won": 0.3167,
                "clearances": 0.4671,
                "aerial_won": 0.1385,
                "total_shots": 0.2608,
                "rating": 6.7405,
                "minutes": 14.49,
                "total_pass": 21.2235,
                "accurate_pass": 18.2679,
                "duels_won": 2.4428,
                "total_long_balls": 1.3382,
                "accurate_long_balls": 0.7518,
                "total_own_half_passes": 8.2644,
                "accurate_own_half_passes": 7.4302,
                "total_opp_half_passes": 12.9592,
                "accurate_opp_half_passes": 10.8376,
                "crosses_total": 0.8979,
                "crosses_accurate": 0.1284,
                "touches": 32.7221,
                "possession_lost": 5.5317,
                "dispossessed": 0.4646,
                "duels_lost": 1.5772,
                "aerial_lost": 0.4979,
                "total_contest": 1.2812,
                "won_contest": 0.8262,
                "ball_recovery": 2.5857,
                "challenges_lost": 0.624,
                "fouls": 0.1968,
                "fouls_drawn": 0.5349,
                "blocks": 0.289,
                "goals": 0.0384,
                "goal_rate": 0.0384,
                "assists": 0.0248,
                "assist_rate": 0.0248,
                "expected_goals": 0.0334,
                "expected_assists": 0.0363,
                "shots_on_target": 0.2076,
                "big_chances_created": 0.0373,
                "xgot": 0.0738,
                "ball_carries": 9.3142,
                "total_progression": 41.4886,
                "progressive_carries": 1.3093,
                "key_pass": 0.4631,
                "shots_off_target": 0.0524,
                "bench_appearance_probability": 0.236,
                "bench_expected_minutes": 14.49
              },
              "params": {
                "expected_minutes": 14.49,
                "projection_minutes": 24.39,
                "minutes_scale": 0.594,
                "appearance_probability": 0.236
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.1774,
                "tackles": 0.4335,
                "tackles_won": 0.3167,
                "clearances": 0.4671,
                "aerial_won": 0.1385,
                "total_shots": 0.2608,
                "rating": 6.7405,
                "minutes": 14.49,
                "total_pass": 21.2235,
                "accurate_pass": 18.2679,
                "duels_won": 2.4428,
                "total_long_balls": 1.3382,
                "accurate_long_balls": 0.7518,
                "total_own_half_passes": 8.2644,
                "accurate_own_half_passes": 7.4302,
                "total_opp_half_passes": 12.9592,
                "accurate_opp_half_passes": 10.8376,
                "crosses_total": 0.8979,
                "crosses_accurate": 0.1284,
                "touches": 32.7221,
                "possession_lost": 5.5317,
                "dispossessed": 0.4646,
                "duels_lost": 1.5772,
                "aerial_lost": 0.4979,
                "total_contest": 1.2812,
                "won_contest": 0.8262,
                "ball_recovery": 2.5857,
                "challenges_lost": 0.624,
                "fouls": 0.1968,
                "fouls_drawn": 0.5349,
                "blocks": 0.289,
                "goals": 0.0384,
                "goal_rate": 0.0384,
                "assists": 0.0248,
                "assist_rate": 0.0248,
                "expected_goals": 0.0334,
                "expected_assists": 0.0363,
                "shots_on_target": 0.2076,
                "big_chances_created": 0.0373,
                "xgot": 0.0738,
                "ball_carries": 9.3142,
                "total_progression": 41.4886,
                "progressive_carries": 1.3093,
                "key_pass": 0.4631,
                "shots_off_target": 0.0524,
                "bench_appearance_probability": 0.236,
                "bench_expected_minutes": 14.49
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "interceptions": 0.1774,
                "tackles": 0.4335,
                "tackles_won": 0.3167,
                "clearances": 0.4671,
                "aerial_won": 0.1385,
                "total_shots": 0.2608,
                "rating": 6.7405,
                "minutes": 14.49,
                "total_pass": 21.2235,
                "accurate_pass": 18.2679,
                "duels_won": 2.4428,
                "total_long_balls": 1.3382,
                "accurate_long_balls": 0.7518,
                "total_own_half_passes": 8.2644,
                "accurate_own_half_passes": 7.4302,
                "total_opp_half_passes": 12.9592,
                "accurate_opp_half_passes": 10.8376,
                "crosses_total": 0.8979,
                "crosses_accurate": 0.1284,
                "touches": 32.7221,
                "possession_lost": 5.5317,
                "dispossessed": 0.4646,
                "duels_lost": 1.5772,
                "aerial_lost": 0.4979,
                "total_contest": 1.2812,
                "won_contest": 0.8262,
                "ball_recovery": 2.5857,
                "challenges_lost": 0.624,
                "fouls": 0.1968,
                "fouls_drawn": 0.5349,
                "blocks": 0.289,
                "goal_rate": 0.0384,
                "goals": 0,
                "assist_rate": 0.0248,
                "assists": 0,
                "expected_goals": 0.0334,
                "expected_assists": 0.0363,
                "shots_on_target": 0.2076,
                "big_chances_created": 0.0373,
                "xgot": 0.0738,
                "ball_carries": 9.3142,
                "total_progression": 41.4886,
                "progressive_carries": 1.3093,
                "key_pass": 0.4631,
                "shots_off_target": 0.0524,
                "bench_appearance_probability": 0.236,
                "bench_expected_minutes": 14.49,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.236,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 80.0)",
              "stats": {
                "interceptions": 0.1774,
                "tackles": 0.4335,
                "tackles_won": 0.3167,
                "clearances": 0.4671,
                "aerial_won": 0.1385,
                "total_shots": 0.2608,
                "rating": 6.7405,
                "minutes": 14.49,
                "total_pass": 21.2235,
                "accurate_pass": 18.2679,
                "duels_won": 2.4428,
                "total_long_balls": 1.3382,
                "accurate_long_balls": 0.7518,
                "total_own_half_passes": 8.2644,
                "accurate_own_half_passes": 7.4302,
                "total_opp_half_passes": 12.9592,
                "accurate_opp_half_passes": 10.8376,
                "crosses_total": 0.8979,
                "crosses_accurate": 0.1284,
                "touches": 32.7221,
                "possession_lost": 5.5317,
                "dispossessed": 0.4646,
                "duels_lost": 1.5772,
                "aerial_lost": 0.4979,
                "total_contest": 1.2812,
                "won_contest": 0.8262,
                "ball_recovery": 2.5857,
                "challenges_lost": 0.624,
                "fouls": 0.1968,
                "fouls_drawn": 0.5349,
                "blocks": 0.289,
                "goal_rate": 0.0384,
                "goals": 0,
                "assist_rate": 0.0248,
                "assists": 0,
                "expected_goals": 0.0334,
                "expected_assists": 0.0363,
                "shots_on_target": 0.2076,
                "big_chances_created": 0.0373,
                "xgot": 0.0738,
                "ball_carries": 9.3142,
                "total_progression": 41.4886,
                "progressive_carries": 1.3093,
                "key_pass": 0.4631,
                "shots_off_target": 0.0524,
                "bench_appearance_probability": 0.236,
                "bench_expected_minutes": 14.49,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 80.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1032,
                "fifa_rank": 764.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 80.0
              }
            }
          ]
        },
        "Santiago Mouriño": {
          "player_id": 1468046,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 15,
          "height": 186,
          "market_value": 19400000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.7836,
            "minutes": 14,
            "total_pass": 8,
            "accurate_pass": 7,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 7,
            "accurate_own_half_passes": 6,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 12,
            "possession_lost": 1.5429,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.001,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 3,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.232,
            "bench_expected_minutes": 14.32,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.547,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 11,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 9,
                "clearances": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 10,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 6,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 76,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0209,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 41,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 62,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.051,
                "expected_assists": 0.1417,
                "total_shots": 1,
                "total_pass": 44,
                "accurate_pass": 38,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3351,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 37,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 5,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 88,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1233,
                "expected_assists": 0.0387,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 53,
                "accurate_pass": 45,
                "tackles": 5,
                "tackles_won": 4,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083735,
              "match_date": "2026-05-24",
              "home_team": "Villarreal",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0155,
                "total_shots": 0,
                "total_pass": 75,
                "accurate_pass": 67,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 6,
                "aerial_won": 2,
                "duels_won": 7,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083682,
              "match_date": "2026-05-17",
              "home_team": "Rayo Vallecano",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0268,
                "expected_assists": 0.0129,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 48,
                "accurate_pass": 43,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083573,
              "match_date": "2026-05-10",
              "home_team": "Mallorca",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.004,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 32,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 5,
                "duels_won": 6,
                "ball_recovery": 6
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083282,
              "match_date": "2026-04-23",
              "home_team": "Real Oviedo",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 78,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0496,
                "expected_assists": 0.0032,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 26,
                "tackles": 6,
                "tackles_won": 4,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 10,
                "ball_recovery": 2
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 2087,
            "combined_rank_score": 793.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 339.0,
            "sofascore_rating": 6.9929,
            "sofascore_appearances": 28.0,
            "fifa_rank": 1248.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7836,
            "source_file": "data/player_rankings.csv",
            "player_name": "Santiago Mouriño",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Shodiyor Shodiboev",
                  "ranking": 2082
                },
                {
                  "player_name": "Matija Rom",
                  "ranking": 2083
                },
                {
                  "player_name": "Franco Rami",
                  "ranking": 2084
                },
                {
                  "player_name": "Jon Aramburu",
                  "ranking": 2085
                },
                {
                  "player_name": "Nikita Haikin",
                  "ranking": 2086
                }
              ],
              "lower": [
                {
                  "player_name": "Mason Mount",
                  "ranking": 2088
                },
                {
                  "player_name": "Thomas Partey",
                  "ranking": 2089
                },
                {
                  "player_name": "Sukhrob Izzatov",
                  "ranking": 2090
                },
                {
                  "player_name": "Gyu-baeg Lee",
                  "ranking": 2091
                },
                {
                  "player_name": "Brian Oyola",
                  "ranking": 2092
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.776,
          "history_matches": 34,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 34,
            "data_confidence": 0.776,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 14.3154732112477,
            "bench_appearance_prob": 0.232,
            "market_value_adjustment": 1.0046,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.1733
            },
            "rationale": "Bench projection scaled from XGBoost D_service (34 historical appearances) to 14.3 expected mins (appearance prob 0.23); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.3485,
                "tackles": 0.5969,
                "tackles_won": 0.3159,
                "clearances": 1.0941,
                "aerial_won": 0.4957,
                "total_shots": 0.1759,
                "rating": 6.7836,
                "minutes": 19.33,
                "total_pass": 10.9252,
                "accurate_pass": 9.413,
                "duels_won": 1.4538,
                "total_long_balls": 0.6696,
                "accurate_long_balls": 0.6696,
                "total_own_half_passes": 9.4713,
                "accurate_own_half_passes": 8.5209,
                "total_opp_half_passes": 1.4538,
                "accurate_opp_half_passes": 0.8921,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 16.6346,
                "possession_lost": 2.0739,
                "dispossessed": 0.0,
                "duels_lost": 0.5617,
                "aerial_lost": 0.2809,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.9504,
                "challenges_lost": 0.2809,
                "fouls": 0.0,
                "fouls_drawn": 0.2809,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0014,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.2245,
                "total_progression": 4.2031,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1759
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:05:47.447103+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 626,
                    "rows": 21426
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1506,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.128,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 76.0,
                    "is_starting": true,
                    "weight": 0.1088,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0925,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0786,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 88.0,
                    "is_starting": true,
                    "weight": 0.0668,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0483,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Mallorca",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-23",
                    "opponent": "Real Oviedo",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 2.9168,
                  "aerialWon": 1.079,
                  "totalClearance_p90": 6.2957,
                  "totalTackle": 2.3233,
                  "defensive_actions": 2.7415
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.34849321842193604,
                    "model_output": 0.3485,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2909
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0422
                      },
                      {
                        "name": "touches",
                        "importance": 0.0304
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0294
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.8603,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4957
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0311
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0137
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0133
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0102
                        }
                      ],
                      "others": -0.0018,
                      "total": 0.3485,
                      "log_link": true,
                      "margin_base": -0.150447,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.858473
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.089171
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.040213
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.037469
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.028798
                        }
                      ],
                      "others_margin": -0.00493
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.5969444513320923,
                    "model_output": 0.5969,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2494
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0709
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0459
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0405
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 1.3831,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.8315
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0287
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0274
                        },
                        {
                          "name": "wonTackle",
                          "contribution": 0.0214
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0188
                        }
                      ],
                      "others": -0.051,
                      "total": 0.5969,
                      "log_link": true,
                      "margin_base": 0.324299,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.919365
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.050649
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.04619
                        },
                        {
                          "name": "wonTackle",
                          "margin": 0.034572
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.029448
                        }
                      ],
                      "others_margin": -0.081724
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.31594714522361755,
                    "model_output": 0.3159,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2138
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0741
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0462
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0368
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0292
                      }
                    ],
                    "decomposition": {
                      "base": 0.845,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5235
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0211
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0176
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0135
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0091
                        }
                      ],
                      "others": -0.0317,
                      "total": 0.3159,
                      "log_link": true,
                      "margin_base": -0.168402,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.966418
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.063455
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.052654
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.040578
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.02665
                        }
                      ],
                      "others_margin": -0.095389
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.0941436290740967,
                    "model_output": 1.0941,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2886
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1626
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0929
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0369
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.02
                      }
                    ],
                    "decomposition": {
                      "base": 3.4251,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.1722
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0759
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0646
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0566
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0463
                        }
                      ],
                      "others": -0.1578,
                      "total": 1.0941,
                      "log_link": true,
                      "margin_base": 1.231123,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.00565
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.062466
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.053447
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.044573
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.036332
                        }
                      ],
                      "others_margin": -0.134723
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.49566540122032166,
                    "model_output": 0.4957,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.1614
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1578
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0791
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0413
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 1.3852,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.8071
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0778
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0284
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0274
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": 0.0183
                        }
                      ],
                      "others": -0.0787,
                      "total": 0.4957,
                      "log_link": true,
                      "margin_base": 0.325816,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.873831
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.144509
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.055301
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.050601
                        },
                        {
                          "name": "aerial_dominance",
                          "margin": 0.032436
                        }
                      ],
                      "others_margin": -0.147668
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.17592862248420715,
                    "model_output": 0.1759,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0997
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0736
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.034
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0332
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0287
                      }
                    ],
                    "decomposition": {
                      "base": 0.4749,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2557
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0251
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0119
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0081
                        },
                        {
                          "name": "totalProgression",
                          "contribution": 0.007
                        }
                      ],
                      "others": -0.029,
                      "total": 0.1759,
                      "log_link": false,
                      "margin_base": 0.47494,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.255714
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.025066
                        },
                        {
                          "name": "duelLost",
                          "margin": 0.011933
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.008056
                        },
                        {
                          "name": "totalProgression",
                          "margin": 0.006991
                        }
                      ],
                      "others_margin": -0.029099
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.783601760864258,
                    "model_output": 6.7836,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalPass",
                        "importance": 0.0694
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0576
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.055
                      },
                      {
                        "name": "touches",
                        "importance": 0.0384
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 6.7904,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0269
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.026
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0109
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0105
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0103
                        }
                      ],
                      "others": -0.017,
                      "total": 6.7836,
                      "log_link": false,
                      "margin_base": 6.790384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.026876
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.025996
                        },
                        {
                          "name": "rating",
                          "margin": 0.010901
                        },
                        {
                          "name": "touches",
                          "margin": 0.010531
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.010259
                        }
                      ],
                      "others_margin": -0.017074
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 34,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0046, quality 0.625)",
              "stats": {
                "interceptions": 0.3501,
                "tackles": 0.5997,
                "tackles_won": 0.3174,
                "clearances": 1.0992,
                "aerial_won": 0.4979,
                "total_shots": 0.1767,
                "rating": 6.7836,
                "minutes": 19.33,
                "total_pass": 10.9755,
                "accurate_pass": 9.4563,
                "duels_won": 1.4605,
                "total_long_balls": 0.6727,
                "accurate_long_balls": 0.6727,
                "total_own_half_passes": 9.5149,
                "accurate_own_half_passes": 8.5601,
                "total_opp_half_passes": 1.4605,
                "accurate_opp_half_passes": 0.8962,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 16.7111,
                "possession_lost": 2.0834,
                "dispossessed": 0.0,
                "duels_lost": 0.5643,
                "aerial_lost": 0.2822,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.9548,
                "challenges_lost": 0.2822,
                "fouls": 0.0,
                "fouls_drawn": 0.2822,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0014,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.2393,
                "total_progression": 4.2224,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1767
              },
              "params": {
                "market_value_eur": 19400000,
                "quality_factor": 0.6251,
                "boost_factor": 1.0046,
                "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.0144)",
              "stats": {
                "interceptions": 0.3462,
                "tackles": 0.5997,
                "tackles_won": 0.3224,
                "clearances": 1.0992,
                "aerial_won": 0.4979,
                "total_shots": 0.1765,
                "rating": 6.7836,
                "minutes": 19.33,
                "total_pass": 10.9755,
                "accurate_pass": 9.4563,
                "duels_won": 1.4605,
                "total_long_balls": 0.6727,
                "accurate_long_balls": 0.6727,
                "total_own_half_passes": 9.5149,
                "accurate_own_half_passes": 8.5601,
                "total_opp_half_passes": 1.4605,
                "accurate_opp_half_passes": 0.8962,
                "crosses_total": 0.0024,
                "crosses_accurate": 0.0,
                "touches": 16.7111,
                "possession_lost": 2.0834,
                "dispossessed": 0.0,
                "duels_lost": 0.5643,
                "aerial_lost": 0.2822,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.9548,
                "challenges_lost": 0.2822,
                "fouls": 0.0072,
                "fouls_drawn": 0.2817,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0014,
                "shots_on_target": 0.0012,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.2393,
                "total_progression": 4.2224,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1767
              },
              "params": {
                "blend_weight": 0.0144,
                "history_matches": 34,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2148,
                "prior_reliability": 0.1733,
                "competition": "La Liga",
                "squad": "Villarreal"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.0,
                  "after": 0.0072
                },
                {
                  "stat": "wonTackle",
                  "before": 0.3174,
                  "after": 0.3224
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 19.3 to 14.3 expected minutes (appearance prob 0.23)",
              "stats": {
                "interceptions": 0.2564,
                "tackles": 0.4441,
                "tackles_won": 0.2388,
                "clearances": 0.814,
                "aerial_won": 0.3687,
                "total_shots": 0.1318,
                "rating": 6.7836,
                "minutes": 14.32,
                "total_pass": 8.1283,
                "accurate_pass": 7.0032,
                "duels_won": 1.0816,
                "total_long_balls": 0.4982,
                "accurate_long_balls": 0.4982,
                "total_own_half_passes": 7.0466,
                "accurate_own_half_passes": 6.3395,
                "total_opp_half_passes": 1.0816,
                "accurate_opp_half_passes": 0.6637,
                "crosses_total": 0.0018,
                "crosses_accurate": 0.0,
                "touches": 12.376,
                "possession_lost": 1.5429,
                "dispossessed": 0.0,
                "duels_lost": 0.4179,
                "aerial_lost": 0.2822,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7071,
                "challenges_lost": 0.2822,
                "fouls": 0.0053,
                "fouls_drawn": 0.2086,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.001,
                "shots_on_target": 0.0009,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.399,
                "total_progression": 3.127,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1309,
                "bench_appearance_probability": 0.232,
                "bench_expected_minutes": 14.32
              },
              "params": {
                "expected_minutes": 14.32,
                "projection_minutes": 19.33,
                "minutes_scale": 0.7406,
                "appearance_probability": 0.232
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.2564,
                "tackles": 0.4441,
                "tackles_won": 0.2388,
                "clearances": 0.814,
                "aerial_won": 0.3687,
                "total_shots": 0.1318,
                "rating": 6.7836,
                "minutes": 14.32,
                "total_pass": 8.1283,
                "accurate_pass": 7.0032,
                "duels_won": 1.0816,
                "total_long_balls": 0.4982,
                "accurate_long_balls": 0.4982,
                "total_own_half_passes": 7.0466,
                "accurate_own_half_passes": 6.3395,
                "total_opp_half_passes": 1.0816,
                "accurate_opp_half_passes": 0.6637,
                "crosses_total": 0.0018,
                "crosses_accurate": 0.0,
                "touches": 12.376,
                "possession_lost": 1.5429,
                "dispossessed": 0.0,
                "duels_lost": 0.4179,
                "aerial_lost": 0.2822,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7071,
                "challenges_lost": 0.2822,
                "fouls": 0.0053,
                "fouls_drawn": 0.2086,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.001,
                "shots_on_target": 0.0009,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.399,
                "total_progression": 3.127,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1309,
                "bench_appearance_probability": 0.232,
                "bench_expected_minutes": 14.32
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "interceptions": 0.2564,
                "tackles": 0.4441,
                "tackles_won": 0.2388,
                "clearances": 0.814,
                "aerial_won": 0.3687,
                "total_shots": 0.1318,
                "rating": 6.7836,
                "minutes": 14.32,
                "total_pass": 8.1283,
                "accurate_pass": 7.0032,
                "duels_won": 1.0816,
                "total_long_balls": 0.4982,
                "accurate_long_balls": 0.4982,
                "total_own_half_passes": 7.0466,
                "accurate_own_half_passes": 6.3395,
                "total_opp_half_passes": 1.0816,
                "accurate_opp_half_passes": 0.6637,
                "crosses_total": 0.0018,
                "crosses_accurate": 0.0,
                "touches": 12.376,
                "possession_lost": 1.5429,
                "dispossessed": 0.0,
                "duels_lost": 0.4179,
                "aerial_lost": 0.2822,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7071,
                "challenges_lost": 0.2822,
                "fouls": 0.0053,
                "fouls_drawn": 0.2086,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.001,
                "shots_on_target": 0.0009,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.399,
                "total_progression": 3.127,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1309,
                "bench_appearance_probability": 0.232,
                "bench_expected_minutes": 14.32,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.232,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 78.0)",
              "stats": {
                "interceptions": 0.2564,
                "tackles": 0.4441,
                "tackles_won": 0.2388,
                "clearances": 0.814,
                "aerial_won": 0.3687,
                "total_shots": 0.1318,
                "rating": 6.7836,
                "minutes": 14.32,
                "total_pass": 8.1283,
                "accurate_pass": 7.0032,
                "duels_won": 1.0816,
                "total_long_balls": 0.4982,
                "accurate_long_balls": 0.4982,
                "total_own_half_passes": 7.0466,
                "accurate_own_half_passes": 6.3395,
                "total_opp_half_passes": 1.0816,
                "accurate_opp_half_passes": 0.6637,
                "crosses_total": 0.0018,
                "crosses_accurate": 0.0,
                "touches": 12.376,
                "possession_lost": 1.5429,
                "dispossessed": 0.0,
                "duels_lost": 0.4179,
                "aerial_lost": 0.2822,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7071,
                "challenges_lost": 0.2822,
                "fouls": 0.0053,
                "fouls_drawn": 0.2086,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.001,
                "shots_on_target": 0.0009,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.399,
                "total_progression": 3.127,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1309,
                "bench_appearance_probability": 0.232,
                "bench_expected_minutes": 14.32,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 12,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2087,
                "fifa_rank": 1248.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            }
          ]
        },
        "Carlos Maciá": {
          "player_id": 2238900,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 16,
          "height": 194,
          "market_value": 14500000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0157,
            "assist_rate": 0.0313,
            "assists": 0,
            "expected_goals": 0.0164,
            "goal_rate": 0.0486,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.7021,
            "minutes": 23,
            "total_pass": 13,
            "accurate_pass": 12,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 7,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 18,
            "possession_lost": 2.7125,
            "dispossessed": 0.1207,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 6,
            "total_progression": 21,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.703,
            "bench_expected_minutes": 23.33,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.547,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0162,
            "projected_assists": 0,
            "assist_probability": 0.0155,
            "finishing_factor": 1.25,
            "creation_factor": 1.1307,
            "fifa_overall": 65.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 66,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0138,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 29,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 2,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 8,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 10,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 11,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.004,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 10,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 34,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0133,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 27,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 3,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083735,
              "match_date": "2026-05-24",
              "home_team": "Villarreal",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083224,
              "match_date": "2026-01-17",
              "home_team": "Real Betis",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 9,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083198,
              "match_date": "2026-01-03",
              "home_team": "Elche",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 14,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0071,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "tackles": 4,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083190,
              "match_date": "2025-12-21",
              "home_team": "Villarreal",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 15,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "clearances": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083159,
              "match_date": "2025-12-06",
              "home_team": "Villarreal",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Getafe",
              "stats": {
                "minutes": 39,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0612,
                "expected_assists": 0.0127,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 29,
                "accurate_pass": 26,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 7717,
            "combined_rank_score": 6124.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 11804.0,
            "fifa_overall": 65.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7021,
            "source_file": "data/player_rankings.csv",
            "player_name": "Carlos Maciá",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Luís Silva",
                  "ranking": 7712
                },
                {
                  "player_name": "Ivan Zlobin",
                  "ranking": 7713
                },
                {
                  "player_name": "Ferro",
                  "ranking": 7714
                },
                {
                  "player_name": "Liziero",
                  "ranking": 7715
                },
                {
                  "player_name": "Ianis Stoica",
                  "ranking": 7716
                }
              ],
              "lower": [
                {
                  "player_name": "Facundo Agustín Cáseres",
                  "ranking": 7718
                },
                {
                  "player_name": "Weverson",
                  "ranking": 7719
                },
                {
                  "player_name": "José Fontán",
                  "ranking": 7720
                },
                {
                  "player_name": "Dario Špikić",
                  "ranking": 7721
                },
                {
                  "player_name": "Miguel Maga",
                  "ranking": 7722
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.755,
          "history_matches": 10,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 10,
            "data_confidence": 0.755,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 23.33,
            "bench_appearance_prob": 0.703,
            "market_value_adjustment": 1.0069,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 24.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0333
            },
            "rationale": "Bench projection scaled from XGBoost M_service (10 historical appearances) to 23.3 expected mins (appearance prob 0.70); FBref playing time empirical prior: 2.0 sub appearances, 24.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.2192,
                "expected_assists": 0.0145,
                "assists": 0.0209,
                "assist_rate": 0.0209,
                "expected_goals": 0.0151,
                "goals": 0.0324,
                "goal_rate": 0.0324,
                "shots_on_target": 0.0526,
                "total_shots": 0.269,
                "rating": 6.7021,
                "minutes": 14.72,
                "total_pass": 8.8876,
                "accurate_pass": 7.7821,
                "duels_won": 1.1009,
                "total_long_balls": 0.6514,
                "accurate_long_balls": 0.3151,
                "total_own_half_passes": 3.5272,
                "accurate_own_half_passes": 3.2651,
                "total_opp_half_passes": 5.3604,
                "accurate_opp_half_passes": 4.517,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 12.241,
                "possession_lost": 1.7959,
                "dispossessed": 0.1199,
                "duels_lost": 1.0543,
                "aerial_won": 0.0,
                "aerial_lost": 0.1199,
                "interceptions": 0.4007,
                "tackles_won": 0.3808,
                "tackles": 0.8818,
                "clearances": 0.4848,
                "total_contest": 0.2484,
                "won_contest": 0.0532,
                "challenges_lost": 0.4463,
                "fouls": 0.1731,
                "fouls_drawn": 0.1659,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7515,
                "total_progression": 13.8053,
                "progressive_carries": 0.2044,
                "shots_off_target": 0.2164
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.1868,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1588,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1349,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1147,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.0975,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Atlético Madrid",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0829,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-01-17",
                    "opponent": "Real Betis",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.0704,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-01-03",
                    "opponent": "Elche",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0599,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2025-12-21",
                    "opponent": "FC Barcelona",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0509,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2025-12-06",
                    "opponent": "Getafe",
                    "minutes": 39.0,
                    "is_starting": false,
                    "weight": 0.0433,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 10.0,
                  "is_starting_11": 0.0,
                  "creative_index": 0.0033,
                  "totalShots": 0.0433,
                  "expectedGoals": 0.0026,
                  "expectedAssists": 0.0054,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.21924886107444763,
                    "model_output": 0.2192,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4307
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0654
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0394
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0348
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0167
                        }
                      ],
                      "others": -0.0883,
                      "total": 0.2192,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.656899
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.15213
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.104289
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.102141
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.052941
                        }
                      ],
                      "others_margin": -0.337641
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.014533409848809242,
                    "model_output": 0.0145,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0403
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0117
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0076
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0033
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0018
                        }
                      ],
                      "others": -0.0067,
                      "total": 0.0145,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.633143
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.297328
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.255832
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.135891
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.082981
                        }
                      ],
                      "others_margin": -0.371412
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.020947394892573357,
                    "model_output": 0.0209,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0227
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0123
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0093
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0072
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.003
                        }
                      ],
                      "others": -0.012,
                      "total": 0.0209,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.301372
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.210559
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.194519
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.181856
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.086638
                        }
                      ],
                      "others_margin": -0.453535
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.015064173378050327,
                    "model_output": 0.0151,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.042
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0183
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0079
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0031
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0013
                        }
                      ],
                      "others": -0.0063,
                      "total": 0.0151,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.591886
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.435166
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.268273
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.129919
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.057161
                        }
                      ],
                      "others_margin": -0.348112
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.032407816499471664,
                    "model_output": 0.0324,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0335
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0148
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0078
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0045
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0035
                        }
                      ],
                      "others": -0.0028,
                      "total": 0.0324,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.410694
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.254668
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.165364
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.109502
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.093262
                        }
                      ],
                      "others_margin": -0.086419
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.05261978879570961,
                    "model_output": 0.0526,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1588
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0535
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0223
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0158
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0037
                        }
                      ],
                      "others": -0.0193,
                      "total": 0.0526,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.667472
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.385903
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.217814
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.189027
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.049569
                        }
                      ],
                      "others_margin": -0.314104
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.2690463960170746,
                    "model_output": 0.269,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.318
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2289
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0475
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0349
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0237
                        }
                      ],
                      "others": -0.0749,
                      "total": 0.269,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.317966
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.228921
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.047462
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.034883
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.023718
                        }
                      ],
                      "others_margin": -0.074899
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.702101230621338,
                    "model_output": 6.7021,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0893
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0356
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0195
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0183
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0102
                        }
                      ],
                      "others": -0.0405,
                      "total": 6.7021,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.089299
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.03561
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.019501
                        },
                        {
                          "name": "rating",
                          "margin": -0.018333
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.010173
                        }
                      ],
                      "others_margin": -0.040385
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 10,
                  "role_matches": 9,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0069, quality 0.574)",
              "stats": {
                "key_pass": 0.2208,
                "expected_assists": 0.0146,
                "assists": 0.0211,
                "assist_rate": 0.0211,
                "expected_goals": 0.0152,
                "goals": 0.0326,
                "goal_rate": 0.0326,
                "shots_on_target": 0.053,
                "total_shots": 0.2709,
                "rating": 6.7021,
                "minutes": 14.72,
                "total_pass": 8.9489,
                "accurate_pass": 7.8358,
                "duels_won": 1.1085,
                "total_long_balls": 0.6559,
                "accurate_long_balls": 0.3173,
                "total_own_half_passes": 3.5515,
                "accurate_own_half_passes": 3.2876,
                "total_opp_half_passes": 5.3974,
                "accurate_opp_half_passes": 4.5482,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 12.3255,
                "possession_lost": 1.8083,
                "dispossessed": 0.1207,
                "duels_lost": 1.0616,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.4035,
                "tackles_won": 0.3834,
                "tackles": 0.8879,
                "clearances": 0.4881,
                "total_contest": 0.2501,
                "won_contest": 0.0536,
                "challenges_lost": 0.4494,
                "fouls": 0.1743,
                "fouls_drawn": 0.167,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7774,
                "total_progression": 13.9006,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.2179
              },
              "params": {
                "market_value_eur": 14500000,
                "quality_factor": 0.5737,
                "boost_factor": 1.0069,
                "reference_quality": 0.505,
                "history_matches": 10,
                "history_shrink": 0.3333,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0072)",
              "stats": {
                "key_pass": 0.2208,
                "expected_assists": 0.0146,
                "assists": 0.0209,
                "assist_rate": 0.0209,
                "expected_goals": 0.0152,
                "goals": 0.0324,
                "goal_rate": 0.0324,
                "shots_on_target": 0.0526,
                "total_shots": 0.2689,
                "rating": 6.7021,
                "minutes": 14.72,
                "total_pass": 8.9489,
                "accurate_pass": 7.8358,
                "duels_won": 1.1085,
                "total_long_balls": 0.6559,
                "accurate_long_balls": 0.3173,
                "total_own_half_passes": 3.5515,
                "accurate_own_half_passes": 3.2876,
                "total_opp_half_passes": 5.3974,
                "accurate_opp_half_passes": 4.5482,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 12.3255,
                "possession_lost": 1.8083,
                "dispossessed": 0.1207,
                "duels_lost": 1.0616,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.4029,
                "tackles_won": 0.3877,
                "tackles": 0.8879,
                "clearances": 0.4881,
                "total_contest": 0.2501,
                "won_contest": 0.0536,
                "challenges_lost": 0.4494,
                "fouls": 0.1754,
                "fouls_drawn": 0.1658,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7774,
                "total_progression": 13.9006,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.2179
              },
              "params": {
                "blend_weight": 0.0072,
                "history_matches": 10,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1636,
                "prior_reliability": 0.0333,
                "competition": "La Liga",
                "squad": "Villarreal"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 14.7 to 23.3 expected minutes (appearance prob 0.70)",
              "stats": {
                "key_pass": 0.3312,
                "expected_assists": 0.0219,
                "assists": 0.0313,
                "assist_rate": 0.0313,
                "expected_goals": 0.0228,
                "goals": 0.0486,
                "goal_rate": 0.0486,
                "shots_on_target": 0.0789,
                "total_shots": 0.4058,
                "rating": 6.7021,
                "minutes": 23.33,
                "total_pass": 13.4233,
                "accurate_pass": 11.7537,
                "duels_won": 1.6627,
                "total_long_balls": 0.9839,
                "accurate_long_balls": 0.476,
                "total_own_half_passes": 5.3272,
                "accurate_own_half_passes": 4.9314,
                "total_opp_half_passes": 8.0961,
                "accurate_opp_half_passes": 6.8223,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.4883,
                "possession_lost": 2.7125,
                "dispossessed": 0.1207,
                "duels_lost": 1.5924,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.6043,
                "tackles_won": 0.5816,
                "tackles": 1.3318,
                "clearances": 0.7321,
                "total_contest": 0.3751,
                "won_contest": 0.0804,
                "challenges_lost": 0.4494,
                "fouls": 0.2631,
                "fouls_drawn": 0.2487,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6661,
                "total_progression": 20.8509,
                "progressive_carries": 0.3087,
                "shots_off_target": 0.3269,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.33
              },
              "params": {
                "expected_minutes": 23.33,
                "projection_minutes": 14.72,
                "minutes_scale": 1.5,
                "appearance_probability": 0.703
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.3312,
                "expected_assists": 0.0219,
                "assists": 0.0313,
                "assist_rate": 0.0313,
                "expected_goals": 0.0228,
                "goals": 0.0486,
                "goal_rate": 0.0486,
                "shots_on_target": 0.0789,
                "total_shots": 0.4058,
                "rating": 6.7021,
                "minutes": 23.33,
                "total_pass": 13.4233,
                "accurate_pass": 11.7537,
                "duels_won": 1.6627,
                "total_long_balls": 0.9839,
                "accurate_long_balls": 0.476,
                "total_own_half_passes": 5.3272,
                "accurate_own_half_passes": 4.9314,
                "total_opp_half_passes": 8.0961,
                "accurate_opp_half_passes": 6.8223,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.4883,
                "possession_lost": 2.7125,
                "dispossessed": 0.1207,
                "duels_lost": 1.5924,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.6043,
                "tackles_won": 0.5816,
                "tackles": 1.3318,
                "clearances": 0.7321,
                "total_contest": 0.3751,
                "won_contest": 0.0804,
                "challenges_lost": 0.4494,
                "fouls": 0.2631,
                "fouls_drawn": 0.2487,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6661,
                "total_progression": 20.8509,
                "progressive_carries": 0.3087,
                "shots_off_target": 0.3269,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.33
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.3312,
                "expected_assists": 0.0219,
                "assist_rate": 0.0313,
                "assists": 0,
                "expected_goals": 0.0228,
                "goal_rate": 0.0486,
                "goals": 0,
                "shots_on_target": 0.0789,
                "total_shots": 0.4058,
                "rating": 6.7021,
                "minutes": 23.33,
                "total_pass": 13.4233,
                "accurate_pass": 11.7537,
                "duels_won": 1.6627,
                "total_long_balls": 0.9839,
                "accurate_long_balls": 0.476,
                "total_own_half_passes": 5.3272,
                "accurate_own_half_passes": 4.9314,
                "total_opp_half_passes": 8.0961,
                "accurate_opp_half_passes": 6.8223,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.4883,
                "possession_lost": 2.7125,
                "dispossessed": 0.1207,
                "duels_lost": 1.5924,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.6043,
                "tackles_won": 0.5816,
                "tackles": 1.3318,
                "clearances": 0.7321,
                "total_contest": 0.3751,
                "won_contest": 0.0804,
                "challenges_lost": 0.4494,
                "fouls": 0.2631,
                "fouls_drawn": 0.2487,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6661,
                "total_progression": 20.8509,
                "progressive_carries": 0.3087,
                "shots_off_target": 0.3269,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.33,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "key_pass": 0.3312,
                "expected_assists": 0.0157,
                "assist_rate": 0.0313,
                "assists": 0,
                "expected_goals": 0.0164,
                "goal_rate": 0.0486,
                "goals": 0,
                "shots_on_target": 0.0789,
                "total_shots": 0.4058,
                "rating": 6.7021,
                "minutes": 23.33,
                "total_pass": 13.4233,
                "accurate_pass": 11.7537,
                "duels_won": 1.6627,
                "total_long_balls": 0.9839,
                "accurate_long_balls": 0.476,
                "total_own_half_passes": 5.3272,
                "accurate_own_half_passes": 4.9314,
                "total_opp_half_passes": 8.0961,
                "accurate_opp_half_passes": 6.8223,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.4883,
                "possession_lost": 2.7125,
                "dispossessed": 0.1207,
                "duels_lost": 1.5924,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.6043,
                "tackles_won": 0.5816,
                "tackles": 1.3318,
                "clearances": 0.7321,
                "total_contest": 0.3751,
                "won_contest": 0.0804,
                "challenges_lost": 0.4494,
                "fouls": 0.2631,
                "fouls_drawn": 0.2487,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6661,
                "total_progression": 20.8509,
                "progressive_carries": 0.3087,
                "shots_off_target": 0.3269,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.33,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1307
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "scoreline_reset": true,
                "appearance_weight": 0.703
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0228,
                  "after": 0.0164
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0219,
                  "after": 0.0157
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 65.0)",
              "stats": {
                "key_pass": 0.3312,
                "expected_assists": 0.0157,
                "assist_rate": 0.0313,
                "assists": 0,
                "expected_goals": 0.0164,
                "goal_rate": 0.0486,
                "goals": 0,
                "shots_on_target": 0.0789,
                "total_shots": 0.4058,
                "rating": 6.7021,
                "minutes": 23.33,
                "total_pass": 13.4233,
                "accurate_pass": 11.7537,
                "duels_won": 1.6627,
                "total_long_balls": 0.9839,
                "accurate_long_balls": 0.476,
                "total_own_half_passes": 5.3272,
                "accurate_own_half_passes": 4.9314,
                "total_opp_half_passes": 8.0961,
                "accurate_opp_half_passes": 6.8223,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.4883,
                "possession_lost": 2.7125,
                "dispossessed": 0.1207,
                "duels_lost": 1.5924,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.6043,
                "tackles_won": 0.5816,
                "tackles": 1.3318,
                "clearances": 0.7321,
                "total_contest": 0.3751,
                "won_contest": 0.0804,
                "challenges_lost": 0.4494,
                "fouls": 0.2631,
                "fouls_drawn": 0.2487,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6661,
                "total_progression": 20.8509,
                "progressive_carries": 0.3087,
                "shots_off_target": 0.3269,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.33,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1307,
                "fifa_overall": 65.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": 7717,
                "fifa_rank": 11804.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 65.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.3312,
                "expected_assists": 0.0157,
                "assist_rate": 0.0313,
                "assists": 0,
                "expected_goals": 0.0164,
                "goal_rate": 0.0486,
                "goals": 0,
                "shots_on_target": 0.0789,
                "total_shots": 0.4058,
                "rating": 6.7021,
                "minutes": 23.33,
                "total_pass": 13.4233,
                "accurate_pass": 11.7537,
                "duels_won": 1.6627,
                "total_long_balls": 0.9839,
                "accurate_long_balls": 0.476,
                "total_own_half_passes": 5.3272,
                "accurate_own_half_passes": 4.9314,
                "total_opp_half_passes": 8.0961,
                "accurate_opp_half_passes": 6.8223,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.4883,
                "possession_lost": 2.7125,
                "dispossessed": 0.1207,
                "duels_lost": 1.5924,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.6043,
                "tackles_won": 0.5816,
                "tackles": 1.3318,
                "clearances": 0.7321,
                "total_contest": 0.3751,
                "won_contest": 0.0804,
                "challenges_lost": 0.4494,
                "fouls": 0.2631,
                "fouls_drawn": 0.2487,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6661,
                "total_progression": 20.8509,
                "progressive_carries": 0.3087,
                "shots_off_target": 0.3269,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.33,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0162,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1307,
                "fifa_overall": 65.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0162,
                "goal_rate": 0.0486,
                "scorer_weight": 0.0205,
                "squad_weight_total": 1.5114,
                "weight_share": 0.0136,
                "finishing_factor": 1.25,
                "appearance_weight": 0.703,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.3312,
                "expected_assists": 0.0157,
                "assist_rate": 0.0313,
                "assists": 0,
                "expected_goals": 0.0164,
                "goal_rate": 0.0486,
                "goals": 0,
                "shots_on_target": 0.0789,
                "total_shots": 0.4058,
                "rating": 6.7021,
                "minutes": 23.33,
                "total_pass": 13.4233,
                "accurate_pass": 11.7537,
                "duels_won": 1.6627,
                "total_long_balls": 0.9839,
                "accurate_long_balls": 0.476,
                "total_own_half_passes": 5.3272,
                "accurate_own_half_passes": 4.9314,
                "total_opp_half_passes": 8.0961,
                "accurate_opp_half_passes": 6.8223,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.4883,
                "possession_lost": 2.7125,
                "dispossessed": 0.1207,
                "duels_lost": 1.5924,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.6043,
                "tackles_won": 0.5816,
                "tackles": 1.3318,
                "clearances": 0.7321,
                "total_contest": 0.3751,
                "won_contest": 0.0804,
                "challenges_lost": 0.4494,
                "fouls": 0.2631,
                "fouls_drawn": 0.2487,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6661,
                "total_progression": 20.8509,
                "progressive_carries": 0.3087,
                "shots_off_target": 0.3269,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.33,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0162,
                "projected_assists": 0,
                "assist_probability": 0.0155,
                "finishing_factor": 1.25,
                "creation_factor": 1.1307,
                "fifa_overall": 65.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0155,
                "assist_rate": 0.0313,
                "provider_weight": 0.0178,
                "squad_weight_total": 1.1097,
                "weight_share": 0.016,
                "creation_factor": 1.1307,
                "appearance_weight": 0.703,
                "weight_rank": 11,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Nathan-Dylan Saliba": {
          "player_id": 1093229,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 24,
          "height": 173,
          "market_value": 13800000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0134,
            "assist_rate": 0.0268,
            "assists": 0,
            "expected_goals": 0.0171,
            "goal_rate": 0.0343,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.7788,
            "minutes": 22,
            "total_pass": 22,
            "accurate_pass": 20,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 7,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 14,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 28,
            "possession_lost": 3.3992,
            "dispossessed": 0.8995,
            "duels_lost": 3,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 10,
            "total_progression": 41,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.522,
            "bench_expected_minutes": 22.48,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.547,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0168,
            "projected_assists": 0,
            "assist_probability": 0.0132,
            "finishing_factor": 1.0255,
            "creation_factor": 1.0213,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 24,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0299,
                "expected_assists": 0.0158,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 13,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 34,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0196,
                "expected_assists": 0.0266,
                "total_shots": 1,
                "total_pass": 31,
                "accurate_pass": 28,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1143,
                "expected_assists": 0.0184,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 39,
                "accurate_pass": 36,
                "tackles": 5,
                "tackles_won": 2,
                "interceptions": 3,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 80,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0195,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 38,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "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": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 36,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0253,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 32,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1151,
                "expected_assists": 0.1364,
                "total_shots": 1,
                "total_pass": 73,
                "accurate_pass": 67,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 3,
                "interceptions": 3,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 10,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4406,
            "combined_rank_score": 2430.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4706.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7788,
            "source_file": "data/player_rankings.csv",
            "player_name": "Nathan-Dylan Saliba",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Francés",
                  "ranking": 4401
                },
                {
                  "player_name": "Florin Tănase",
                  "ranking": 4402
                },
                {
                  "player_name": "Víctor García",
                  "ranking": 4403
                },
                {
                  "player_name": "Kings Kangwa",
                  "ranking": 4404
                },
                {
                  "player_name": "Soualiho Meïté",
                  "ranking": 4405
                }
              ],
              "lower": [
                {
                  "player_name": "Luca Koleosho",
                  "ranking": 4407
                },
                {
                  "player_name": "Anastasios Bakasetas",
                  "ranking": 4408
                },
                {
                  "player_name": "Rick van Drongelen",
                  "ranking": 4409
                },
                {
                  "player_name": "Rodrigo Echeverría",
                  "ranking": 4410
                },
                {
                  "player_name": "Romaine Mundle",
                  "ranking": 4411
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.625,
          "history_matches": 6,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 6,
            "data_confidence": 0.625,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.48122902993721,
            "bench_appearance_prob": 0.5218740468153277,
            "market_value_adjustment": 1.0083,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (6 historical appearances) to 22.5 expected mins (appearance prob 0.52)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.3941,
                "expected_assists": 0.0289,
                "assists": 0.0307,
                "assist_rate": 0.0307,
                "expected_goals": 0.0369,
                "goals": 0.0394,
                "goal_rate": 0.0394,
                "shots_on_target": 0.1556,
                "total_shots": 0.4567,
                "rating": 6.7788,
                "minutes": 26.0,
                "total_pass": 25.688,
                "accurate_pass": 23.2925,
                "duels_won": 1.0,
                "total_long_balls": 0.6113,
                "accurate_long_balls": 0.3304,
                "total_own_half_passes": 7.8902,
                "accurate_own_half_passes": 7.5598,
                "total_opp_half_passes": 17.7979,
                "accurate_opp_half_passes": 15.7328,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 31.621,
                "possession_lost": 3.8989,
                "dispossessed": 0.8921,
                "duels_lost": 3.8834,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.3304,
                "total_contest": 0.2809,
                "won_contest": 0.0,
                "challenges_lost": 1.1079,
                "fouls": 1.6025,
                "fouls_drawn": 1.0,
                "blocks": 0.3887,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.4947,
                "total_progression": 47.4374,
                "progressive_carries": 0.3887,
                "shots_off_target": 0.3011
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.2408,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.2047,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.174,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.1479,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 36.0,
                    "is_starting": false,
                    "weight": 0.1257,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1069,
                    "rating": 7.7
                  }
                ],
                "feature_row": {
                  "history_matches": 6.0,
                  "is_starting_11": 0.0,
                  "creative_index": 0.0626,
                  "totalShots": 1.0744,
                  "expectedGoals": 0.0434,
                  "expectedAssists": 0.0331,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.3940896689891815,
                    "model_output": 0.3941,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3947
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.05
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0361
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0312
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.0193
                        }
                      ],
                      "others": 0.0309,
                      "total": 0.3941,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.582123
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.105362
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.083601
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.078457
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.051843
                        }
                      ],
                      "others_margin": 0.081717
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.02887754887342453,
                    "model_output": 0.0289,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0371
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0087
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.004
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0032
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0016,
                      "total": 0.0289,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.565201
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.196813
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.104342
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.093179
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.0743
                        }
                      ],
                      "others_margin": -0.056137
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.030700264498591423,
                    "model_output": 0.0307,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0218
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.012
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0069
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0044
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0019
                        }
                      ],
                      "others": -0.0097,
                      "total": 0.0307,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.286715
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.201202
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.137006
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.098503
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.046246
                        }
                      ],
                      "others_margin": -0.276548
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.036912981420755386,
                    "model_output": 0.0369,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0386
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0075
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0036
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0028
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0019
                        }
                      ],
                      "others": -0.0065,
                      "total": 0.0369,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.529113
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.146072
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.079048
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.066034
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.043918
                        }
                      ],
                      "others_margin": -0.157924
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.03937075659632683,
                    "model_output": 0.0394,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0335
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.007
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0061
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0061
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0049
                        }
                      ],
                      "others": -0.0145,
                      "total": 0.0394,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.41074
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.112355
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.109261
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.109085
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.086373
                        }
                      ],
                      "others_margin": -0.315642
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.15559719502925873,
                    "model_output": 0.1556,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1382
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0205
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0151
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0115
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0095
                        }
                      ],
                      "others": -0.0396,
                      "total": 0.1556,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.551445
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.103585
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.075228
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.057907
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.047431
                        }
                      ],
                      "others_margin": -0.2271
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.45672473311424255,
                    "model_output": 0.4567,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4019
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.035
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0348
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0251
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0239
                        }
                      ],
                      "others": -0.1591,
                      "total": 0.4567,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.401912
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.035006
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.034803
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.025131
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.023872
                        }
                      ],
                      "others_margin": -0.159065
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.778803825378418,
                    "model_output": 6.7788,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0986
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0889
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0329
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0275
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0239
                        }
                      ],
                      "others": -0.0311,
                      "total": 6.7788,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.098573
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.088858
                        },
                        {
                          "name": "rating",
                          "margin": -0.032855
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.027549
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.023884
                        }
                      ],
                      "others_margin": -0.031011
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 6,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0083, quality 0.566)",
              "stats": {
                "key_pass": 0.3974,
                "expected_assists": 0.0291,
                "assists": 0.031,
                "assist_rate": 0.031,
                "expected_goals": 0.0372,
                "goals": 0.0397,
                "goal_rate": 0.0397,
                "shots_on_target": 0.1569,
                "total_shots": 0.4605,
                "rating": 6.7788,
                "minutes": 26.0,
                "total_pass": 25.9012,
                "accurate_pass": 23.4858,
                "duels_won": 1.0083,
                "total_long_balls": 0.6164,
                "accurate_long_balls": 0.3331,
                "total_own_half_passes": 7.9557,
                "accurate_own_half_passes": 7.6225,
                "total_opp_half_passes": 17.9456,
                "accurate_opp_half_passes": 15.8634,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 31.8835,
                "possession_lost": 3.9313,
                "dispossessed": 0.8995,
                "duels_lost": 3.9156,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.3331,
                "total_contest": 0.2832,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.6158,
                "fouls_drawn": 1.0083,
                "blocks": 0.3919,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.5901,
                "total_progression": 47.8311,
                "progressive_carries": 0.3919,
                "shots_off_target": 0.3036
              },
              "params": {
                "market_value_eur": 13800000,
                "quality_factor": 0.566,
                "boost_factor": 1.0083,
                "reference_quality": 0.505,
                "history_matches": 6,
                "history_shrink": 0.4545,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 26.0 to 22.5 expected minutes (appearance prob 0.52)",
              "stats": {
                "key_pass": 0.3436,
                "expected_assists": 0.0252,
                "assists": 0.0268,
                "assist_rate": 0.0268,
                "expected_goals": 0.0322,
                "goals": 0.0343,
                "goal_rate": 0.0343,
                "shots_on_target": 0.1357,
                "total_shots": 0.3982,
                "rating": 6.7788,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2625,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48
              },
              "params": {
                "expected_minutes": 22.48,
                "projection_minutes": 26.0,
                "minutes_scale": 0.8647,
                "appearance_probability": 0.522
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.3436,
                "expected_assists": 0.0252,
                "assists": 0.0268,
                "assist_rate": 0.0268,
                "expected_goals": 0.0322,
                "goals": 0.0343,
                "goal_rate": 0.0343,
                "shots_on_target": 0.1357,
                "total_shots": 0.3982,
                "rating": 6.7788,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2625,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.3436,
                "expected_assists": 0.0252,
                "assist_rate": 0.0268,
                "assists": 0,
                "expected_goals": 0.0322,
                "goal_rate": 0.0343,
                "goals": 0,
                "shots_on_target": 0.1357,
                "total_shots": 0.3982,
                "rating": 6.7788,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2625,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "key_pass": 0.3436,
                "expected_assists": 0.0134,
                "assist_rate": 0.0268,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0343,
                "goals": 0,
                "shots_on_target": 0.1357,
                "total_shots": 0.3982,
                "rating": 6.7788,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2625,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "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.0255,
                "creation_factor": 1.0213
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "scoreline_reset": true,
                "appearance_weight": 0.522
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0322,
                  "after": 0.0171
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0252,
                  "after": 0.0134
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 71.0)",
              "stats": {
                "key_pass": 0.3436,
                "expected_assists": 0.0134,
                "assist_rate": 0.0268,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0343,
                "goals": 0,
                "shots_on_target": 0.1357,
                "total_shots": 0.3982,
                "rating": 6.7788,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2625,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "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.0255,
                "creation_factor": 1.0213,
                "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": 4406,
                "fifa_rank": 4706.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.3436,
                "expected_assists": 0.0134,
                "assist_rate": 0.0268,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0343,
                "goals": 0,
                "shots_on_target": 0.1357,
                "total_shots": 0.3982,
                "rating": 6.7788,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2625,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0168,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0255,
                "creation_factor": 1.0213,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0168,
                "goal_rate": 0.0343,
                "scorer_weight": 0.0175,
                "squad_weight_total": 1.5114,
                "weight_share": 0.0116,
                "finishing_factor": 1.0255,
                "appearance_weight": 0.522,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.3436,
                "expected_assists": 0.0134,
                "assist_rate": 0.0268,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0343,
                "goals": 0,
                "shots_on_target": 0.1357,
                "total_shots": 0.3982,
                "rating": 6.7788,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2625,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0168,
                "projected_assists": 0,
                "assist_probability": 0.0132,
                "finishing_factor": 1.0255,
                "creation_factor": 1.0213,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0132,
                "assist_rate": 0.0268,
                "provider_weight": 0.0137,
                "squad_weight_total": 1.1097,
                "weight_share": 0.0123,
                "creation_factor": 1.0213,
                "appearance_weight": 0.522,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Georges Mikautadze": {
          "player_id": 1009372,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 176,
          "market_value": 43000000,
          "stats": {
            "expected_goals": 0.1588,
            "goal_rate": 0.1535,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0483,
            "key_pass": 1,
            "rating": 6.7425,
            "minutes": 27,
            "total_pass": 9,
            "accurate_pass": 8,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 6,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 15,
            "possession_lost": 3.6191,
            "dispossessed": 0.4773,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "assist_rate": 0.0228,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.2877,
            "offsides": 0,
            "ball_carries": 6,
            "total_progression": 25,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.363,
            "bench_expected_minutes": 26.71,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.547,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 24,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0181,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 6,
                "interceptions": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 23,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1889,
                "expected_assists": 0.0446,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "key_pass": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 23,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.6685,
                "expected_assists": 0.0025,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 7,
                "accurate_pass": 7,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 27,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4251,
                "expected_assists": 0.5678,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 9,
                "key_pass": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5212,
                "expected_assists": 0.0343,
                "total_shots": 4,
                "shots_on_target": 4,
                "total_pass": 34,
                "accurate_pass": 27,
                "key_pass": 2,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 28,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1751,
                "expected_assists": 0.0337,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 16,
                "accurate_pass": 13,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 82,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.215,
                "expected_assists": 0.1187,
                "total_shots": 1,
                "total_pass": 24,
                "accurate_pass": 20,
                "key_pass": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 79,
                "rating": 7.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.7893,
                "expected_assists": 0.2452,
                "total_shots": 5,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 21,
                "accurate_pass": 17,
                "key_pass": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.2206,
                "expected_assists": 0.4077,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 28,
                "accurate_pass": 25,
                "key_pass": 2,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083735,
              "match_date": "2026-05-24",
              "home_team": "Villarreal",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 89,
                "rating": 8.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.0145,
                "expected_assists": 0.023,
                "total_shots": 3,
                "shots_on_target": 3,
                "total_pass": 21,
                "accurate_pass": 19,
                "key_pass": 2,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1648,
            "combined_rank_score": 667.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 371.0,
            "sofascore_rating": 6.9688,
            "sofascore_appearances": 32.0,
            "fifa_rank": 964.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7425,
            "source_file": "data/player_rankings.csv",
            "player_name": "Georges Mikautadze",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Andrew Robertson",
                  "ranking": 1643
                },
                {
                  "player_name": "Dango Ouattara",
                  "ranking": 1644
                },
                {
                  "player_name": "Aziz Kholmurodov",
                  "ranking": 1645
                },
                {
                  "player_name": "Uroš Kojić",
                  "ranking": 1646
                },
                {
                  "player_name": "Josh Risdon",
                  "ranking": 1647
                }
              ],
              "lower": [
                {
                  "player_name": "Trai Hume",
                  "ranking": 1649
                },
                {
                  "player_name": "Alfonso Pedraza",
                  "ranking": 1650
                },
                {
                  "player_name": "Lukáš Provod",
                  "ranking": 1651
                },
                {
                  "player_name": "Isi Palazón",
                  "ranking": 1652
                },
                {
                  "player_name": "Walter Benítez",
                  "ranking": 1653
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.778,
          "history_matches": 41,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 41,
            "data_confidence": 0.778,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 26.710848356448757,
            "bench_appearance_prob": 0.363,
            "market_value_adjustment": 1.0095,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.3571428571428571,
              "assists_per90": 0.3571428571428571,
              "prior_reliability": 0.1867
            },
            "rationale": "Bench projection scaled from XGBoost F_service (41 historical appearances) to 26.7 expected mins (appearance prob 0.36); 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.1479,
                "goals": 0.1435,
                "goal_rate": 0.1435,
                "shots_on_target": 0.4444,
                "total_shots": 1.1162,
                "expected_assists": 0.045,
                "key_pass": 0.5365,
                "rating": 6.7425,
                "minutes": 25.11,
                "total_pass": 8.2405,
                "accurate_pass": 7.1472,
                "duels_won": 1.1102,
                "total_long_balls": 0.3068,
                "accurate_long_balls": 0.2046,
                "total_opp_half_passes": 5.9893,
                "accurate_opp_half_passes": 5.1795,
                "crosses_total": 0.3668,
                "crosses_accurate": 0.0742,
                "touches": 13.7075,
                "possession_lost": 3.3702,
                "dispossessed": 0.4728,
                "duels_lost": 1.6911,
                "aerial_lost": 0.3081,
                "total_contest": 1.3849,
                "won_contest": 0.5378,
                "ball_recovery": 0.7223,
                "challenges_lost": 0.0631,
                "fouls": 0.0738,
                "fouls_drawn": 0.4814,
                "assists": 0.0202,
                "assist_rate": 0.0202,
                "interceptions": 0.2059,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0536,
                "blocks": 0.0,
                "big_chances_created": 0.1906,
                "big_chances_missed": 0.2578,
                "xgot": 0.268,
                "offsides": 0.0,
                "ball_carries": 5.4551,
                "total_progression": 22.969,
                "progressive_carries": 1.2354,
                "shots_off_target": 0.6717
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.1502,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1277,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.0922,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0666,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 79.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Atlético Madrid",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 8.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.4066,
                  "totalOppositionHalfPasses": 10.6587,
                  "accurateOppositionHalfPasses": 8.9859,
                  "accuratePass": 11.9696,
                  "totalShots": 1.9776
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.147883802652359,
                    "model_output": 0.1479,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.09
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0252
                        },
                        {
                          "name": "goals",
                          "contribution": 0.007
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": 0.0058
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0054
                        }
                      ],
                      "others": 0.0074,
                      "total": 0.1479,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.60677
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.209733
                        },
                        {
                          "name": "goals",
                          "margin": 0.051484
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": 0.040868
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.037513
                        }
                      ],
                      "others_margin": 0.050804
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.1435212939977646,
                    "model_output": 0.1435,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0908
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0164
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0085
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0065
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0061
                        }
                      ],
                      "others": 0.0067,
                      "total": 0.1435,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.595353
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.136924
                        },
                        {
                          "name": "goals",
                          "margin": 0.064158
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.04687
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.043757
                        }
                      ],
                      "others_margin": 0.04787
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.44443467259407043,
                    "model_output": 0.4444,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2212
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0424
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0221
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0228
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0214
                        }
                      ],
                      "others": 0.0207,
                      "total": 0.4444,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.531805
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.126304
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.060092
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.058322
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.051883
                        }
                      ],
                      "others_margin": 0.047514
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.1161818504333496,
                    "model_output": 1.1162,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.596
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.145
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0571
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": 0.0491
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0484
                        }
                      ],
                      "others": 0.0319,
                      "total": 1.1162,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.59603
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.144999
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.057139
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": 0.049058
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.048392
                        }
                      ],
                      "others_margin": 0.031874
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04495745897293091,
                    "model_output": 0.045,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0197
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0042
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0041
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0042
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0029
                        }
                      ],
                      "others": -0.0009,
                      "total": 0.045,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.364475
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.098642
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.096255
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.088998
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.060759
                        }
                      ],
                      "others_margin": -0.02145
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.5364845991134644,
                    "model_output": 0.5365,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2243
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0579
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0257
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0224
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0217
                        }
                      ],
                      "others": 0.0474,
                      "total": 0.5365,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.399857
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.119509
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.051226
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.044886
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.04335
                        }
                      ],
                      "others_margin": 0.092307
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.742539405822754,
                    "model_output": 6.7425,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1265
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0435
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0186
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0183
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0134
                        }
                      ],
                      "others": 0.0069,
                      "total": 6.7425,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.126521
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.043502
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.01865
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.018263
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.01337
                        }
                      ],
                      "others_margin": 0.006992
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 41,
                  "role_matches": 14,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0095, quality 0.796)",
              "stats": {
                "expected_goals": 0.1493,
                "goals": 0.1449,
                "goal_rate": 0.1449,
                "shots_on_target": 0.4487,
                "total_shots": 1.1268,
                "expected_assists": 0.0454,
                "key_pass": 0.5416,
                "rating": 6.7425,
                "minutes": 25.11,
                "total_pass": 8.3188,
                "accurate_pass": 7.2151,
                "duels_won": 1.1207,
                "total_long_balls": 0.3097,
                "accurate_long_balls": 0.2065,
                "total_opp_half_passes": 6.0462,
                "accurate_opp_half_passes": 5.2287,
                "crosses_total": 0.3703,
                "crosses_accurate": 0.0749,
                "touches": 13.8377,
                "possession_lost": 3.4022,
                "dispossessed": 0.4773,
                "duels_lost": 1.7072,
                "aerial_lost": 0.311,
                "total_contest": 1.3981,
                "won_contest": 0.5429,
                "ball_recovery": 0.7292,
                "challenges_lost": 0.0637,
                "fouls": 0.0745,
                "fouls_drawn": 0.486,
                "assists": 0.0204,
                "assist_rate": 0.0204,
                "interceptions": 0.2079,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0541,
                "blocks": 0.0,
                "big_chances_created": 0.1924,
                "big_chances_missed": 0.2602,
                "xgot": 0.2705,
                "offsides": 0.0,
                "ball_carries": 5.5069,
                "total_progression": 23.1872,
                "progressive_carries": 1.2471,
                "shots_off_target": 0.6781
              },
              "params": {
                "market_value_eur": 43000000,
                "quality_factor": 0.7957,
                "boost_factor": 1.0095,
                "reference_quality": 0.505,
                "history_matches": 41,
                "history_shrink": 0.1087,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0132)",
              "stats": {
                "expected_goals": 0.1493,
                "goals": 0.1443,
                "goal_rate": 0.1443,
                "shots_on_target": 0.4481,
                "total_shots": 1.1252,
                "expected_assists": 0.0454,
                "key_pass": 0.5416,
                "rating": 6.7425,
                "minutes": 25.11,
                "total_pass": 8.3188,
                "accurate_pass": 7.2151,
                "duels_won": 1.1207,
                "total_long_balls": 0.3097,
                "accurate_long_balls": 0.2065,
                "total_opp_half_passes": 6.0462,
                "accurate_opp_half_passes": 5.2287,
                "crosses_total": 0.368,
                "crosses_accurate": 0.0749,
                "touches": 13.8377,
                "possession_lost": 3.4022,
                "dispossessed": 0.4773,
                "duels_lost": 1.7072,
                "aerial_lost": 0.311,
                "total_contest": 1.3981,
                "won_contest": 0.5429,
                "ball_recovery": 0.7292,
                "challenges_lost": 0.0637,
                "fouls": 0.0761,
                "fouls_drawn": 0.4822,
                "assists": 0.0214,
                "assist_rate": 0.0214,
                "interceptions": 0.2052,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0541,
                "blocks": 0.0,
                "big_chances_created": 0.1924,
                "big_chances_missed": 0.2602,
                "xgot": 0.2705,
                "offsides": 0.0013,
                "ball_carries": 5.5069,
                "total_progression": 23.1872,
                "progressive_carries": 1.2471,
                "shots_off_target": 0.6781
              },
              "params": {
                "blend_weight": 0.0132,
                "history_matches": 41,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.279,
                "prior_reliability": 0.1867,
                "competition": "La Liga",
                "squad": "Villarreal"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 25.1 to 26.7 expected minutes (appearance prob 0.36)",
              "stats": {
                "expected_goals": 0.1588,
                "goals": 0.1535,
                "goal_rate": 0.1535,
                "shots_on_target": 0.4767,
                "total_shots": 1.198,
                "expected_assists": 0.0483,
                "key_pass": 0.5761,
                "rating": 6.7425,
                "minutes": 26.71,
                "total_pass": 8.8492,
                "accurate_pass": 7.6751,
                "duels_won": 1.1921,
                "total_long_balls": 0.3294,
                "accurate_long_balls": 0.2197,
                "total_opp_half_passes": 6.4317,
                "accurate_opp_half_passes": 5.562,
                "crosses_total": 0.3915,
                "crosses_accurate": 0.0797,
                "touches": 14.7199,
                "possession_lost": 3.6191,
                "dispossessed": 0.4773,
                "duels_lost": 1.816,
                "aerial_lost": 0.311,
                "total_contest": 1.4872,
                "won_contest": 0.5775,
                "ball_recovery": 0.7757,
                "challenges_lost": 0.0637,
                "fouls": 0.081,
                "fouls_drawn": 0.5129,
                "assists": 0.0228,
                "assist_rate": 0.0228,
                "interceptions": 0.2183,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0575,
                "blocks": 0.0,
                "big_chances_created": 0.2047,
                "big_chances_missed": 0.2768,
                "xgot": 0.2877,
                "offsides": 0.0013,
                "ball_carries": 5.858,
                "total_progression": 24.6655,
                "progressive_carries": 1.3266,
                "shots_off_target": 0.7213,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.71
              },
              "params": {
                "expected_minutes": 26.71,
                "projection_minutes": 25.11,
                "minutes_scale": 1.0638,
                "appearance_probability": 0.363
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1588,
                "goals": 0.1535,
                "goal_rate": 0.1535,
                "shots_on_target": 0.4767,
                "total_shots": 1.198,
                "expected_assists": 0.0483,
                "key_pass": 0.5761,
                "rating": 6.7425,
                "minutes": 26.71,
                "total_pass": 8.8492,
                "accurate_pass": 7.6751,
                "duels_won": 1.1921,
                "total_long_balls": 0.3294,
                "accurate_long_balls": 0.2197,
                "total_opp_half_passes": 6.4317,
                "accurate_opp_half_passes": 5.562,
                "crosses_total": 0.3915,
                "crosses_accurate": 0.0797,
                "touches": 14.7199,
                "possession_lost": 3.6191,
                "dispossessed": 0.4773,
                "duels_lost": 1.816,
                "aerial_lost": 0.311,
                "total_contest": 1.4872,
                "won_contest": 0.5775,
                "ball_recovery": 0.7757,
                "challenges_lost": 0.0637,
                "fouls": 0.081,
                "fouls_drawn": 0.5129,
                "assists": 0.0228,
                "assist_rate": 0.0228,
                "interceptions": 0.2183,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0575,
                "blocks": 0.0,
                "big_chances_created": 0.2047,
                "big_chances_missed": 0.2768,
                "xgot": 0.2877,
                "offsides": 0.0013,
                "ball_carries": 5.858,
                "total_progression": 24.6655,
                "progressive_carries": 1.3266,
                "shots_off_target": 0.7213,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.71
              },
              "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.1588,
                "goal_rate": 0.1535,
                "goals": 0,
                "shots_on_target": 0.4767,
                "total_shots": 1.198,
                "expected_assists": 0.0483,
                "key_pass": 0.5761,
                "rating": 6.7425,
                "minutes": 26.71,
                "total_pass": 8.8492,
                "accurate_pass": 7.6751,
                "duels_won": 1.1921,
                "total_long_balls": 0.3294,
                "accurate_long_balls": 0.2197,
                "total_opp_half_passes": 6.4317,
                "accurate_opp_half_passes": 5.562,
                "crosses_total": 0.3915,
                "crosses_accurate": 0.0797,
                "touches": 14.7199,
                "possession_lost": 3.6191,
                "dispossessed": 0.4773,
                "duels_lost": 1.816,
                "aerial_lost": 0.311,
                "total_contest": 1.4872,
                "won_contest": 0.5775,
                "ball_recovery": 0.7757,
                "challenges_lost": 0.0637,
                "fouls": 0.081,
                "fouls_drawn": 0.5129,
                "assist_rate": 0.0228,
                "assists": 0,
                "interceptions": 0.2183,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0575,
                "blocks": 0.0,
                "big_chances_created": 0.2047,
                "big_chances_missed": 0.2768,
                "xgot": 0.2877,
                "offsides": 0.0013,
                "ball_carries": 5.858,
                "total_progression": 24.6655,
                "progressive_carries": 1.3266,
                "shots_off_target": 0.7213,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.71,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "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.363,
                "projected_substitutes": 3,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 15 by projected rating, fifa_overall 79.0)",
              "stats": {
                "expected_goals": 0.1588,
                "goal_rate": 0.1535,
                "goals": 0,
                "shots_on_target": 0.4767,
                "total_shots": 1.198,
                "expected_assists": 0.0483,
                "key_pass": 0.5761,
                "rating": 6.7425,
                "minutes": 26.71,
                "total_pass": 8.8492,
                "accurate_pass": 7.6751,
                "duels_won": 1.1921,
                "total_long_balls": 0.3294,
                "accurate_long_balls": 0.2197,
                "total_opp_half_passes": 6.4317,
                "accurate_opp_half_passes": 5.562,
                "crosses_total": 0.3915,
                "crosses_accurate": 0.0797,
                "touches": 14.7199,
                "possession_lost": 3.6191,
                "dispossessed": 0.4773,
                "duels_lost": 1.816,
                "aerial_lost": 0.311,
                "total_contest": 1.4872,
                "won_contest": 0.5775,
                "ball_recovery": 0.7757,
                "challenges_lost": 0.0637,
                "fouls": 0.081,
                "fouls_drawn": 0.5129,
                "assist_rate": 0.0228,
                "assists": 0,
                "interceptions": 0.2183,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.0575,
                "blocks": 0.0,
                "big_chances_created": 0.2047,
                "big_chances_missed": 0.2768,
                "xgot": 0.2877,
                "offsides": 0.0013,
                "ball_carries": 5.858,
                "total_progression": 24.6655,
                "progressive_carries": 1.3266,
                "shots_off_target": 0.7213,
                "bench_appearance_probability": 0.363,
                "bench_expected_minutes": 26.71,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1648,
                "fifa_rank": 964.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            }
          ]
        },
        "Tani Oluwaseyi": {
          "player_id": 1172477,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 21,
          "height": 188,
          "market_value": 7500000,
          "stats": {
            "expected_goals": 0.0564,
            "goal_rate": 0.1014,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0207,
            "key_pass": 0,
            "rating": 6.6063,
            "minutes": 16,
            "total_pass": 4,
            "accurate_pass": 3,
            "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": 2.7449,
            "dispossessed": 0.4797,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0074,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0134,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 6,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.723,
            "bench_expected_minutes": 15.88,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.547,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0543,
            "projected_assists": 0,
            "assist_probability": 0.0204,
            "finishing_factor": 1.1968,
            "creation_factor": 0.8,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 66,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5362,
                "expected_assists": 0.0168,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 8,
                "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": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 28,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0696,
                "expected_assists": 0.0699,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 9,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.007,
                "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": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 8,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 15,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 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": 14083682,
              "match_date": "2026-05-17",
              "home_team": "Rayo Vallecano",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 63,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1448,
                "expected_assists": 0.0023,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 7,
                "accurate_pass": 5,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083573,
              "match_date": "2026-05-10",
              "home_team": "Mallorca",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 63,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 6,
                "aerial_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083282,
              "match_date": "2026-04-23",
              "home_team": "Real Oviedo",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 63,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0228,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083102,
              "match_date": "2026-04-12",
              "home_team": "Athletic Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 69,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0259,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 3,
                "key_pass": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081808,
              "match_date": "2026-03-20",
              "home_team": "Villarreal",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 4879,
            "combined_rank_score": 2974.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 914.0,
            "sofascore_rating": 6.504,
            "sofascore_appearances": 27.0,
            "fifa_rank": 5035.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6063,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tani Oluwaseyi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yazan Al Arab",
                  "ranking": 4874
                },
                {
                  "player_name": "Lee Chang Geun",
                  "ranking": 4875
                },
                {
                  "player_name": "Song Bum Keun",
                  "ranking": 4876
                },
                {
                  "player_name": "Renato Steffen",
                  "ranking": 4877
                },
                {
                  "player_name": "Edimilson Fernandes",
                  "ranking": 4878
                }
              ],
              "lower": [
                {
                  "player_name": "Cédric Zesiger",
                  "ranking": 4880
                },
                {
                  "player_name": "Timothé Cognat",
                  "ranking": 4881
                },
                {
                  "player_name": "Alvyn Sanches",
                  "ranking": 4882
                },
                {
                  "player_name": "Mattia Zanotti",
                  "ranking": 4883
                },
                {
                  "player_name": "Silas Andersen",
                  "ranking": 4884
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.752,
          "history_matches": 32,
          "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": 32,
            "data_confidence": 0.752,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 15.88,
            "bench_appearance_prob": 0.723,
            "market_value_adjustment": 0.9995,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 8.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0133
            },
            "rationale": "Bench projection scaled from XGBoost F_service (32 historical appearances) to 15.9 expected mins (appearance prob 0.72); FBref playing time empirical prior: 2.0 sub appearances, 8.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0723,
                "goals": 0.0958,
                "goal_rate": 0.0958,
                "shots_on_target": 0.2364,
                "total_shots": 0.6063,
                "expected_assists": 0.0264,
                "key_pass": 0.313,
                "rating": 6.6063,
                "minutes": 14.99,
                "total_pass": 3.6674,
                "accurate_pass": 2.6152,
                "duels_won": 1.2694,
                "total_long_balls": 0.0681,
                "accurate_long_balls": 0.0681,
                "total_opp_half_passes": 2.7966,
                "accurate_opp_half_passes": 1.8394,
                "crosses_total": 0.0115,
                "crosses_accurate": 0.0115,
                "touches": 7.4298,
                "possession_lost": 2.5924,
                "dispossessed": 0.4799,
                "duels_lost": 1.8504,
                "aerial_lost": 0.4361,
                "total_contest": 0.6127,
                "won_contest": 0.0679,
                "ball_recovery": 0.4576,
                "challenges_lost": 0.0195,
                "fouls": 0.3702,
                "fouls_drawn": 0.1987,
                "assists": 0.007,
                "assist_rate": 0.007,
                "interceptions": 0.1543,
                "tackles_won": 0.3169,
                "tackles": 0.4712,
                "clearances": 0.3322,
                "blocks": 0.0582,
                "big_chances_created": 0.0215,
                "big_chances_missed": 0.0072,
                "xgot": 0.0172,
                "offsides": 0.1067,
                "ball_carries": 1.2607,
                "total_progression": 6.0054,
                "progressive_carries": 0.3775,
                "shots_off_target": 0.3699
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.1508,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.1282,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.109,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0926,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0787,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Rayo Vallecano",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0669,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Mallorca",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0569,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-04-23",
                    "opponent": "Real Oviedo",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0484,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Athletic Club",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-20",
                    "opponent": "Real Sociedad",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 0.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.1092,
                  "totalOppositionHalfPasses": 4.329,
                  "accurateOppositionHalfPasses": 2.9636,
                  "accuratePass": 4.2621,
                  "totalShots": 0.8649
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07228147238492966,
                    "model_output": 0.0723,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0936
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.01
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0083
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.003
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0027
                        }
                      ],
                      "others": -0.008,
                      "total": 0.0723,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.640016
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.100453
                        },
                        {
                          "name": "goals",
                          "margin": -0.092156
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.035529
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.03342
                        }
                      ],
                      "others_margin": -0.10568
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.09581116586923599,
                    "model_output": 0.0958,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0809
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.014
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0068
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0044
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0028
                        }
                      ],
                      "others": -0.0064,
                      "total": 0.0958,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.510394
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.122853
                        },
                        {
                          "name": "goals",
                          "margin": -0.064997
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.042618
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.026981
                        }
                      ],
                      "others_margin": -0.064785
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2363959401845932,
                    "model_output": 0.2364,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2226
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0265
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0191
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0129
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0108
                        }
                      ],
                      "others": -0.0079,
                      "total": 0.2364,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.536501
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.088221
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.068856
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.049346
                        },
                        {
                          "name": "goals",
                          "margin": -0.043274
                        }
                      ],
                      "others_margin": -0.032788
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.60626220703125,
                    "model_output": 0.6063,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5099
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1218
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0439
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0375
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.026
                        }
                      ],
                      "others": -0.0353,
                      "total": 0.6063,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.509872
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.121801
                        },
                        {
                          "name": "goals",
                          "margin": -0.043894
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.037528
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.026021
                        }
                      ],
                      "others_margin": -0.03537
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.026376644149422646,
                    "model_output": 0.0264,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0186
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0072
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0039
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0025
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0024
                        }
                      ],
                      "others": -0.0082,
                      "total": 0.0264,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.340154
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.170743
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.107502
                        },
                        {
                          "name": "rating",
                          "margin": -0.074518
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.072824
                        }
                      ],
                      "others_margin": -0.27322
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3129972517490387,
                    "model_output": 0.313,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2504
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0318
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0285
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0134
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0127
                        }
                      ],
                      "others": -0.0307,
                      "total": 0.313,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.458875
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.076909
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.074326
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.03686
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.036418
                        }
                      ],
                      "others_margin": -0.093187
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.606286525726318,
                    "model_output": 6.6063,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0491
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0259
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0123
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0114
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0094
                        }
                      ],
                      "others": -0.0539,
                      "total": 6.6063,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.049148
                        },
                        {
                          "name": "rating",
                          "margin": -0.025863
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.012334
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.011416
                        },
                        {
                          "name": "touches",
                          "margin": -0.009422
                        }
                      ],
                      "others_margin": -0.053811
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 32,
                  "role_matches": 22,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9995, quality 0.493)",
              "stats": {
                "expected_goals": 0.0722,
                "goals": 0.0958,
                "goal_rate": 0.0958,
                "shots_on_target": 0.2363,
                "total_shots": 0.606,
                "expected_assists": 0.0264,
                "key_pass": 0.3128,
                "rating": 6.6063,
                "minutes": 14.99,
                "total_pass": 3.6656,
                "accurate_pass": 2.6139,
                "duels_won": 1.2688,
                "total_long_balls": 0.0681,
                "accurate_long_balls": 0.0681,
                "total_opp_half_passes": 2.7952,
                "accurate_opp_half_passes": 1.8385,
                "crosses_total": 0.0115,
                "crosses_accurate": 0.0115,
                "touches": 7.4261,
                "possession_lost": 2.5911,
                "dispossessed": 0.4797,
                "duels_lost": 1.8495,
                "aerial_lost": 0.4359,
                "total_contest": 0.6124,
                "won_contest": 0.0679,
                "ball_recovery": 0.4574,
                "challenges_lost": 0.0195,
                "fouls": 0.37,
                "fouls_drawn": 0.1986,
                "assists": 0.007,
                "assist_rate": 0.007,
                "interceptions": 0.1542,
                "tackles_won": 0.3167,
                "tackles": 0.471,
                "clearances": 0.332,
                "blocks": 0.0582,
                "big_chances_created": 0.0215,
                "big_chances_missed": 0.0072,
                "xgot": 0.0172,
                "offsides": 0.1066,
                "ball_carries": 1.2601,
                "total_progression": 6.0024,
                "progressive_carries": 0.3773,
                "shots_off_target": 0.3697
              },
              "params": {
                "market_value_eur": 7500000,
                "quality_factor": 0.4927,
                "boost_factor": 0.9995,
                "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.0012)",
              "stats": {
                "expected_goals": 0.0722,
                "goals": 0.0957,
                "goal_rate": 0.0957,
                "shots_on_target": 0.236,
                "total_shots": 0.6053,
                "expected_assists": 0.0264,
                "key_pass": 0.3128,
                "rating": 6.6063,
                "minutes": 14.99,
                "total_pass": 3.6656,
                "accurate_pass": 2.6139,
                "duels_won": 1.2688,
                "total_long_balls": 0.0681,
                "accurate_long_balls": 0.0681,
                "total_opp_half_passes": 2.7952,
                "accurate_opp_half_passes": 1.8385,
                "crosses_total": 0.0115,
                "crosses_accurate": 0.0115,
                "touches": 7.4261,
                "possession_lost": 2.5911,
                "dispossessed": 0.4797,
                "duels_lost": 1.8495,
                "aerial_lost": 0.4359,
                "total_contest": 0.6124,
                "won_contest": 0.0679,
                "ball_recovery": 0.4574,
                "challenges_lost": 0.0195,
                "fouls": 0.3696,
                "fouls_drawn": 0.1984,
                "assists": 0.007,
                "assist_rate": 0.007,
                "interceptions": 0.154,
                "tackles_won": 0.3163,
                "tackles": 0.471,
                "clearances": 0.332,
                "blocks": 0.0582,
                "big_chances_created": 0.0215,
                "big_chances_missed": 0.0072,
                "xgot": 0.0172,
                "offsides": 0.1065,
                "ball_carries": 1.2601,
                "total_progression": 6.0024,
                "progressive_carries": 0.3773,
                "shots_off_target": 0.3697
              },
              "params": {
                "blend_weight": 0.0012,
                "history_matches": 32,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1666,
                "prior_reliability": 0.0133,
                "competition": "La Liga",
                "squad": "Villarreal"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 15.0 to 15.9 expected minutes (appearance prob 0.72)",
              "stats": {
                "expected_goals": 0.0765,
                "goals": 0.1014,
                "goal_rate": 0.1014,
                "shots_on_target": 0.25,
                "total_shots": 0.6417,
                "expected_assists": 0.028,
                "key_pass": 0.3314,
                "rating": 6.6063,
                "minutes": 15.88,
                "total_pass": 3.8832,
                "accurate_pass": 2.7691,
                "duels_won": 1.3441,
                "total_long_balls": 0.0721,
                "accurate_long_balls": 0.0721,
                "total_opp_half_passes": 2.9612,
                "accurate_opp_half_passes": 1.9477,
                "crosses_total": 0.0122,
                "crosses_accurate": 0.0122,
                "touches": 7.867,
                "possession_lost": 2.7449,
                "dispossessed": 0.4797,
                "duels_lost": 1.9593,
                "aerial_lost": 0.4359,
                "total_contest": 0.6488,
                "won_contest": 0.0719,
                "ball_recovery": 0.4846,
                "challenges_lost": 0.0195,
                "fouls": 0.3915,
                "fouls_drawn": 0.2102,
                "assists": 0.0074,
                "assist_rate": 0.0074,
                "interceptions": 0.1631,
                "tackles_won": 0.3351,
                "tackles": 0.499,
                "clearances": 0.3517,
                "blocks": 0.0617,
                "big_chances_created": 0.0228,
                "big_chances_missed": 0.0076,
                "xgot": 0.0182,
                "offsides": 0.1065,
                "ball_carries": 1.3349,
                "total_progression": 6.3588,
                "progressive_carries": 0.3997,
                "shots_off_target": 0.3917,
                "bench_appearance_probability": 0.723,
                "bench_expected_minutes": 15.88
              },
              "params": {
                "expected_minutes": 15.88,
                "projection_minutes": 14.99,
                "minutes_scale": 1.0594,
                "appearance_probability": 0.723
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0765,
                "goals": 0.1014,
                "goal_rate": 0.1014,
                "shots_on_target": 0.25,
                "total_shots": 0.6417,
                "expected_assists": 0.028,
                "key_pass": 0.3314,
                "rating": 6.6063,
                "minutes": 15.88,
                "total_pass": 3.8832,
                "accurate_pass": 2.7691,
                "duels_won": 1.3441,
                "total_long_balls": 0.0721,
                "accurate_long_balls": 0.0721,
                "total_opp_half_passes": 2.9612,
                "accurate_opp_half_passes": 1.9477,
                "crosses_total": 0.0122,
                "crosses_accurate": 0.0122,
                "touches": 7.867,
                "possession_lost": 2.7449,
                "dispossessed": 0.4797,
                "duels_lost": 1.9593,
                "aerial_lost": 0.4359,
                "total_contest": 0.6488,
                "won_contest": 0.0719,
                "ball_recovery": 0.4846,
                "challenges_lost": 0.0195,
                "fouls": 0.3915,
                "fouls_drawn": 0.2102,
                "assists": 0.0074,
                "assist_rate": 0.0074,
                "interceptions": 0.1631,
                "tackles_won": 0.3351,
                "tackles": 0.499,
                "clearances": 0.3517,
                "blocks": 0.0617,
                "big_chances_created": 0.0228,
                "big_chances_missed": 0.0076,
                "xgot": 0.0182,
                "offsides": 0.1065,
                "ball_carries": 1.3349,
                "total_progression": 6.3588,
                "progressive_carries": 0.3997,
                "shots_off_target": 0.3917,
                "bench_appearance_probability": 0.723,
                "bench_expected_minutes": 15.88
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0765,
                "goal_rate": 0.1014,
                "goals": 0,
                "shots_on_target": 0.25,
                "total_shots": 0.6417,
                "expected_assists": 0.028,
                "key_pass": 0.3314,
                "rating": 6.6063,
                "minutes": 15.88,
                "total_pass": 3.8832,
                "accurate_pass": 2.7691,
                "duels_won": 1.3441,
                "total_long_balls": 0.0721,
                "accurate_long_balls": 0.0721,
                "total_opp_half_passes": 2.9612,
                "accurate_opp_half_passes": 1.9477,
                "crosses_total": 0.0122,
                "crosses_accurate": 0.0122,
                "touches": 7.867,
                "possession_lost": 2.7449,
                "dispossessed": 0.4797,
                "duels_lost": 1.9593,
                "aerial_lost": 0.4359,
                "total_contest": 0.6488,
                "won_contest": 0.0719,
                "ball_recovery": 0.4846,
                "challenges_lost": 0.0195,
                "fouls": 0.3915,
                "fouls_drawn": 0.2102,
                "assist_rate": 0.0074,
                "assists": 0,
                "interceptions": 0.1631,
                "tackles_won": 0.3351,
                "tackles": 0.499,
                "clearances": 0.3517,
                "blocks": 0.0617,
                "big_chances_created": 0.0228,
                "big_chances_missed": 0.0076,
                "xgot": 0.0182,
                "offsides": 0.1065,
                "ball_carries": 1.3349,
                "total_progression": 6.3588,
                "progressive_carries": 0.3997,
                "shots_off_target": 0.3917,
                "bench_appearance_probability": 0.723,
                "bench_expected_minutes": 15.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.0564,
                "goal_rate": 0.1014,
                "goals": 0,
                "shots_on_target": 0.25,
                "total_shots": 0.6417,
                "expected_assists": 0.0207,
                "key_pass": 0.3314,
                "rating": 6.6063,
                "minutes": 15.88,
                "total_pass": 3.8832,
                "accurate_pass": 2.7691,
                "duels_won": 1.3441,
                "total_long_balls": 0.0721,
                "accurate_long_balls": 0.0721,
                "total_opp_half_passes": 2.9612,
                "accurate_opp_half_passes": 1.9477,
                "crosses_total": 0.0122,
                "crosses_accurate": 0.0122,
                "touches": 7.867,
                "possession_lost": 2.7449,
                "dispossessed": 0.4797,
                "duels_lost": 1.9593,
                "aerial_lost": 0.4359,
                "total_contest": 0.6488,
                "won_contest": 0.0719,
                "ball_recovery": 0.4846,
                "challenges_lost": 0.0195,
                "fouls": 0.3915,
                "fouls_drawn": 0.2102,
                "assist_rate": 0.0074,
                "assists": 0,
                "interceptions": 0.1631,
                "tackles_won": 0.3351,
                "tackles": 0.499,
                "clearances": 0.3517,
                "blocks": 0.0617,
                "big_chances_created": 0.0228,
                "big_chances_missed": 0.0076,
                "xgot": 0.0134,
                "offsides": 0.1065,
                "ball_carries": 1.3349,
                "total_progression": 6.3588,
                "progressive_carries": 0.3997,
                "shots_off_target": 0.3917,
                "bench_appearance_probability": 0.723,
                "bench_expected_minutes": 15.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "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.1968,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "scoreline_reset": true,
                "appearance_weight": 0.723
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0765,
                  "after": 0.0564
                },
                {
                  "stat": "expected_assists",
                  "before": 0.028,
                  "after": 0.0207
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 71.0)",
              "stats": {
                "expected_goals": 0.0564,
                "goal_rate": 0.1014,
                "goals": 0,
                "shots_on_target": 0.25,
                "total_shots": 0.6417,
                "expected_assists": 0.0207,
                "key_pass": 0.3314,
                "rating": 6.6063,
                "minutes": 15.88,
                "total_pass": 3.8832,
                "accurate_pass": 2.7691,
                "duels_won": 1.3441,
                "total_long_balls": 0.0721,
                "accurate_long_balls": 0.0721,
                "total_opp_half_passes": 2.9612,
                "accurate_opp_half_passes": 1.9477,
                "crosses_total": 0.0122,
                "crosses_accurate": 0.0122,
                "touches": 7.867,
                "possession_lost": 2.7449,
                "dispossessed": 0.4797,
                "duels_lost": 1.9593,
                "aerial_lost": 0.4359,
                "total_contest": 0.6488,
                "won_contest": 0.0719,
                "ball_recovery": 0.4846,
                "challenges_lost": 0.0195,
                "fouls": 0.3915,
                "fouls_drawn": 0.2102,
                "assist_rate": 0.0074,
                "assists": 0,
                "interceptions": 0.1631,
                "tackles_won": 0.3351,
                "tackles": 0.499,
                "clearances": 0.3517,
                "blocks": 0.0617,
                "big_chances_created": 0.0228,
                "big_chances_missed": 0.0076,
                "xgot": 0.0134,
                "offsides": 0.1065,
                "ball_carries": 1.3349,
                "total_progression": 6.3588,
                "progressive_carries": 0.3997,
                "shots_off_target": 0.3917,
                "bench_appearance_probability": 0.723,
                "bench_expected_minutes": 15.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "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.1968,
                "creation_factor": 0.8,
                "fifa_overall": 71.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4879,
                "fifa_rank": 5035.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0564,
                "goal_rate": 0.1014,
                "goals": 0,
                "shots_on_target": 0.25,
                "total_shots": 0.6417,
                "expected_assists": 0.0207,
                "key_pass": 0.3314,
                "rating": 6.6063,
                "minutes": 15.88,
                "total_pass": 3.8832,
                "accurate_pass": 2.7691,
                "duels_won": 1.3441,
                "total_long_balls": 0.0721,
                "accurate_long_balls": 0.0721,
                "total_opp_half_passes": 2.9612,
                "accurate_opp_half_passes": 1.9477,
                "crosses_total": 0.0122,
                "crosses_accurate": 0.0122,
                "touches": 7.867,
                "possession_lost": 2.7449,
                "dispossessed": 0.4797,
                "duels_lost": 1.9593,
                "aerial_lost": 0.4359,
                "total_contest": 0.6488,
                "won_contest": 0.0719,
                "ball_recovery": 0.4846,
                "challenges_lost": 0.0195,
                "fouls": 0.3915,
                "fouls_drawn": 0.2102,
                "assist_rate": 0.0074,
                "assists": 0,
                "interceptions": 0.1631,
                "tackles_won": 0.3351,
                "tackles": 0.499,
                "clearances": 0.3517,
                "blocks": 0.0617,
                "big_chances_created": 0.0228,
                "big_chances_missed": 0.0076,
                "xgot": 0.0134,
                "offsides": 0.1065,
                "ball_carries": 1.3349,
                "total_progression": 6.3588,
                "progressive_carries": 0.3997,
                "shots_off_target": 0.3917,
                "bench_appearance_probability": 0.723,
                "bench_expected_minutes": 15.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0543,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1968,
                "creation_factor": 0.8,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0543,
                "goal_rate": 0.1014,
                "scorer_weight": 0.0675,
                "squad_weight_total": 1.5114,
                "weight_share": 0.0447,
                "finishing_factor": 1.1968,
                "appearance_weight": 0.723,
                "weight_rank": 7,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.0564,
                "goal_rate": 0.1014,
                "goals": 0,
                "shots_on_target": 0.25,
                "total_shots": 0.6417,
                "expected_assists": 0.0207,
                "key_pass": 0.3314,
                "rating": 6.6063,
                "minutes": 15.88,
                "total_pass": 3.8832,
                "accurate_pass": 2.7691,
                "duels_won": 1.3441,
                "total_long_balls": 0.0721,
                "accurate_long_balls": 0.0721,
                "total_opp_half_passes": 2.9612,
                "accurate_opp_half_passes": 1.9477,
                "crosses_total": 0.0122,
                "crosses_accurate": 0.0122,
                "touches": 7.867,
                "possession_lost": 2.7449,
                "dispossessed": 0.4797,
                "duels_lost": 1.9593,
                "aerial_lost": 0.4359,
                "total_contest": 0.6488,
                "won_contest": 0.0719,
                "ball_recovery": 0.4846,
                "challenges_lost": 0.0195,
                "fouls": 0.3915,
                "fouls_drawn": 0.2102,
                "assist_rate": 0.0074,
                "assists": 0,
                "interceptions": 0.1631,
                "tackles_won": 0.3351,
                "tackles": 0.499,
                "clearances": 0.3517,
                "blocks": 0.0617,
                "big_chances_created": 0.0228,
                "big_chances_missed": 0.0076,
                "xgot": 0.0134,
                "offsides": 0.1065,
                "ball_carries": 1.3349,
                "total_progression": 6.3588,
                "progressive_carries": 0.3997,
                "shots_off_target": 0.3917,
                "bench_appearance_probability": 0.723,
                "bench_expected_minutes": 15.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0543,
                "projected_assists": 0,
                "assist_probability": 0.0204,
                "finishing_factor": 1.1968,
                "creation_factor": 0.8,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0204,
                "assist_rate": 0.0074,
                "provider_weight": 0.0166,
                "squad_weight_total": 1.1097,
                "weight_share": 0.0149,
                "creation_factor": 0.8,
                "appearance_weight": 0.723,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "substitutes": {
        "Tani Oluwaseyi": {
          "player_id": 1172477,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 21,
          "height": 188,
          "market_value": 7500000,
          "stats": {
            "expected_goals": 0.0564,
            "goal_rate": 0.1014,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0207,
            "key_pass": 0,
            "rating": 6.6063,
            "minutes": 16,
            "total_pass": 4,
            "accurate_pass": 3,
            "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": 2.7449,
            "dispossessed": 0.4797,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assist_rate": 0.0074,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0134,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 6,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.723,
            "bench_expected_minutes": 15.88,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.547,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0543,
            "projected_assists": 0,
            "assist_probability": 0.0204,
            "finishing_factor": 1.1968,
            "creation_factor": 0.8,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 66,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5362,
                "expected_assists": 0.0168,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 8,
                "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": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 28,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0696,
                "expected_assists": 0.0699,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 9,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.007,
                "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": 16416290,
              "match_date": "2026-08-28",
              "home_team": "Deportivo Alavés",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 8,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 15,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 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": 14083682,
              "match_date": "2026-05-17",
              "home_team": "Rayo Vallecano",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 63,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1448,
                "expected_assists": 0.0023,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 7,
                "accurate_pass": 5,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083573,
              "match_date": "2026-05-10",
              "home_team": "Mallorca",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 63,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 6,
                "aerial_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083282,
              "match_date": "2026-04-23",
              "home_team": "Real Oviedo",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Real Oviedo",
              "stats": {
                "minutes": 63,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0228,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5,
                "tackles": 1,
                "duels_won": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083102,
              "match_date": "2026-04-12",
              "home_team": "Athletic Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 69,
                "rating": 6.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0259,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 3,
                "key_pass": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081808,
              "match_date": "2026-03-20",
              "home_team": "Villarreal",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 4879,
            "combined_rank_score": 2974.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 914.0,
            "sofascore_rating": 6.504,
            "sofascore_appearances": 27.0,
            "fifa_rank": 5035.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6063,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tani Oluwaseyi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yazan Al Arab",
                  "ranking": 4874
                },
                {
                  "player_name": "Lee Chang Geun",
                  "ranking": 4875
                },
                {
                  "player_name": "Song Bum Keun",
                  "ranking": 4876
                },
                {
                  "player_name": "Renato Steffen",
                  "ranking": 4877
                },
                {
                  "player_name": "Edimilson Fernandes",
                  "ranking": 4878
                }
              ],
              "lower": [
                {
                  "player_name": "Cédric Zesiger",
                  "ranking": 4880
                },
                {
                  "player_name": "Timothé Cognat",
                  "ranking": 4881
                },
                {
                  "player_name": "Alvyn Sanches",
                  "ranking": 4882
                },
                {
                  "player_name": "Mattia Zanotti",
                  "ranking": 4883
                },
                {
                  "player_name": "Silas Andersen",
                  "ranking": 4884
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.752,
          "history_matches": 32,
          "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": 32,
            "data_confidence": 0.752,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 15.88,
            "bench_appearance_prob": 0.723,
            "market_value_adjustment": 0.9995,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 8.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0133
            },
            "rationale": "Bench projection scaled from XGBoost F_service (32 historical appearances) to 15.9 expected mins (appearance prob 0.72); FBref playing time empirical prior: 2.0 sub appearances, 8.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0723,
                "goals": 0.0958,
                "goal_rate": 0.0958,
                "shots_on_target": 0.2364,
                "total_shots": 0.6063,
                "expected_assists": 0.0264,
                "key_pass": 0.313,
                "rating": 6.6063,
                "minutes": 14.99,
                "total_pass": 3.6674,
                "accurate_pass": 2.6152,
                "duels_won": 1.2694,
                "total_long_balls": 0.0681,
                "accurate_long_balls": 0.0681,
                "total_opp_half_passes": 2.7966,
                "accurate_opp_half_passes": 1.8394,
                "crosses_total": 0.0115,
                "crosses_accurate": 0.0115,
                "touches": 7.4298,
                "possession_lost": 2.5924,
                "dispossessed": 0.4799,
                "duels_lost": 1.8504,
                "aerial_lost": 0.4361,
                "total_contest": 0.6127,
                "won_contest": 0.0679,
                "ball_recovery": 0.4576,
                "challenges_lost": 0.0195,
                "fouls": 0.3702,
                "fouls_drawn": 0.1987,
                "assists": 0.007,
                "assist_rate": 0.007,
                "interceptions": 0.1543,
                "tackles_won": 0.3169,
                "tackles": 0.4712,
                "clearances": 0.3322,
                "blocks": 0.0582,
                "big_chances_created": 0.0215,
                "big_chances_missed": 0.0072,
                "xgot": 0.0172,
                "offsides": 0.1067,
                "ball_carries": 1.2607,
                "total_progression": 6.0054,
                "progressive_carries": 0.3775,
                "shots_off_target": 0.3699
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-24T10:07:14.441608+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 611,
                    "rows": 16533
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.1508,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.1282,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.109,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Deportivo Alavés",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0926,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0787,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Rayo Vallecano",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0669,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-10",
                    "opponent": "Mallorca",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0569,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-04-23",
                    "opponent": "Real Oviedo",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0484,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Athletic Club",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-03-20",
                    "opponent": "Real Sociedad",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0349,
                    "rating": 0.0
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "expectedGoals": 0.1092,
                  "totalOppositionHalfPasses": 4.329,
                  "accurateOppositionHalfPasses": 2.9636,
                  "accuratePass": 4.2621,
                  "totalShots": 0.8649
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07228147238492966,
                    "model_output": 0.0723,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2858
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0881
                      },
                      {
                        "name": "goals",
                        "importance": 0.0357
                      },
                      {
                        "name": "xg_per_shot",
                        "importance": 0.0272
                      },
                      {
                        "name": "bigChanceMissed",
                        "importance": 0.0231
                      }
                    ],
                    "decomposition": {
                      "base": 0.1979,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0936
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.01
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0083
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.003
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0027
                        }
                      ],
                      "others": -0.008,
                      "total": 0.0723,
                      "log_link": true,
                      "margin_base": -1.619934,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.640016
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.100453
                        },
                        {
                          "name": "goals",
                          "margin": -0.092156
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.035529
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.03342
                        }
                      ],
                      "others_margin": -0.10568
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.09581116586923599,
                    "model_output": 0.0958,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1497
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0696
                      },
                      {
                        "name": "goals",
                        "importance": 0.0577
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0307
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0286
                      }
                    ],
                    "decomposition": {
                      "base": 0.2023,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0809
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.014
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0068
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0044
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0028
                        }
                      ],
                      "others": -0.0064,
                      "total": 0.0958,
                      "log_link": true,
                      "margin_base": -1.597983,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.510394
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.122853
                        },
                        {
                          "name": "goals",
                          "margin": -0.064997
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.042618
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.026981
                        }
                      ],
                      "others_margin": -0.064785
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2363959401845932,
                    "model_output": 0.2364,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2171
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0661
                      },
                      {
                        "name": "goals",
                        "importance": 0.0553
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0475
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0308
                      }
                    ],
                    "decomposition": {
                      "base": 0.5362,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2226
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0265
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0191
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0129
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0108
                        }
                      ],
                      "others": -0.0079,
                      "total": 0.2364,
                      "log_link": true,
                      "margin_base": -0.623262,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.536501
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.088221
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.068856
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.049346
                        },
                        {
                          "name": "goals",
                          "margin": -0.043274
                        }
                      ],
                      "others_margin": -0.032788
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.60626220703125,
                    "model_output": 0.6063,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2864
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0656
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.051
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.031
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0298
                      }
                    ],
                    "decomposition": {
                      "base": 1.3807,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5099
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1218
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0439
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0375
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.026
                        }
                      ],
                      "others": -0.0353,
                      "total": 0.6063,
                      "log_link": false,
                      "margin_base": 1.380749,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.509872
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.121801
                        },
                        {
                          "name": "goals",
                          "margin": -0.043894
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.037528
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.026021
                        }
                      ],
                      "others_margin": -0.03537
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.026376644149422646,
                    "model_output": 0.0264,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1157
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0645
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0607
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0558
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 0.0644,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0186
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0072
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0039
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0025
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0024
                        }
                      ],
                      "others": -0.0082,
                      "total": 0.0264,
                      "log_link": true,
                      "margin_base": -2.741965,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.340154
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.170743
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.107502
                        },
                        {
                          "name": "rating",
                          "margin": -0.074518
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.072824
                        }
                      ],
                      "others_margin": -0.27322
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3129972517490387,
                    "model_output": 0.313,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1481
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.1244
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1112
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.052
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0395
                      }
                    ],
                    "decomposition": {
                      "base": 0.6805,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2504
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0318
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0285
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0134
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0127
                        }
                      ],
                      "others": -0.0307,
                      "total": 0.313,
                      "log_link": true,
                      "margin_base": -0.384987,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.458875
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.076909
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.074326
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.03686
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.036418
                        }
                      ],
                      "others_margin": -0.093187
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.606286525726318,
                    "model_output": 6.6063,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.059
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0483
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0421
                      },
                      {
                        "name": "rating",
                        "importance": 0.0418
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0415
                      }
                    ],
                    "decomposition": {
                      "base": 6.7683,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0491
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0259
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0123
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0114
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0094
                        }
                      ],
                      "others": -0.0539,
                      "total": 6.6063,
                      "log_link": false,
                      "margin_base": 6.768281,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.049148
                        },
                        {
                          "name": "rating",
                          "margin": -0.025863
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.012334
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.011416
                        },
                        {
                          "name": "touches",
                          "margin": -0.009422
                        }
                      ],
                      "others_margin": -0.053811
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 32,
                  "role_matches": 22,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9995, quality 0.493)",
              "stats": {
                "expected_goals": 0.0722,
                "goals": 0.0958,
                "goal_rate": 0.0958,
                "shots_on_target": 0.2363,
                "total_shots": 0.606,
                "expected_assists": 0.0264,
                "key_pass": 0.3128,
                "rating": 6.6063,
                "minutes": 14.99,
                "total_pass": 3.6656,
                "accurate_pass": 2.6139,
                "duels_won": 1.2688,
                "total_long_balls": 0.0681,
                "accurate_long_balls": 0.0681,
                "total_opp_half_passes": 2.7952,
                "accurate_opp_half_passes": 1.8385,
                "crosses_total": 0.0115,
                "crosses_accurate": 0.0115,
                "touches": 7.4261,
                "possession_lost": 2.5911,
                "dispossessed": 0.4797,
                "duels_lost": 1.8495,
                "aerial_lost": 0.4359,
                "total_contest": 0.6124,
                "won_contest": 0.0679,
                "ball_recovery": 0.4574,
                "challenges_lost": 0.0195,
                "fouls": 0.37,
                "fouls_drawn": 0.1986,
                "assists": 0.007,
                "assist_rate": 0.007,
                "interceptions": 0.1542,
                "tackles_won": 0.3167,
                "tackles": 0.471,
                "clearances": 0.332,
                "blocks": 0.0582,
                "big_chances_created": 0.0215,
                "big_chances_missed": 0.0072,
                "xgot": 0.0172,
                "offsides": 0.1066,
                "ball_carries": 1.2601,
                "total_progression": 6.0024,
                "progressive_carries": 0.3773,
                "shots_off_target": 0.3697
              },
              "params": {
                "market_value_eur": 7500000,
                "quality_factor": 0.4927,
                "boost_factor": 0.9995,
                "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.0012)",
              "stats": {
                "expected_goals": 0.0722,
                "goals": 0.0957,
                "goal_rate": 0.0957,
                "shots_on_target": 0.236,
                "total_shots": 0.6053,
                "expected_assists": 0.0264,
                "key_pass": 0.3128,
                "rating": 6.6063,
                "minutes": 14.99,
                "total_pass": 3.6656,
                "accurate_pass": 2.6139,
                "duels_won": 1.2688,
                "total_long_balls": 0.0681,
                "accurate_long_balls": 0.0681,
                "total_opp_half_passes": 2.7952,
                "accurate_opp_half_passes": 1.8385,
                "crosses_total": 0.0115,
                "crosses_accurate": 0.0115,
                "touches": 7.4261,
                "possession_lost": 2.5911,
                "dispossessed": 0.4797,
                "duels_lost": 1.8495,
                "aerial_lost": 0.4359,
                "total_contest": 0.6124,
                "won_contest": 0.0679,
                "ball_recovery": 0.4574,
                "challenges_lost": 0.0195,
                "fouls": 0.3696,
                "fouls_drawn": 0.1984,
                "assists": 0.007,
                "assist_rate": 0.007,
                "interceptions": 0.154,
                "tackles_won": 0.3163,
                "tackles": 0.471,
                "clearances": 0.332,
                "blocks": 0.0582,
                "big_chances_created": 0.0215,
                "big_chances_missed": 0.0072,
                "xgot": 0.0172,
                "offsides": 0.1065,
                "ball_carries": 1.2601,
                "total_progression": 6.0024,
                "progressive_carries": 0.3773,
                "shots_off_target": 0.3697
              },
              "params": {
                "blend_weight": 0.0012,
                "history_matches": 32,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1666,
                "prior_reliability": 0.0133,
                "competition": "La Liga",
                "squad": "Villarreal"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 15.0 to 15.9 expected minutes (appearance prob 0.72)",
              "stats": {
                "expected_goals": 0.0765,
                "goals": 0.1014,
                "goal_rate": 0.1014,
                "shots_on_target": 0.25,
                "total_shots": 0.6417,
                "expected_assists": 0.028,
                "key_pass": 0.3314,
                "rating": 6.6063,
                "minutes": 15.88,
                "total_pass": 3.8832,
                "accurate_pass": 2.7691,
                "duels_won": 1.3441,
                "total_long_balls": 0.0721,
                "accurate_long_balls": 0.0721,
                "total_opp_half_passes": 2.9612,
                "accurate_opp_half_passes": 1.9477,
                "crosses_total": 0.0122,
                "crosses_accurate": 0.0122,
                "touches": 7.867,
                "possession_lost": 2.7449,
                "dispossessed": 0.4797,
                "duels_lost": 1.9593,
                "aerial_lost": 0.4359,
                "total_contest": 0.6488,
                "won_contest": 0.0719,
                "ball_recovery": 0.4846,
                "challenges_lost": 0.0195,
                "fouls": 0.3915,
                "fouls_drawn": 0.2102,
                "assists": 0.0074,
                "assist_rate": 0.0074,
                "interceptions": 0.1631,
                "tackles_won": 0.3351,
                "tackles": 0.499,
                "clearances": 0.3517,
                "blocks": 0.0617,
                "big_chances_created": 0.0228,
                "big_chances_missed": 0.0076,
                "xgot": 0.0182,
                "offsides": 0.1065,
                "ball_carries": 1.3349,
                "total_progression": 6.3588,
                "progressive_carries": 0.3997,
                "shots_off_target": 0.3917,
                "bench_appearance_probability": 0.723,
                "bench_expected_minutes": 15.88
              },
              "params": {
                "expected_minutes": 15.88,
                "projection_minutes": 14.99,
                "minutes_scale": 1.0594,
                "appearance_probability": 0.723
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0765,
                "goals": 0.1014,
                "goal_rate": 0.1014,
                "shots_on_target": 0.25,
                "total_shots": 0.6417,
                "expected_assists": 0.028,
                "key_pass": 0.3314,
                "rating": 6.6063,
                "minutes": 15.88,
                "total_pass": 3.8832,
                "accurate_pass": 2.7691,
                "duels_won": 1.3441,
                "total_long_balls": 0.0721,
                "accurate_long_balls": 0.0721,
                "total_opp_half_passes": 2.9612,
                "accurate_opp_half_passes": 1.9477,
                "crosses_total": 0.0122,
                "crosses_accurate": 0.0122,
                "touches": 7.867,
                "possession_lost": 2.7449,
                "dispossessed": 0.4797,
                "duels_lost": 1.9593,
                "aerial_lost": 0.4359,
                "total_contest": 0.6488,
                "won_contest": 0.0719,
                "ball_recovery": 0.4846,
                "challenges_lost": 0.0195,
                "fouls": 0.3915,
                "fouls_drawn": 0.2102,
                "assists": 0.0074,
                "assist_rate": 0.0074,
                "interceptions": 0.1631,
                "tackles_won": 0.3351,
                "tackles": 0.499,
                "clearances": 0.3517,
                "blocks": 0.0617,
                "big_chances_created": 0.0228,
                "big_chances_missed": 0.0076,
                "xgot": 0.0182,
                "offsides": 0.1065,
                "ball_carries": 1.3349,
                "total_progression": 6.3588,
                "progressive_carries": 0.3997,
                "shots_off_target": 0.3917,
                "bench_appearance_probability": 0.723,
                "bench_expected_minutes": 15.88
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "expected_goals": 0.0765,
                "goal_rate": 0.1014,
                "goals": 0,
                "shots_on_target": 0.25,
                "total_shots": 0.6417,
                "expected_assists": 0.028,
                "key_pass": 0.3314,
                "rating": 6.6063,
                "minutes": 15.88,
                "total_pass": 3.8832,
                "accurate_pass": 2.7691,
                "duels_won": 1.3441,
                "total_long_balls": 0.0721,
                "accurate_long_balls": 0.0721,
                "total_opp_half_passes": 2.9612,
                "accurate_opp_half_passes": 1.9477,
                "crosses_total": 0.0122,
                "crosses_accurate": 0.0122,
                "touches": 7.867,
                "possession_lost": 2.7449,
                "dispossessed": 0.4797,
                "duels_lost": 1.9593,
                "aerial_lost": 0.4359,
                "total_contest": 0.6488,
                "won_contest": 0.0719,
                "ball_recovery": 0.4846,
                "challenges_lost": 0.0195,
                "fouls": 0.3915,
                "fouls_drawn": 0.2102,
                "assist_rate": 0.0074,
                "assists": 0,
                "interceptions": 0.1631,
                "tackles_won": 0.3351,
                "tackles": 0.499,
                "clearances": 0.3517,
                "blocks": 0.0617,
                "big_chances_created": 0.0228,
                "big_chances_missed": 0.0076,
                "xgot": 0.0182,
                "offsides": 0.1065,
                "ball_carries": 1.3349,
                "total_progression": 6.3588,
                "progressive_carries": 0.3997,
                "shots_off_target": 0.3917,
                "bench_appearance_probability": 0.723,
                "bench_expected_minutes": 15.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.0564,
                "goal_rate": 0.1014,
                "goals": 0,
                "shots_on_target": 0.25,
                "total_shots": 0.6417,
                "expected_assists": 0.0207,
                "key_pass": 0.3314,
                "rating": 6.6063,
                "minutes": 15.88,
                "total_pass": 3.8832,
                "accurate_pass": 2.7691,
                "duels_won": 1.3441,
                "total_long_balls": 0.0721,
                "accurate_long_balls": 0.0721,
                "total_opp_half_passes": 2.9612,
                "accurate_opp_half_passes": 1.9477,
                "crosses_total": 0.0122,
                "crosses_accurate": 0.0122,
                "touches": 7.867,
                "possession_lost": 2.7449,
                "dispossessed": 0.4797,
                "duels_lost": 1.9593,
                "aerial_lost": 0.4359,
                "total_contest": 0.6488,
                "won_contest": 0.0719,
                "ball_recovery": 0.4846,
                "challenges_lost": 0.0195,
                "fouls": 0.3915,
                "fouls_drawn": 0.2102,
                "assist_rate": 0.0074,
                "assists": 0,
                "interceptions": 0.1631,
                "tackles_won": 0.3351,
                "tackles": 0.499,
                "clearances": 0.3517,
                "blocks": 0.0617,
                "big_chances_created": 0.0228,
                "big_chances_missed": 0.0076,
                "xgot": 0.0134,
                "offsides": 0.1065,
                "ball_carries": 1.3349,
                "total_progression": 6.3588,
                "progressive_carries": 0.3997,
                "shots_off_target": 0.3917,
                "bench_appearance_probability": 0.723,
                "bench_expected_minutes": 15.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "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.1968,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "scoreline_reset": true,
                "appearance_weight": 0.723
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0765,
                  "after": 0.0564
                },
                {
                  "stat": "expected_assists",
                  "before": 0.028,
                  "after": 0.0207
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 71.0)",
              "stats": {
                "expected_goals": 0.0564,
                "goal_rate": 0.1014,
                "goals": 0,
                "shots_on_target": 0.25,
                "total_shots": 0.6417,
                "expected_assists": 0.0207,
                "key_pass": 0.3314,
                "rating": 6.6063,
                "minutes": 15.88,
                "total_pass": 3.8832,
                "accurate_pass": 2.7691,
                "duels_won": 1.3441,
                "total_long_balls": 0.0721,
                "accurate_long_balls": 0.0721,
                "total_opp_half_passes": 2.9612,
                "accurate_opp_half_passes": 1.9477,
                "crosses_total": 0.0122,
                "crosses_accurate": 0.0122,
                "touches": 7.867,
                "possession_lost": 2.7449,
                "dispossessed": 0.4797,
                "duels_lost": 1.9593,
                "aerial_lost": 0.4359,
                "total_contest": 0.6488,
                "won_contest": 0.0719,
                "ball_recovery": 0.4846,
                "challenges_lost": 0.0195,
                "fouls": 0.3915,
                "fouls_drawn": 0.2102,
                "assist_rate": 0.0074,
                "assists": 0,
                "interceptions": 0.1631,
                "tackles_won": 0.3351,
                "tackles": 0.499,
                "clearances": 0.3517,
                "blocks": 0.0617,
                "big_chances_created": 0.0228,
                "big_chances_missed": 0.0076,
                "xgot": 0.0134,
                "offsides": 0.1065,
                "ball_carries": 1.3349,
                "total_progression": 6.3588,
                "progressive_carries": 0.3997,
                "shots_off_target": 0.3917,
                "bench_appearance_probability": 0.723,
                "bench_expected_minutes": 15.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "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.1968,
                "creation_factor": 0.8,
                "fifa_overall": 71.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4879,
                "fifa_rank": 5035.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0564,
                "goal_rate": 0.1014,
                "goals": 0,
                "shots_on_target": 0.25,
                "total_shots": 0.6417,
                "expected_assists": 0.0207,
                "key_pass": 0.3314,
                "rating": 6.6063,
                "minutes": 15.88,
                "total_pass": 3.8832,
                "accurate_pass": 2.7691,
                "duels_won": 1.3441,
                "total_long_balls": 0.0721,
                "accurate_long_balls": 0.0721,
                "total_opp_half_passes": 2.9612,
                "accurate_opp_half_passes": 1.9477,
                "crosses_total": 0.0122,
                "crosses_accurate": 0.0122,
                "touches": 7.867,
                "possession_lost": 2.7449,
                "dispossessed": 0.4797,
                "duels_lost": 1.9593,
                "aerial_lost": 0.4359,
                "total_contest": 0.6488,
                "won_contest": 0.0719,
                "ball_recovery": 0.4846,
                "challenges_lost": 0.0195,
                "fouls": 0.3915,
                "fouls_drawn": 0.2102,
                "assist_rate": 0.0074,
                "assists": 0,
                "interceptions": 0.1631,
                "tackles_won": 0.3351,
                "tackles": 0.499,
                "clearances": 0.3517,
                "blocks": 0.0617,
                "big_chances_created": 0.0228,
                "big_chances_missed": 0.0076,
                "xgot": 0.0134,
                "offsides": 0.1065,
                "ball_carries": 1.3349,
                "total_progression": 6.3588,
                "progressive_carries": 0.3997,
                "shots_off_target": 0.3917,
                "bench_appearance_probability": 0.723,
                "bench_expected_minutes": 15.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0543,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1968,
                "creation_factor": 0.8,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0543,
                "goal_rate": 0.1014,
                "scorer_weight": 0.0675,
                "squad_weight_total": 1.5114,
                "weight_share": 0.0447,
                "finishing_factor": 1.1968,
                "appearance_weight": 0.723,
                "weight_rank": 7,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "expected_goals": 0.0564,
                "goal_rate": 0.1014,
                "goals": 0,
                "shots_on_target": 0.25,
                "total_shots": 0.6417,
                "expected_assists": 0.0207,
                "key_pass": 0.3314,
                "rating": 6.6063,
                "minutes": 15.88,
                "total_pass": 3.8832,
                "accurate_pass": 2.7691,
                "duels_won": 1.3441,
                "total_long_balls": 0.0721,
                "accurate_long_balls": 0.0721,
                "total_opp_half_passes": 2.9612,
                "accurate_opp_half_passes": 1.9477,
                "crosses_total": 0.0122,
                "crosses_accurate": 0.0122,
                "touches": 7.867,
                "possession_lost": 2.7449,
                "dispossessed": 0.4797,
                "duels_lost": 1.9593,
                "aerial_lost": 0.4359,
                "total_contest": 0.6488,
                "won_contest": 0.0719,
                "ball_recovery": 0.4846,
                "challenges_lost": 0.0195,
                "fouls": 0.3915,
                "fouls_drawn": 0.2102,
                "assist_rate": 0.0074,
                "assists": 0,
                "interceptions": 0.1631,
                "tackles_won": 0.3351,
                "tackles": 0.499,
                "clearances": 0.3517,
                "blocks": 0.0617,
                "big_chances_created": 0.0228,
                "big_chances_missed": 0.0076,
                "xgot": 0.0134,
                "offsides": 0.1065,
                "ball_carries": 1.3349,
                "total_progression": 6.3588,
                "progressive_carries": 0.3997,
                "shots_off_target": 0.3917,
                "bench_appearance_probability": 0.723,
                "bench_expected_minutes": 15.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0543,
                "projected_assists": 0,
                "assist_probability": 0.0204,
                "finishing_factor": 1.1968,
                "creation_factor": 0.8,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0204,
                "assist_rate": 0.0074,
                "provider_weight": 0.0166,
                "squad_weight_total": 1.1097,
                "weight_share": 0.0149,
                "creation_factor": 0.8,
                "appearance_weight": 0.723,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Carlos Maciá": {
          "player_id": 2238900,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 16,
          "height": 194,
          "market_value": 14500000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0157,
            "assist_rate": 0.0313,
            "assists": 0,
            "expected_goals": 0.0164,
            "goal_rate": 0.0486,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.7021,
            "minutes": 23,
            "total_pass": 13,
            "accurate_pass": 12,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 7,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 18,
            "possession_lost": 2.7125,
            "dispossessed": 0.1207,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 6,
            "total_progression": 21,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.703,
            "bench_expected_minutes": 23.33,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.547,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0162,
            "projected_assists": 0,
            "assist_probability": 0.0155,
            "finishing_factor": 1.25,
            "creation_factor": 1.1307,
            "fifa_overall": 65.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 66,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0138,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 29,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 2,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 8,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 10,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416302,
              "match_date": "2026-08-23",
              "home_team": "Atlético Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 11,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.004,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 10,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Racing Club",
              "stats": {
                "minutes": 34,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0133,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 27,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 3,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083735,
              "match_date": "2026-05-24",
              "home_team": "Villarreal",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083224,
              "match_date": "2026-01-17",
              "home_team": "Real Betis",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 9,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083198,
              "match_date": "2026-01-03",
              "home_team": "Elche",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 14,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0071,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "tackles": 4,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083190,
              "match_date": "2025-12-21",
              "home_team": "Villarreal",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 15,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "clearances": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083159,
              "match_date": "2025-12-06",
              "home_team": "Villarreal",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Getafe",
              "stats": {
                "minutes": 39,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0612,
                "expected_assists": 0.0127,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 29,
                "accurate_pass": 26,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 7717,
            "combined_rank_score": 6124.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 11804.0,
            "fifa_overall": 65.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7021,
            "source_file": "data/player_rankings.csv",
            "player_name": "Carlos Maciá",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Luís Silva",
                  "ranking": 7712
                },
                {
                  "player_name": "Ivan Zlobin",
                  "ranking": 7713
                },
                {
                  "player_name": "Ferro",
                  "ranking": 7714
                },
                {
                  "player_name": "Liziero",
                  "ranking": 7715
                },
                {
                  "player_name": "Ianis Stoica",
                  "ranking": 7716
                }
              ],
              "lower": [
                {
                  "player_name": "Facundo Agustín Cáseres",
                  "ranking": 7718
                },
                {
                  "player_name": "Weverson",
                  "ranking": 7719
                },
                {
                  "player_name": "José Fontán",
                  "ranking": 7720
                },
                {
                  "player_name": "Dario Špikić",
                  "ranking": 7721
                },
                {
                  "player_name": "Miguel Maga",
                  "ranking": 7722
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.755,
          "history_matches": 10,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 10,
            "data_confidence": 0.755,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 23.33,
            "bench_appearance_prob": 0.703,
            "market_value_adjustment": 1.0069,
            "fbref_prior_metrics": {
              "squad": "Villarreal",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 24.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0333
            },
            "rationale": "Bench projection scaled from XGBoost M_service (10 historical appearances) to 23.3 expected mins (appearance prob 0.70); FBref playing time empirical prior: 2.0 sub appearances, 24.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.2192,
                "expected_assists": 0.0145,
                "assists": 0.0209,
                "assist_rate": 0.0209,
                "expected_goals": 0.0151,
                "goals": 0.0324,
                "goal_rate": 0.0324,
                "shots_on_target": 0.0526,
                "total_shots": 0.269,
                "rating": 6.7021,
                "minutes": 14.72,
                "total_pass": 8.8876,
                "accurate_pass": 7.7821,
                "duels_won": 1.1009,
                "total_long_balls": 0.6514,
                "accurate_long_balls": 0.3151,
                "total_own_half_passes": 3.5272,
                "accurate_own_half_passes": 3.2651,
                "total_opp_half_passes": 5.3604,
                "accurate_opp_half_passes": 4.517,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 12.241,
                "possession_lost": 1.7959,
                "dispossessed": 0.1199,
                "duels_lost": 1.0543,
                "aerial_won": 0.0,
                "aerial_lost": 0.1199,
                "interceptions": 0.4007,
                "tackles_won": 0.3808,
                "tackles": 0.8818,
                "clearances": 0.4848,
                "total_contest": 0.2484,
                "won_contest": 0.0532,
                "challenges_lost": 0.4463,
                "fouls": 0.1731,
                "fouls_drawn": 0.1659,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7515,
                "total_progression": 13.8053,
                "progressive_carries": 0.2044,
                "shots_off_target": 0.2164
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.1868,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.1588,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.1349,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Atlético Madrid",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1147,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Real Racing Club",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.0975,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-24",
                    "opponent": "Atlético Madrid",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0829,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-01-17",
                    "opponent": "Real Betis",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.0704,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-01-03",
                    "opponent": "Elche",
                    "minutes": 14.0,
                    "is_starting": false,
                    "weight": 0.0599,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2025-12-21",
                    "opponent": "FC Barcelona",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0509,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2025-12-06",
                    "opponent": "Getafe",
                    "minutes": 39.0,
                    "is_starting": false,
                    "weight": 0.0433,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 10.0,
                  "is_starting_11": 0.0,
                  "creative_index": 0.0033,
                  "totalShots": 0.0433,
                  "expectedGoals": 0.0026,
                  "expectedAssists": 0.0054,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.21924886107444763,
                    "model_output": 0.2192,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4307
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0654
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0394
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0348
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0167
                        }
                      ],
                      "others": -0.0883,
                      "total": 0.2192,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.656899
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.15213
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.104289
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.102141
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.052941
                        }
                      ],
                      "others_margin": -0.337641
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.014533409848809242,
                    "model_output": 0.0145,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0403
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0117
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0076
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0033
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0018
                        }
                      ],
                      "others": -0.0067,
                      "total": 0.0145,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.633143
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.297328
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.255832
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.135891
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.082981
                        }
                      ],
                      "others_margin": -0.371412
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.020947394892573357,
                    "model_output": 0.0209,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0227
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0123
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0093
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0072
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.003
                        }
                      ],
                      "others": -0.012,
                      "total": 0.0209,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.301372
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.210559
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.194519
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.181856
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.086638
                        }
                      ],
                      "others_margin": -0.453535
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.015064173378050327,
                    "model_output": 0.0151,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.042
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0183
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0079
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0031
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0013
                        }
                      ],
                      "others": -0.0063,
                      "total": 0.0151,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.591886
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.435166
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.268273
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.129919
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.057161
                        }
                      ],
                      "others_margin": -0.348112
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.032407816499471664,
                    "model_output": 0.0324,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0335
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0148
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0078
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0045
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0035
                        }
                      ],
                      "others": -0.0028,
                      "total": 0.0324,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.410694
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.254668
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.165364
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.109502
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.093262
                        }
                      ],
                      "others_margin": -0.086419
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.05261978879570961,
                    "model_output": 0.0526,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1588
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0535
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0223
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0158
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0037
                        }
                      ],
                      "others": -0.0193,
                      "total": 0.0526,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.667472
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.385903
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.217814
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.189027
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.049569
                        }
                      ],
                      "others_margin": -0.314104
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.2690463960170746,
                    "model_output": 0.269,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.318
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2289
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0475
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0349
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0237
                        }
                      ],
                      "others": -0.0749,
                      "total": 0.269,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.317966
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.228921
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.047462
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.034883
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.023718
                        }
                      ],
                      "others_margin": -0.074899
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.702101230621338,
                    "model_output": 6.7021,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0893
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0356
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0195
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0183
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0102
                        }
                      ],
                      "others": -0.0405,
                      "total": 6.7021,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.089299
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.03561
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.019501
                        },
                        {
                          "name": "rating",
                          "margin": -0.018333
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.010173
                        }
                      ],
                      "others_margin": -0.040385
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 10,
                  "role_matches": 9,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0069, quality 0.574)",
              "stats": {
                "key_pass": 0.2208,
                "expected_assists": 0.0146,
                "assists": 0.0211,
                "assist_rate": 0.0211,
                "expected_goals": 0.0152,
                "goals": 0.0326,
                "goal_rate": 0.0326,
                "shots_on_target": 0.053,
                "total_shots": 0.2709,
                "rating": 6.7021,
                "minutes": 14.72,
                "total_pass": 8.9489,
                "accurate_pass": 7.8358,
                "duels_won": 1.1085,
                "total_long_balls": 0.6559,
                "accurate_long_balls": 0.3173,
                "total_own_half_passes": 3.5515,
                "accurate_own_half_passes": 3.2876,
                "total_opp_half_passes": 5.3974,
                "accurate_opp_half_passes": 4.5482,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 12.3255,
                "possession_lost": 1.8083,
                "dispossessed": 0.1207,
                "duels_lost": 1.0616,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.4035,
                "tackles_won": 0.3834,
                "tackles": 0.8879,
                "clearances": 0.4881,
                "total_contest": 0.2501,
                "won_contest": 0.0536,
                "challenges_lost": 0.4494,
                "fouls": 0.1743,
                "fouls_drawn": 0.167,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7774,
                "total_progression": 13.9006,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.2179
              },
              "params": {
                "market_value_eur": 14500000,
                "quality_factor": 0.5737,
                "boost_factor": 1.0069,
                "reference_quality": 0.505,
                "history_matches": 10,
                "history_shrink": 0.3333,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0072)",
              "stats": {
                "key_pass": 0.2208,
                "expected_assists": 0.0146,
                "assists": 0.0209,
                "assist_rate": 0.0209,
                "expected_goals": 0.0152,
                "goals": 0.0324,
                "goal_rate": 0.0324,
                "shots_on_target": 0.0526,
                "total_shots": 0.2689,
                "rating": 6.7021,
                "minutes": 14.72,
                "total_pass": 8.9489,
                "accurate_pass": 7.8358,
                "duels_won": 1.1085,
                "total_long_balls": 0.6559,
                "accurate_long_balls": 0.3173,
                "total_own_half_passes": 3.5515,
                "accurate_own_half_passes": 3.2876,
                "total_opp_half_passes": 5.3974,
                "accurate_opp_half_passes": 4.5482,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 12.3255,
                "possession_lost": 1.8083,
                "dispossessed": 0.1207,
                "duels_lost": 1.0616,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.4029,
                "tackles_won": 0.3877,
                "tackles": 0.8879,
                "clearances": 0.4881,
                "total_contest": 0.2501,
                "won_contest": 0.0536,
                "challenges_lost": 0.4494,
                "fouls": 0.1754,
                "fouls_drawn": 0.1658,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7774,
                "total_progression": 13.9006,
                "progressive_carries": 0.2058,
                "shots_off_target": 0.2179
              },
              "params": {
                "blend_weight": 0.0072,
                "history_matches": 10,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.1636,
                "prior_reliability": 0.0333,
                "competition": "La Liga",
                "squad": "Villarreal"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 14.7 to 23.3 expected minutes (appearance prob 0.70)",
              "stats": {
                "key_pass": 0.3312,
                "expected_assists": 0.0219,
                "assists": 0.0313,
                "assist_rate": 0.0313,
                "expected_goals": 0.0228,
                "goals": 0.0486,
                "goal_rate": 0.0486,
                "shots_on_target": 0.0789,
                "total_shots": 0.4058,
                "rating": 6.7021,
                "minutes": 23.33,
                "total_pass": 13.4233,
                "accurate_pass": 11.7537,
                "duels_won": 1.6627,
                "total_long_balls": 0.9839,
                "accurate_long_balls": 0.476,
                "total_own_half_passes": 5.3272,
                "accurate_own_half_passes": 4.9314,
                "total_opp_half_passes": 8.0961,
                "accurate_opp_half_passes": 6.8223,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.4883,
                "possession_lost": 2.7125,
                "dispossessed": 0.1207,
                "duels_lost": 1.5924,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.6043,
                "tackles_won": 0.5816,
                "tackles": 1.3318,
                "clearances": 0.7321,
                "total_contest": 0.3751,
                "won_contest": 0.0804,
                "challenges_lost": 0.4494,
                "fouls": 0.2631,
                "fouls_drawn": 0.2487,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6661,
                "total_progression": 20.8509,
                "progressive_carries": 0.3087,
                "shots_off_target": 0.3269,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.33
              },
              "params": {
                "expected_minutes": 23.33,
                "projection_minutes": 14.72,
                "minutes_scale": 1.5,
                "appearance_probability": 0.703
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.3312,
                "expected_assists": 0.0219,
                "assists": 0.0313,
                "assist_rate": 0.0313,
                "expected_goals": 0.0228,
                "goals": 0.0486,
                "goal_rate": 0.0486,
                "shots_on_target": 0.0789,
                "total_shots": 0.4058,
                "rating": 6.7021,
                "minutes": 23.33,
                "total_pass": 13.4233,
                "accurate_pass": 11.7537,
                "duels_won": 1.6627,
                "total_long_balls": 0.9839,
                "accurate_long_balls": 0.476,
                "total_own_half_passes": 5.3272,
                "accurate_own_half_passes": 4.9314,
                "total_opp_half_passes": 8.0961,
                "accurate_opp_half_passes": 6.8223,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.4883,
                "possession_lost": 2.7125,
                "dispossessed": 0.1207,
                "duels_lost": 1.5924,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.6043,
                "tackles_won": 0.5816,
                "tackles": 1.3318,
                "clearances": 0.7321,
                "total_contest": 0.3751,
                "won_contest": 0.0804,
                "challenges_lost": 0.4494,
                "fouls": 0.2631,
                "fouls_drawn": 0.2487,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6661,
                "total_progression": 20.8509,
                "progressive_carries": 0.3087,
                "shots_off_target": 0.3269,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.33
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.3312,
                "expected_assists": 0.0219,
                "assist_rate": 0.0313,
                "assists": 0,
                "expected_goals": 0.0228,
                "goal_rate": 0.0486,
                "goals": 0,
                "shots_on_target": 0.0789,
                "total_shots": 0.4058,
                "rating": 6.7021,
                "minutes": 23.33,
                "total_pass": 13.4233,
                "accurate_pass": 11.7537,
                "duels_won": 1.6627,
                "total_long_balls": 0.9839,
                "accurate_long_balls": 0.476,
                "total_own_half_passes": 5.3272,
                "accurate_own_half_passes": 4.9314,
                "total_opp_half_passes": 8.0961,
                "accurate_opp_half_passes": 6.8223,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.4883,
                "possession_lost": 2.7125,
                "dispossessed": 0.1207,
                "duels_lost": 1.5924,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.6043,
                "tackles_won": 0.5816,
                "tackles": 1.3318,
                "clearances": 0.7321,
                "total_contest": 0.3751,
                "won_contest": 0.0804,
                "challenges_lost": 0.4494,
                "fouls": 0.2631,
                "fouls_drawn": 0.2487,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6661,
                "total_progression": 20.8509,
                "progressive_carries": 0.3087,
                "shots_off_target": 0.3269,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.33,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "key_pass": 0.3312,
                "expected_assists": 0.0157,
                "assist_rate": 0.0313,
                "assists": 0,
                "expected_goals": 0.0164,
                "goal_rate": 0.0486,
                "goals": 0,
                "shots_on_target": 0.0789,
                "total_shots": 0.4058,
                "rating": 6.7021,
                "minutes": 23.33,
                "total_pass": 13.4233,
                "accurate_pass": 11.7537,
                "duels_won": 1.6627,
                "total_long_balls": 0.9839,
                "accurate_long_balls": 0.476,
                "total_own_half_passes": 5.3272,
                "accurate_own_half_passes": 4.9314,
                "total_opp_half_passes": 8.0961,
                "accurate_opp_half_passes": 6.8223,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.4883,
                "possession_lost": 2.7125,
                "dispossessed": 0.1207,
                "duels_lost": 1.5924,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.6043,
                "tackles_won": 0.5816,
                "tackles": 1.3318,
                "clearances": 0.7321,
                "total_contest": 0.3751,
                "won_contest": 0.0804,
                "challenges_lost": 0.4494,
                "fouls": 0.2631,
                "fouls_drawn": 0.2487,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6661,
                "total_progression": 20.8509,
                "progressive_carries": 0.3087,
                "shots_off_target": 0.3269,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.33,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1307
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "scoreline_reset": true,
                "appearance_weight": 0.703
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0228,
                  "after": 0.0164
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0219,
                  "after": 0.0157
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 65.0)",
              "stats": {
                "key_pass": 0.3312,
                "expected_assists": 0.0157,
                "assist_rate": 0.0313,
                "assists": 0,
                "expected_goals": 0.0164,
                "goal_rate": 0.0486,
                "goals": 0,
                "shots_on_target": 0.0789,
                "total_shots": 0.4058,
                "rating": 6.7021,
                "minutes": 23.33,
                "total_pass": 13.4233,
                "accurate_pass": 11.7537,
                "duels_won": 1.6627,
                "total_long_balls": 0.9839,
                "accurate_long_balls": 0.476,
                "total_own_half_passes": 5.3272,
                "accurate_own_half_passes": 4.9314,
                "total_opp_half_passes": 8.0961,
                "accurate_opp_half_passes": 6.8223,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.4883,
                "possession_lost": 2.7125,
                "dispossessed": 0.1207,
                "duels_lost": 1.5924,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.6043,
                "tackles_won": 0.5816,
                "tackles": 1.3318,
                "clearances": 0.7321,
                "total_contest": 0.3751,
                "won_contest": 0.0804,
                "challenges_lost": 0.4494,
                "fouls": 0.2631,
                "fouls_drawn": 0.2487,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6661,
                "total_progression": 20.8509,
                "progressive_carries": 0.3087,
                "shots_off_target": 0.3269,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.33,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1307,
                "fifa_overall": 65.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": 7717,
                "fifa_rank": 11804.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 65.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.3312,
                "expected_assists": 0.0157,
                "assist_rate": 0.0313,
                "assists": 0,
                "expected_goals": 0.0164,
                "goal_rate": 0.0486,
                "goals": 0,
                "shots_on_target": 0.0789,
                "total_shots": 0.4058,
                "rating": 6.7021,
                "minutes": 23.33,
                "total_pass": 13.4233,
                "accurate_pass": 11.7537,
                "duels_won": 1.6627,
                "total_long_balls": 0.9839,
                "accurate_long_balls": 0.476,
                "total_own_half_passes": 5.3272,
                "accurate_own_half_passes": 4.9314,
                "total_opp_half_passes": 8.0961,
                "accurate_opp_half_passes": 6.8223,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.4883,
                "possession_lost": 2.7125,
                "dispossessed": 0.1207,
                "duels_lost": 1.5924,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.6043,
                "tackles_won": 0.5816,
                "tackles": 1.3318,
                "clearances": 0.7321,
                "total_contest": 0.3751,
                "won_contest": 0.0804,
                "challenges_lost": 0.4494,
                "fouls": 0.2631,
                "fouls_drawn": 0.2487,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6661,
                "total_progression": 20.8509,
                "progressive_carries": 0.3087,
                "shots_off_target": 0.3269,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.33,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0162,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.1307,
                "fifa_overall": 65.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0162,
                "goal_rate": 0.0486,
                "scorer_weight": 0.0205,
                "squad_weight_total": 1.5114,
                "weight_share": 0.0136,
                "finishing_factor": 1.25,
                "appearance_weight": 0.703,
                "weight_rank": 10,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.3312,
                "expected_assists": 0.0157,
                "assist_rate": 0.0313,
                "assists": 0,
                "expected_goals": 0.0164,
                "goal_rate": 0.0486,
                "goals": 0,
                "shots_on_target": 0.0789,
                "total_shots": 0.4058,
                "rating": 6.7021,
                "minutes": 23.33,
                "total_pass": 13.4233,
                "accurate_pass": 11.7537,
                "duels_won": 1.6627,
                "total_long_balls": 0.9839,
                "accurate_long_balls": 0.476,
                "total_own_half_passes": 5.3272,
                "accurate_own_half_passes": 4.9314,
                "total_opp_half_passes": 8.0961,
                "accurate_opp_half_passes": 6.8223,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 18.4883,
                "possession_lost": 2.7125,
                "dispossessed": 0.1207,
                "duels_lost": 1.5924,
                "aerial_won": 0.0,
                "aerial_lost": 0.1207,
                "interceptions": 0.6043,
                "tackles_won": 0.5816,
                "tackles": 1.3318,
                "clearances": 0.7321,
                "total_contest": 0.3751,
                "won_contest": 0.0804,
                "challenges_lost": 0.4494,
                "fouls": 0.2631,
                "fouls_drawn": 0.2487,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.6661,
                "total_progression": 20.8509,
                "progressive_carries": 0.3087,
                "shots_off_target": 0.3269,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.33,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0162,
                "projected_assists": 0,
                "assist_probability": 0.0155,
                "finishing_factor": 1.25,
                "creation_factor": 1.1307,
                "fifa_overall": 65.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0155,
                "assist_rate": 0.0313,
                "provider_weight": 0.0178,
                "squad_weight_total": 1.1097,
                "weight_share": 0.016,
                "creation_factor": 1.1307,
                "appearance_weight": 0.703,
                "weight_rank": 11,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Nathan-Dylan Saliba": {
          "player_id": 1093229,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 24,
          "height": 173,
          "market_value": 13800000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0134,
            "assist_rate": 0.0268,
            "assists": 0,
            "expected_goals": 0.0171,
            "goal_rate": 0.0343,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.7788,
            "minutes": 22,
            "total_pass": 22,
            "accurate_pass": 20,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 7,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 14,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 28,
            "possession_lost": 3.3992,
            "dispossessed": 0.8995,
            "duels_lost": 3,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 10,
            "total_progression": 41,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.522,
            "bench_expected_minutes": 22.48,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.547,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0168,
            "projected_assists": 0,
            "assist_probability": 0.0132,
            "finishing_factor": 1.0255,
            "creation_factor": 1.0213,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16421076,
              "match_date": "2026-10-17",
              "home_team": "Villarreal",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Elche",
              "stats": {
                "minutes": 24,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0299,
                "expected_assists": 0.0158,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 13,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421066,
              "match_date": "2026-10-10",
              "home_team": "Real Madrid",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 34,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0196,
                "expected_assists": 0.0266,
                "total_shots": 1,
                "total_pass": 31,
                "accurate_pass": 28,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416294,
              "match_date": "2026-09-20",
              "home_team": "Villarreal",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1143,
                "expected_assists": 0.0184,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 39,
                "accurate_pass": 36,
                "tackles": 5,
                "tackles_won": 2,
                "interceptions": 3,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416338,
              "match_date": "2026-09-17",
              "home_team": "Málaga CF",
              "away_team": "Villarreal",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Málaga CF",
              "stats": {
                "minutes": 80,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0195,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 38,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "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": 16416333,
              "match_date": "2026-09-14",
              "home_team": "Villarreal",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Villarreal",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 36,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0253,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 32,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416324,
              "match_date": "2026-09-05",
              "home_team": "Villarreal",
              "away_team": "Deportivo de A Coruña",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Villarreal",
              "opponent": "Deportivo de A Coruña",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1151,
                "expected_assists": 0.1364,
                "total_shots": 1,
                "total_pass": 73,
                "accurate_pass": 67,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 3,
                "interceptions": 3,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 10,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4406,
            "combined_rank_score": 2430.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4706.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7788,
            "source_file": "data/player_rankings.csv",
            "player_name": "Nathan-Dylan Saliba",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Francés",
                  "ranking": 4401
                },
                {
                  "player_name": "Florin Tănase",
                  "ranking": 4402
                },
                {
                  "player_name": "Víctor García",
                  "ranking": 4403
                },
                {
                  "player_name": "Kings Kangwa",
                  "ranking": 4404
                },
                {
                  "player_name": "Soualiho Meïté",
                  "ranking": 4405
                }
              ],
              "lower": [
                {
                  "player_name": "Luca Koleosho",
                  "ranking": 4407
                },
                {
                  "player_name": "Anastasios Bakasetas",
                  "ranking": 4408
                },
                {
                  "player_name": "Rick van Drongelen",
                  "ranking": 4409
                },
                {
                  "player_name": "Rodrigo Echeverría",
                  "ranking": 4410
                },
                {
                  "player_name": "Romaine Mundle",
                  "ranking": 4411
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.625,
          "history_matches": 6,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 6,
            "data_confidence": 0.625,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.48122902993721,
            "bench_appearance_prob": 0.5218740468153277,
            "market_value_adjustment": 1.0083,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (6 historical appearances) to 22.5 expected mins (appearance prob 0.52)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.3941,
                "expected_assists": 0.0289,
                "assists": 0.0307,
                "assist_rate": 0.0307,
                "expected_goals": 0.0369,
                "goals": 0.0394,
                "goal_rate": 0.0394,
                "shots_on_target": 0.1556,
                "total_shots": 0.4567,
                "rating": 6.7788,
                "minutes": 26.0,
                "total_pass": 25.688,
                "accurate_pass": 23.2925,
                "duels_won": 1.0,
                "total_long_balls": 0.6113,
                "accurate_long_balls": 0.3304,
                "total_own_half_passes": 7.8902,
                "accurate_own_half_passes": 7.5598,
                "total_opp_half_passes": 17.7979,
                "accurate_opp_half_passes": 15.7328,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 31.621,
                "possession_lost": 3.8989,
                "dispossessed": 0.8921,
                "duels_lost": 3.8834,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.3304,
                "total_contest": 0.2809,
                "won_contest": 0.0,
                "challenges_lost": 1.1079,
                "fouls": 1.6025,
                "fouls_drawn": 1.0,
                "blocks": 0.3887,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.4947,
                "total_progression": 47.4374,
                "progressive_carries": 0.3887,
                "shots_off_target": 0.3011
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-24T10:06:41.574598+00:00",
                  "trained_on": {
                    "matches": 1391,
                    "players": 903,
                    "rows": 24475
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-17",
                    "opponent": "Elche",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.2408,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-10-10",
                    "opponent": "Real Madrid",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.2047,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-20",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.174,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-17",
                    "opponent": "Málaga CF",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.1479,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-14",
                    "opponent": "Real Betis",
                    "minutes": 36.0,
                    "is_starting": false,
                    "weight": 0.1257,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Deportivo de A Coruña",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1069,
                    "rating": 7.7
                  }
                ],
                "feature_row": {
                  "history_matches": 6.0,
                  "is_starting_11": 0.0,
                  "creative_index": 0.0626,
                  "totalShots": 1.0744,
                  "expectedGoals": 0.0434,
                  "expectedAssists": 0.0331,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.3940896689891815,
                    "model_output": 0.3941,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1647
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1377
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0663
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0524
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0316
                      }
                    ],
                    "decomposition": {
                      "base": 0.8945,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3947
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.05
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0361
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0312
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.0193
                        }
                      ],
                      "others": 0.0309,
                      "total": 0.3941,
                      "log_link": true,
                      "margin_base": -0.111507,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.582123
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.105362
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.083601
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.078457
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.051843
                        }
                      ],
                      "others_margin": 0.081717
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.02887754887342453,
                    "model_output": 0.0289,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1545
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1048
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1021
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0476
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0472
                      }
                    ],
                    "decomposition": {
                      "base": 0.0859,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0371
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0087
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.004
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0032
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0016,
                      "total": 0.0289,
                      "log_link": true,
                      "margin_base": -2.454719,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.565201
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.196813
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.104342
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.093179
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.0743
                        }
                      ],
                      "others_margin": -0.056137
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.030700264498591423,
                    "model_output": 0.0307,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.0619
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0395
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0343
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0335
                      }
                    ],
                    "decomposition": {
                      "base": 0.0874,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0218
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.012
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0069
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0044
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0019
                        }
                      ],
                      "others": -0.0097,
                      "total": 0.0307,
                      "log_link": true,
                      "margin_base": -2.437263,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.286715
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.201202
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.137006
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.098503
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.046246
                        }
                      ],
                      "others_margin": -0.276548
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.036912981420755386,
                    "model_output": 0.0369,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.134
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.074
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0705
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.039
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0273
                      }
                    ],
                    "decomposition": {
                      "base": 0.094,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0386
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0075
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0036
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0028
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0019
                        }
                      ],
                      "others": -0.0065,
                      "total": 0.0369,
                      "log_link": true,
                      "margin_base": -2.364919,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.529113
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.146072
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.079048
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.066034
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.043918
                        }
                      ],
                      "others_margin": -0.157924
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.03937075659632683,
                    "model_output": 0.0394,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0974
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0527
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0513
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0365
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.03
                      }
                    ],
                    "decomposition": {
                      "base": 0.0993,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0335
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.007
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0061
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0061
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0049
                        }
                      ],
                      "others": -0.0145,
                      "total": 0.0394,
                      "log_link": true,
                      "margin_base": -2.309444,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.41074
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.112355
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.109261
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.109085
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.086373
                        }
                      ],
                      "others_margin": -0.315642
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.15559719502925873,
                    "model_output": 0.1556,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1106
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0885
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0762
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0292
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0279
                      }
                    ],
                    "decomposition": {
                      "base": 0.326,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1382
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0205
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0151
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0115
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0095
                        }
                      ],
                      "others": -0.0396,
                      "total": 0.1556,
                      "log_link": true,
                      "margin_base": -1.120773,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.551445
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.103585
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.075228
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.057907
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.047431
                        }
                      ],
                      "others_margin": -0.2271
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.45672473311424255,
                    "model_output": 0.4567,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1261
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1167
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0633
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0419
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.9969,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4019
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.035
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0348
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0251
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0239
                        }
                      ],
                      "others": -0.1591,
                      "total": 0.4567,
                      "log_link": false,
                      "margin_base": 0.996896,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.401912
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.035006
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.034803
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.025131
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.023872
                        }
                      ],
                      "others_margin": -0.159065
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.778803825378418,
                    "model_output": 6.7788,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0947
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0836
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0491
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0438
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.036
                      }
                    ],
                    "decomposition": {
                      "base": 6.8561,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0986
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0889
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0329
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0275
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0239
                        }
                      ],
                      "others": -0.0311,
                      "total": 6.7788,
                      "log_link": false,
                      "margin_base": 6.856052,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.098573
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.088858
                        },
                        {
                          "name": "rating",
                          "margin": -0.032855
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.027549
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.023884
                        }
                      ],
                      "others_margin": -0.031011
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 6,
                  "role_matches": 3,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0083, quality 0.566)",
              "stats": {
                "key_pass": 0.3974,
                "expected_assists": 0.0291,
                "assists": 0.031,
                "assist_rate": 0.031,
                "expected_goals": 0.0372,
                "goals": 0.0397,
                "goal_rate": 0.0397,
                "shots_on_target": 0.1569,
                "total_shots": 0.4605,
                "rating": 6.7788,
                "minutes": 26.0,
                "total_pass": 25.9012,
                "accurate_pass": 23.4858,
                "duels_won": 1.0083,
                "total_long_balls": 0.6164,
                "accurate_long_balls": 0.3331,
                "total_own_half_passes": 7.9557,
                "accurate_own_half_passes": 7.6225,
                "total_opp_half_passes": 17.9456,
                "accurate_opp_half_passes": 15.8634,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 31.8835,
                "possession_lost": 3.9313,
                "dispossessed": 0.8995,
                "duels_lost": 3.9156,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.3331,
                "total_contest": 0.2832,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.6158,
                "fouls_drawn": 1.0083,
                "blocks": 0.3919,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.5901,
                "total_progression": 47.8311,
                "progressive_carries": 0.3919,
                "shots_off_target": 0.3036
              },
              "params": {
                "market_value_eur": 13800000,
                "quality_factor": 0.566,
                "boost_factor": 1.0083,
                "reference_quality": 0.505,
                "history_matches": 6,
                "history_shrink": 0.4545,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 26.0 to 22.5 expected minutes (appearance prob 0.52)",
              "stats": {
                "key_pass": 0.3436,
                "expected_assists": 0.0252,
                "assists": 0.0268,
                "assist_rate": 0.0268,
                "expected_goals": 0.0322,
                "goals": 0.0343,
                "goal_rate": 0.0343,
                "shots_on_target": 0.1357,
                "total_shots": 0.3982,
                "rating": 6.7788,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2625,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48
              },
              "params": {
                "expected_minutes": 22.48,
                "projection_minutes": 26.0,
                "minutes_scale": 0.8647,
                "appearance_probability": 0.522
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.3436,
                "expected_assists": 0.0252,
                "assists": 0.0268,
                "assist_rate": 0.0268,
                "expected_goals": 0.0322,
                "goals": 0.0343,
                "goal_rate": 0.0343,
                "shots_on_target": 0.1357,
                "total_shots": 0.3982,
                "rating": 6.7788,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2625,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "key_pass": 0.3436,
                "expected_assists": 0.0252,
                "assist_rate": 0.0268,
                "assists": 0,
                "expected_goals": 0.0322,
                "goal_rate": 0.0343,
                "goals": 0,
                "shots_on_target": 0.1357,
                "total_shots": 0.3982,
                "rating": 6.7788,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2625,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.45 (squad xG sum 1.4221, xG scale 1.0203, xA scale 1.0203, team xA 1.08 = 0.75 x lambda)",
              "stats": {
                "key_pass": 0.3436,
                "expected_assists": 0.0134,
                "assist_rate": 0.0268,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0343,
                "goals": 0,
                "shots_on_target": 0.1357,
                "total_shots": 0.3982,
                "rating": 6.7788,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2625,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "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.0255,
                "creation_factor": 1.0213
              },
              "params": {
                "team_lambda": 1.451,
                "squad_xg_sum": 1.4221,
                "squad_xa_sum": 1.0618,
                "team_expected_assists": 1.0833,
                "team_xa_to_xg_ratio": 0.7466,
                "bench_appearance_weighted": true,
                "xg_scale": 1.0203,
                "xa_scale": 1.0203,
                "opponent_lambda": 0.899,
                "scoreline_reset": true,
                "appearance_weight": 0.522
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0322,
                  "after": 0.0171
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0252,
                  "after": 0.0134
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 71.0)",
              "stats": {
                "key_pass": 0.3436,
                "expected_assists": 0.0134,
                "assist_rate": 0.0268,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0343,
                "goals": 0,
                "shots_on_target": 0.1357,
                "total_shots": 0.3982,
                "rating": 6.7788,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2625,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "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.0255,
                "creation_factor": 1.0213,
                "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": 4406,
                "fifa_rank": 4706.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 71.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.3436,
                "expected_assists": 0.0134,
                "assist_rate": 0.0268,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0343,
                "goals": 0,
                "shots_on_target": 0.1357,
                "total_shots": 0.3982,
                "rating": 6.7788,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2625,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0168,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0255,
                "creation_factor": 1.0213,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0168,
                "goal_rate": 0.0343,
                "scorer_weight": 0.0175,
                "squad_weight_total": 1.5114,
                "weight_share": 0.0116,
                "finishing_factor": 1.0255,
                "appearance_weight": 0.522,
                "weight_rank": 12,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alberto Moleiro",
                    "weight": 0.36,
                    "already": 0,
                    "effective_weight": 0.36,
                    "runner_up": "Ayoze Pérez",
                    "runner_up_effective_weight": 0.3212
                  }
                ]
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)",
              "stats": {
                "key_pass": 0.3436,
                "expected_assists": 0.0134,
                "assist_rate": 0.0268,
                "assists": 0,
                "expected_goals": 0.0171,
                "goal_rate": 0.0343,
                "goals": 0,
                "shots_on_target": 0.1357,
                "total_shots": 0.3982,
                "rating": 6.7788,
                "minutes": 22.48,
                "total_pass": 22.3958,
                "accurate_pass": 20.3073,
                "duels_won": 0.8718,
                "total_long_balls": 0.533,
                "accurate_long_balls": 0.288,
                "total_own_half_passes": 6.879,
                "accurate_own_half_passes": 6.5909,
                "total_opp_half_passes": 15.5169,
                "accurate_opp_half_passes": 13.7165,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.5685,
                "possession_lost": 3.3992,
                "dispossessed": 0.8995,
                "duels_lost": 3.3857,
                "aerial_won": 0.0,
                "aerial_lost": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.288,
                "total_contest": 0.2449,
                "won_contest": 0.0,
                "challenges_lost": 1.1171,
                "fouls": 1.3971,
                "fouls_drawn": 0.8718,
                "blocks": 0.3389,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 10.0215,
                "total_progression": 41.3578,
                "progressive_carries": 0.3389,
                "shots_off_target": 0.2625,
                "bench_appearance_probability": 0.522,
                "bench_expected_minutes": 22.48,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.547,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0168,
                "projected_assists": 0,
                "assist_probability": 0.0132,
                "finishing_factor": 1.0255,
                "creation_factor": 1.0213,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0132,
                "assist_rate": 0.0268,
                "provider_weight": 0.0137,
                "squad_weight_total": 1.1097,
                "weight_share": 0.0123,
                "creation_factor": 1.0213,
                "appearance_weight": 0.522,
                "weight_rank": 13,
                "eligible_players": 13,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ilias Akhomach",
                    "weight": 0.1799,
                    "already": 0,
                    "effective_weight": 0.1799,
                    "runner_up": "Sergi Cardona",
                    "runner_up_effective_weight": 0.1014,
                    "blocked_own_goal": [
                      "Alberto Moleiro"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.45,
        "expected_assists": 1.08,
        "total_shots": 16,
        "shots_on_target": 5,
        "total_passes": 517,
        "interceptions": 7,
        "tackles": 14,
        "avg_rating": 6.98,
        "possession_estimated_pct": 50.8,
        "pressing_actions_per_90": 7.1
      }
    }
  },
  "antagonist_report": {
    "home_attacking_duels": [
      {
        "attacker": "Javier Guerra",
        "attacker_role": "LW",
        "attacker_market_value": 26000000,
        "attacker_height": 187,
        "attacker_skill_quality": 0.686,
        "defenders": [
          "Sergi Cardona"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.506,
        "duel_zone": "Left Wing vs Right Back — Flank Battle",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.546,
        "xg_contribution": 0.1839,
        "xg_multiplier": 1.0965,
        "shots_in_zone": 2.1,
        "dribbles_attempted": 4,
        "dribbles_successful": 1.9,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 2.3,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Sergi Cardona",
            "role": "RB",
            "market_value": 8600000,
            "tackles_attempted": 2.0,
            "tackles_won": 1.5,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.454
          }
        ],
        "duel_analysis": "Javier Guerra (LW) is slightly favored against Sergi Cardona in a direct 1v1 contest. Duel win probability: 55%. The quality gap is significant (€26M vs €9M avg). Matchup xG multiplier ×1.10 (×1.00 = his usual level). Projected xG contribution: 0.184 — creating consistent moderate threat."
      },
      {
        "attacker": "Dani Raba",
        "attacker_role": "ST",
        "attacker_market_value": 1000000,
        "attacker_height": 184,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Renato Veiga",
          "Alexander Freeman"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.638,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.1496,
        "xg_multiplier": 0.8007,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.7,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Renato Veiga",
            "role": "CB",
            "market_value": 29000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Alexander Freeman",
            "role": "CB",
            "market_value": 13800000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Dani Raba (ST) faces tough defensive resistance against Renato Veiga and Alexander Freeman in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€1M vs €21M avg). Matchup xG multiplier ×0.80 (×1.00 = his usual level). Projected xG contribution: 0.150 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Arnaut Danjuma",
        "attacker_role": "ST",
        "attacker_market_value": 2800000,
        "attacker_height": 178,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Renato Veiga",
          "Alexander Freeman"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.638,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.1315,
        "xg_multiplier": 0.7654,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.5,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Renato Veiga",
            "role": "CB",
            "market_value": 29000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Alexander Freeman",
            "role": "CB",
            "market_value": 13800000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Arnaut Danjuma (ST) is heavily outmatched defensively against Renato Veiga and Alexander Freeman in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€3M vs €21M avg). Matchup xG multiplier ×0.77 (×1.00 = his usual level). Projected xG contribution: 0.131 — with very limited chance creation expected."
      },
      {
        "attacker": "Luis Rioja",
        "attacker_role": "ST",
        "attacker_market_value": 1900000,
        "attacker_height": 173,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Renato Veiga",
          "Alexander Freeman"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.638,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.1126,
        "xg_multiplier": 0.7419,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.3,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Renato Veiga",
            "role": "CB",
            "market_value": 29000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Alexander Freeman",
            "role": "CB",
            "market_value": 13800000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Luis Rioja (ST) is heavily outmatched defensively against Renato Veiga and Alexander Freeman in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€2M vs €21M avg). Matchup xG multiplier ×0.74 (×1.00 = his usual level). Projected xG contribution: 0.113 — with very limited chance creation expected."
      },
      {
        "attacker": "Guido Rodríguez",
        "attacker_role": "CDM",
        "attacker_market_value": 3600000,
        "attacker_height": 185,
        "attacker_skill_quality": 0.445,
        "defenders": [
          "Pape Gueye"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.775,
        "duel_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.237,
        "xg_contribution": 0.0345,
        "xg_multiplier": 0.7604,
        "shots_in_zone": 0.8,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.4,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "HIGH",
        "defender_stats": [
          {
            "player": "Pape Gueye",
            "role": "CM",
            "market_value": 39000000,
            "tackles_attempted": 2.2,
            "tackles_won": 2.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.2,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.763
          }
        ],
        "duel_analysis": "Guido Rodríguez (CDM) is heavily outmatched defensively against Pape Gueye in a direct 1v1 contest. Duel win probability: 24%. The quality gap is significant (€4M vs €39M avg). Matchup xG multiplier ×0.76 (×1.00 = his usual level). Projected xG contribution: 0.035 — with very limited chance creation expected."
      },
      {
        "attacker": "Pepelu",
        "attacker_role": "CDM",
        "attacker_market_value": 7300000,
        "attacker_height": 185,
        "attacker_skill_quality": 0.49,
        "defenders": [
          "Pape Gueye"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.775,
        "duel_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.261,
        "xg_contribution": 0.0235,
        "xg_multiplier": 0.7954,
        "shots_in_zone": 0.8,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.5,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "HIGH",
        "defender_stats": [
          {
            "player": "Pape Gueye",
            "role": "CM",
            "market_value": 39000000,
            "tackles_attempted": 2.2,
            "tackles_won": 2.0,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.2,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.739
          }
        ],
        "duel_analysis": "Pepelu (CDM) is heavily outmatched defensively against Pape Gueye in a direct 1v1 contest. Duel win probability: 26%. The quality gap is significant (€7M vs €39M avg). Matchup xG multiplier ×0.80 (×1.00 = his usual level). Projected xG contribution: 0.023 — with very limited chance creation expected."
      }
    ],
    "away_attacking_duels": [
      {
        "attacker": "Ayoze Pérez",
        "attacker_role": "ST",
        "attacker_market_value": 5400000,
        "attacker_height": 180,
        "attacker_skill_quality": 0.467,
        "defenders": [
          "Justin De Haas",
          "César Tárrega"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.505,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.2934,
        "xg_multiplier": 0.8797,
        "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": "Justin De Haas",
            "role": "CB",
            "market_value": 7700000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82
          },
          {
            "player": "César Tárrega",
            "role": "CB",
            "market_value": 9300000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Ayoze Pérez (ST) faces tough defensive resistance against Justin De Haas and César Tárrega in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.88 (×1.00 = his usual level). Projected xG contribution: 0.293 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Alberto Moleiro",
        "attacker_role": "ST",
        "attacker_market_value": 54000000,
        "attacker_height": 172,
        "attacker_skill_quality": 0.837,
        "defenders": [
          "Justin De Haas",
          "César Tárrega"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.505,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.275,
        "xg_contribution": 0.3859,
        "xg_multiplier": 1.1097,
        "shots_in_zone": 2.4,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.5,
        "aerial_duels": 3,
        "aerial_won": 1.3,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.7,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Justin De Haas",
            "role": "CB",
            "market_value": 7700000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.725
          },
          {
            "player": "César Tárrega",
            "role": "CB",
            "market_value": 9300000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.725
          }
        ],
        "duel_analysis": "Alberto Moleiro (ST) is slightly favored against Justin De Haas and César Tárrega in a 2-defender block. Duel win probability: 27%. The quality gap is significant (€54M vs €8M avg). Matchup xG multiplier ×1.11 (×1.00 = his usual level). Projected xG contribution: 0.386 — creating consistent moderate threat."
      },
      {
        "attacker": "Gerard Moreno",
        "attacker_role": "ST",
        "attacker_market_value": 2400000,
        "attacker_height": 180,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Justin De Haas",
          "César Tárrega"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.505,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.2345,
        "xg_multiplier": 0.86,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.6,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Justin De Haas",
            "role": "CB",
            "market_value": 7700000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82
          },
          {
            "player": "César Tárrega",
            "role": "CB",
            "market_value": 9300000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Gerard Moreno (ST) faces tough defensive resistance against Justin De Haas and César Tárrega in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.86 (×1.00 = his usual level). Projected xG contribution: 0.235 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Ilias Akhomach",
        "attacker_role": "ST",
        "attacker_market_value": 11100000,
        "attacker_height": 175,
        "attacker_skill_quality": 0.535,
        "defenders": [
          "Justin De Haas",
          "César Tárrega"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.505,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.107,
        "xg_multiplier": 0.9101,
        "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.5,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Justin De Haas",
            "role": "CB",
            "market_value": 7700000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          },
          {
            "player": "César Tárrega",
            "role": "CB",
            "market_value": 9300000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Ilias Akhomach (ST) faces tough defensive resistance against Justin De Haas and César Tárrega in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.91 (×1.00 = his usual level). Projected xG contribution: 0.107 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Santi Comesaña",
        "attacker_role": "LM",
        "attacker_market_value": 8400000,
        "attacker_height": 187,
        "attacker_skill_quality": 0.503,
        "defenders": [
          "Pablo Maffeo"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.437,
        "duel_zone": "Left Mid vs Right Back — Wide Channel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.548,
        "xg_contribution": 0.0633,
        "xg_multiplier": 1.1298,
        "shots_in_zone": 1.7,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.4,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 2.2,
        "fouls_drawn": 1.0,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Pablo Maffeo",
            "role": "RB",
            "market_value": 2400000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.4,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.452
          }
        ],
        "duel_analysis": "Santi Comesaña (LM) is slightly favored against Pablo Maffeo in a direct 1v1 contest. Duel win probability: 55%.  Matchup xG multiplier ×1.13 (×1.00 = his usual level). Projected xG contribution: 0.063 — creating consistent moderate threat."
      },
      {
        "attacker": "Pape Gueye",
        "attacker_role": "CM",
        "attacker_market_value": 39000000,
        "attacker_height": 187,
        "attacker_skill_quality": 0.775,
        "defenders": [
          "Guido Rodríguez"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.445,
        "duel_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.613,
        "xg_contribution": 0.1442,
        "xg_multiplier": 1.2396,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.6,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Guido Rodríguez",
            "role": "CDM",
            "market_value": 3600000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.4,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.387
          }
        ],
        "duel_analysis": "Pape Gueye (CM) has a clear attacking advantage against Guido Rodríguez in a direct 1v1 contest. Duel win probability: 61%. The quality gap is significant (€39M vs €4M avg). Matchup xG multiplier ×1.24 (×1.00 = his usual level). Projected xG contribution: 0.144 — and projects to generate high-quality chances."
      }
    ],
    "midfield_battle": {
      "home_midfield_power": 0.54,
      "away_midfield_power": 0.614,
      "home_creative_power": 0.5,
      "away_creative_power": 0.544,
      "home_defensive_power": 0.504,
      "away_defensive_power": 0.544,
      "home_dominance_ratio": 0.468,
      "home_midfield_count": 3,
      "away_midfield_count": 2,
      "home_midfield_players": [
        "Javier Guerra",
        "Guido Rodríguez",
        "Pepelu"
      ],
      "away_midfield_players": [
        "Pape Gueye",
        "Santi Comesaña"
      ],
      "possession_advantage": "neutral",
      "estimated_possession_home_pct": 49.2,
      "estimated_possession_away_pct": 50.8,
      "home_pressing_actions_per_90": 6.8,
      "away_pressing_actions_per_90": 7.1,
      "home_key_passes_projected": 4.5,
      "away_key_passes_projected": 4.8,
      "home_throughball_threat": 2.1,
      "away_throughball_threat": 2.2,
      "key_personal_duel": "Javier Guerra vs Pape Gueye",
      "midfield_lambda_factor_home": 0.99,
      "midfield_lambda_factor_away": 1.01
    },
    "formation_analysis": {
      "home_formation": "4-2-3-1",
      "away_formation": "4-4-2",
      "home_tactical_bonus": 0.07,
      "away_tactical_bonus": -0.04,
      "formation_verdict": "4-2-3-1 creates structural superiority against 4-4-2. Home team should exploit wider spaces and numerical advantages in transition."
    },
    "home_lambda": 0.899,
    "away_lambda": 1.451,
    "home_top_threat_zones": [
      "Left Wing vs Right Back — Flank Battle",
      "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": {
      "Javier Guerra": {
        "opponents": [
          "Sergi Cardona",
          "Pape Gueye"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Dani Raba": {
        "opponents": [
          "Renato Veiga",
          "Alexander Freeman"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Arnaut Danjuma": {
        "opponents": [
          "Renato Veiga",
          "Alexander Freeman"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Luis Rioja": {
        "opponents": [
          "Renato Veiga",
          "Alexander Freeman"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Guido Rodríguez": {
        "opponents": [
          "Pape Gueye"
        ],
        "primary_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
        "source": "attacking_duel, defensive_duel, midfield_pairing"
      },
      "Pepelu": {
        "opponents": [
          "Pape Gueye",
          "Santi Comesaña"
        ],
        "primary_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Justin De Haas": {
        "opponents": [
          "Ayoze Pérez",
          "Alberto Moleiro",
          "Gerard Moreno",
          "Ilias Akhomach"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "César Tárrega": {
        "opponents": [
          "Ayoze Pérez",
          "Alberto Moleiro",
          "Gerard Moreno",
          "Ilias Akhomach"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Pablo Maffeo": {
        "opponents": [
          "Santi Comesaña"
        ],
        "primary_zone": "Left Mid vs Right Back — Wide Channel",
        "source": "defensive_duel"
      },
      "Stole Dimitrievski": {
        "opponents": [
          "Alberto Moleiro",
          "Ilias Akhomach"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "José Luis Gayà": {
        "opponents": [
          "Ayoze Pérez"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "away_player_antagonists": {
      "Sergi Cardona": {
        "opponents": [
          "Javier Guerra"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "defensive_duel"
      },
      "Renato Veiga": {
        "opponents": [
          "Dani Raba",
          "Arnaut Danjuma",
          "Luis Rioja"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Alexander Freeman": {
        "opponents": [
          "Dani Raba",
          "Arnaut Danjuma",
          "Luis Rioja"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Pape Gueye": {
        "opponents": [
          "Guido Rodríguez",
          "Pepelu",
          "Javier Guerra"
        ],
        "primary_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
        "source": "defensive_duel, attacking_duel, midfield_pairing"
      },
      "Ayoze Pérez": {
        "opponents": [
          "Justin De Haas",
          "César Tárrega"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Alberto Moleiro": {
        "opponents": [
          "Justin De Haas",
          "César Tárrega"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Gerard Moreno": {
        "opponents": [
          "Justin De Haas",
          "César Tárrega"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Ilias Akhomach": {
        "opponents": [
          "Justin De Haas",
          "César Tárrega"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Santi Comesaña": {
        "opponents": [
          "Pablo Maffeo",
          "Pepelu"
        ],
        "primary_zone": "Left Mid vs Right Back — Wide Channel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Péter Gulácsi": {
        "opponents": [
          "Arnaut Danjuma",
          "Luis Rioja"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Juan Foyth": {
        "opponents": [
          "Dani Raba"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "key_tactical_insight": "Midfield is evenly contested — Javier Guerra vs Pape Gueye will be the pivotal duel. Total antagonist xG — Home: 0.64, Away: 1.23. Home danger zone: Left Wing vs Right Back — Flank Battle. 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": 1.0107,
      "away_gk_opposition_factor": 1.0107,
      "home_set_piece_bonus": 0.1261,
      "away_set_piece_bonus": 0.1558,
      "home_defensive_solidity_vs": 0.9605,
      "away_defensive_solidity_vs": 0.9985,
      "home_midfield_factor": 0.99,
      "away_midfield_factor": 1.01,
      "stage_discount": 1.0,
      "quality_gap_applied": true,
      "home_avg_quality": 0.4834,
      "away_avg_quality": 0.5843,
      "avg_quality_gap": -0.101,
      "squad_value_gap_log": -0.9139,
      "top5_value_gap_log": -0.8874,
      "attack_value_gap_log": -0.9071,
      "elite_count_gap": -1,
      "combined_quality_gap": -0.2261,
      "stronger_lambda_boost": 0.1243,
      "weaker_lambda_suppression": 0.0723,
      "home_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.35
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.6356,
          "n_duels": 6,
          "duel_confidence": 0.75,
          "result": 0.8142
        },
        {
          "label": "midfield_factor",
          "factor": 0.99,
          "result": 0.8061
        },
        {
          "label": "formation_bonus",
          "factor": 1.07,
          "result": 0.8625
        },
        {
          "label": "home_advantage",
          "factor": 1.15,
          "result": 0.9919
        },
        {
          "label": "standing_factor",
          "factor": 0.886,
          "result": 0.8788
        },
        {
          "label": "gk_opposition",
          "factor": 1.0107,
          "result": 0.8881
        },
        {
          "label": "defensive_solidity",
          "factor": 0.9605,
          "result": 0.8531
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.1261,
          "result": 0.9792
        },
        {
          "label": "engine_clamp",
          "pre": 0.9792,
          "result": 0.9792,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": -0.2261,
          "factor": 0.9277,
          "pre": 0.9792,
          "result": 0.9083
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 0.9083
        },
        {
          "label": "bench_bonus",
          "side": "home",
          "bonus": 0.1854,
          "result": 1.0934
        },
        {
          "label": "fbref_blend",
          "side": "home",
          "applied": true,
          "blending_weight": 0.228,
          "empirical_lambda": 0.3284,
          "result": 0.919
        },
        {
          "label": "router_clamp",
          "pre": 0.919,
          "result": 0.919,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "h2h_adjustment",
          "applied": true,
          "multiplier": 0.9786,
          "pre": 0.919,
          "result": 0.8993,
          "available": true
        },
        {
          "label": "mismatch_pressure",
          "applied": false,
          "reason": "quality gap below 0.30",
          "result": 0.899
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 0.899
        },
        {
          "label": "final_clamp",
          "applied": false,
          "pre": 0.899,
          "result": 0.899,
          "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.899
        }
      ],
      "away_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.35
        },
        {
          "label": "duel_blend",
          "raw_xg": 1.2283,
          "n_duels": 6,
          "duel_confidence": 0.75,
          "result": 1.2587
        },
        {
          "label": "midfield_factor",
          "factor": 1.01,
          "result": 1.2713
        },
        {
          "label": "formation_bonus",
          "factor": 0.96,
          "result": 1.2205
        },
        {
          "label": "home_advantage",
          "factor": 1.0,
          "result": 1.2205
        },
        {
          "label": "standing_factor",
          "factor": 1.0077,
          "result": 1.2299
        },
        {
          "label": "gk_opposition",
          "factor": 1.0107,
          "result": 1.243
        },
        {
          "label": "defensive_solidity",
          "factor": 0.9985,
          "result": 1.2411
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.1558,
          "result": 1.3969
        },
        {
          "label": "engine_clamp",
          "pre": 1.3969,
          "result": 1.3969,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": -0.2261,
          "factor": 1.1243,
          "pre": 1.3969,
          "result": 1.5706
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 1.5706
        },
        {
          "label": "bench_bonus",
          "side": "away",
          "bonus": 0.173,
          "result": 1.744
        },
        {
          "label": "fbref_blend",
          "side": "away",
          "applied": true,
          "blending_weight": 0.228,
          "empirical_lambda": 0.3259,
          "result": 1.4207
        },
        {
          "label": "router_clamp",
          "pre": 1.4207,
          "result": 1.421,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "h2h_adjustment",
          "applied": true,
          "multiplier": 1.0214,
          "pre": 1.421,
          "result": 1.4514,
          "available": true
        },
        {
          "label": "mismatch_pressure",
          "applied": false,
          "reason": "quality gap below 0.30",
          "result": 1.451
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 1.451
        },
        {
          "label": "final_clamp",
          "applied": false,
          "pre": 1.451,
          "result": 1.451,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "competition_calibration",
          "applied": false,
          "reason": "no_sofascore_matches_data",
          "samples": 0,
          "scale": 1.0,
          "observed_total_goals": 0.0,
          "result": 1.451
        }
      ],
      "home_bench_lambda_bonus": 0.1854,
      "away_bench_lambda_bonus": 0.173,
      "home_bench_players_modelled": 7,
      "away_bench_players_modelled": 7,
      "fbref_team_priors": {
        "applied": true,
        "home_squad": "Valencia",
        "away_squad": "Villarreal",
        "home_goals_per90": 0.3333333333333333,
        "away_goals_against_per90": 1.33,
        "away_goals_per90": 1.3333333333333333,
        "home_goals_against_per90": 0.33,
        "home_empirical_lambda": 0.328,
        "away_empirical_lambda": 0.326,
        "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.899,
      "pre_competitive_floor_away_lambda": 1.451,
      "pre_calibration_home_lambda": 0.919,
      "pre_calibration_away_lambda": 1.4207,
      "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.899,
      "final_away_lambda": 1.451
    }
  },
  "home_standing": {
    "available": true,
    "team_position": 19,
    "opponent_position": 12,
    "standing_lambda_multiplier": 0.886,
    "attack_index": 0.796,
    "defense_concede_index": 0.931,
    "form_multiplier": 0.988,
    "team_attack_rate_contextual": 1.22,
    "opp_defense_rate_contextual": 1.43,
    "team_ppg": 0.94,
    "opponent_ppg": 1.14
  },
  "away_standing": {
    "available": true,
    "team_position": 12,
    "opponent_position": 19,
    "standing_lambda_multiplier": 1.0077,
    "attack_index": 0.931,
    "defense_concede_index": 1.089,
    "form_multiplier": 1.012,
    "team_attack_rate_contextual": 1.43,
    "opp_defense_rate_contextual": 1.67,
    "team_ppg": 1.14,
    "opponent_ppg": 0.94
  },
  "xgboost_reasoning": {
    "summary": "Antagonist + XGBoost match analysis for Valencia vs Villarreal. Player statistics regressed using position-specific XGBoost models (G, D, M, F) with 2026-2027 FBref priors. Micro-duels resolved across 4-2-3-1 vs 4-4-2 (duel lambdas: Home 0.919, Away 1.421). Final calibrated Poisson lambdas: Home 0.899, Away 1.451 (most likely score 0-1).",
    "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": 8,
      "home_bench_modelled": 7,
      "away_bench_modelled": 7
    },
    "team_priors": {
      "applied": true,
      "home_squad": "Valencia",
      "away_squad": "Villarreal",
      "home_goals_per90": 0.3333333333333333,
      "away_goals_against_per90": 1.33,
      "away_goals_per90": 1.3333333333333333,
      "home_goals_against_per90": 0.33,
      "home_empirical_lambda": 0.328,
      "away_empirical_lambda": 0.326,
      "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.899,
      "away_lambda": 1.451,
      "micro_duel_home_lambda": 0.919,
      "micro_duel_away_lambda": 1.421
    },
    "calibration_and_pressure": {
      "competition_calibration_applied": false,
      "competition_calibration_scale": 1.0,
      "mismatch_pressure_applied": false,
      "underdog_floor_applied": false
    }
  },
  "timestamp": "2026-10-24T13:32:56Z",
  "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
  }
}