{
  "match_info": {
    "home_team": "Osasuna",
    "away_team": "Racing Club",
    "tournament": "LaLiga",
    "date": "20261018",
    "timezone": "America/New_York",
    "home_formation": "4-3-3",
    "away_formation": "4-2-3-1",
    "lineup_status": "unconfirmed_official",
    "lineup_source": "/matches/get-lineups",
    "lineup_confirmed": false,
    "lineup_confidence": 0.75
  },
  "prediction": {
    "most_likely_score": "1-1",
    "home_goals": 1,
    "away_goals": 1,
    "most_likely_score_probability": 0.1237,
    "most_likely_winning_score_home": "1-0",
    "most_likely_winning_score_home_probability": 0.087,
    "most_likely_winning_score_away": "0-1",
    "most_likely_winning_score_away_probability": 0.0927,
    "match_resolution": "draw",
    "predicted_winner": "Draw",
    "tiebreaker": {
      "applies": false,
      "method": "none",
      "regulation_draw_probability": 0.2606,
      "shootout_home_win_probability": null,
      "shootout_away_win_probability": null,
      "penalty_home_goals": null,
      "penalty_away_goals": null,
      "penalty_score": null,
      "penalty_winner": null,
      "penalty_winner_goals": null,
      "penalty_loser_goals": null,
      "penalty_result": null,
      "home_advance_probability": null,
      "away_advance_probability": null,
      "projected_winner": null,
      "projected_winner_probability": null,
      "final_score_after_penalties": null,
      "deciding_stage": null,
      "deciding_scoreline": null,
      "deciding_scoreline_probability": null,
      "deciding_route_probability": null,
      "reason": "Tie-breaker not required for this match context."
    },
    "top_5_scorelines": [
      {
        "score": "1-1",
        "probability": 0.1237
      },
      {
        "score": "0-1",
        "probability": 0.0927
      },
      {
        "score": "1-0",
        "probability": 0.087
      },
      {
        "score": "1-2",
        "probability": 0.0852
      },
      {
        "score": "2-1",
        "probability": 0.0799
      }
    ],
    "scoreline_probabilities": {
      "0-0": 0.0687,
      "0-1": 0.0927,
      "0-2": 0.0652,
      "0-3": 0.0302,
      "0-4": 0.0105,
      "0-5": 0.0029,
      "0-6": 0.0007,
      "1-0": 0.087,
      "1-1": 0.1237,
      "1-2": 0.0852,
      "1-3": 0.0395,
      "1-4": 0.0137,
      "1-5": 0.0038,
      "1-6": 0.0009,
      "2-0": 0.0575,
      "2-1": 0.0799,
      "2-2": 0.0556,
      "2-3": 0.0257,
      "2-4": 0.0089,
      "2-5": 0.0025,
      "2-6": 0.0006,
      "3-0": 0.025,
      "3-1": 0.0348,
      "3-2": 0.0242,
      "3-3": 0.0112,
      "3-4": 0.0039,
      "3-5": 0.0011,
      "4-0": 0.0082,
      "4-1": 0.0113,
      "4-2": 0.0079,
      "4-3": 0.0037,
      "4-4": 0.0013,
      "5-0": 0.0021,
      "5-1": 0.003,
      "5-2": 0.0021,
      "5-3": 0.001,
      "6-1": 0.0006
    },
    "outcome": {
      "home_win": 0.3501,
      "draw": 0.2606,
      "away_win": 0.3893
    },
    "markets": {
      "over_2_5_goals": 0.5051,
      "under_2_5_goals": 0.4949,
      "btts_yes": 0.5485,
      "btts_no": 0.4515,
      "home_clean_sheet": 0.2491,
      "away_clean_sheet": 0.2712
    },
    "home_ratings": {
      "DR": 6.71,
      "MCR": 6.9,
      "ATR": 6.81,
      "GK": 6.89
    },
    "away_ratings": {
      "DR": 6.74,
      "MCR": 6.84,
      "ATR": 6.87,
      "GK": 6.85
    },
    "insights": {
      "summary": "Antagonist matchup analysis for Osasuna vs Racing Club. Most likely scoreline: 1-1. Lambdas derived from 6 home and 6 away individual player duels. Head-to-head: Osasuna 3W-0D-7L vs Racing Club over 10 meetings.",
      "key_player": "Projected scorer(s): Ante Budimir, Yassir Zabiri",
      "tactical_analysis": "Tactical parity between 4-3-3 and 4-2-3-1. Match outcome driven primarily by individual player quality. Midfield is evenly contested — Jon Moncayola vs Iván Martín will be the pivotal duel. Total antagonist xG — Home: 0.71, Away: 0.86. Home danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle."
    },
    "confidence": 0.7,
    "home_lambda": 1.305,
    "away_lambda": 1.39,
    "h2h": {
      "available": true,
      "meetings": 10,
      "home_wins": 3,
      "away_wins": 7,
      "draws": 0,
      "home_multiplier": 0.9714,
      "away_multiplier": 1.0286
    },
    "modal_scoreline": "1-1",
    "modal_scoreline_probability": 0.1237,
    "headline_policy": null
  },
  "pregame_baseline": {
    "fair_win_probability": {
      "home_win": 0.3501,
      "draw": 0.2606,
      "away_win": 0.3893
    },
    "favorite": "Racing Club",
    "favorite_win_probability": 0.3893,
    "fair_spread": -0.085,
    "fair_total": 2.695,
    "prop_estimates": [
      {
        "market": "team_total_goals",
        "selection": "Osasuna",
        "estimate": 1.305,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "team_total_goals",
        "selection": "Racing Club",
        "estimate": 1.39,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "over_2_5_goals",
        "selection": "yes",
        "estimate": 2.5,
        "probability": 0.5051,
        "unit": "probability"
      },
      {
        "market": "both_teams_to_score",
        "selection": "yes",
        "estimate": 1.0,
        "probability": 0.5485,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Osasuna",
        "estimate": 1.0,
        "probability": 0.2491,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Racing Club",
        "estimate": 1.0,
        "probability": 0.2712,
        "unit": "probability"
      },
      {
        "market": "anytime_goal",
        "selection": "Ante Budimir (Osasuna)",
        "estimate": 0.6025,
        "probability": 0.4526,
        "unit": "xG"
      },
      {
        "market": "anytime_goal",
        "selection": "Yassir Zabiri (Racing Club)",
        "estimate": 0.5614,
        "probability": 0.4296,
        "unit": "xG"
      },
      {
        "market": "assist",
        "selection": "Alejandro Catena (Osasuna)",
        "estimate": 0.1917,
        "probability": 0.1744,
        "unit": "xA"
      },
      {
        "market": "assist",
        "selection": "Iñigo Vicente (Racing Club)",
        "estimate": 0.2273,
        "probability": 0.2033,
        "unit": "xA"
      }
    ],
    "expected_pace": {
      "tempo": "balanced",
      "expected_total_goals": 2.695,
      "expected_total_shots": 25,
      "expected_total_passes": 836,
      "expected_pressing_actions_per_90": 12.1,
      "possession_home_pct": 50.7,
      "possession_away_pct": 49.3,
      "notes": "possession projects near even"
    },
    "expected_game_script": {
      "favorite": "Racing Club",
      "favorite_win_probability": 0.3893,
      "script": "Racing Club is the fair winner side, but the baseline remains narrow: fair spread -0.09 goals and fair total 2.69.",
      "first_half": "Expect balanced tempo while both sides test the matchup thesis; shot baseline is about 12 first-half attempts.",
      "second_half": "If level after halftime, midfield control and bench quality should decide territory; Osasuna must keep the match inside one goal.",
      "late_game": "A Racing Club lead likely shifts toward control and counters; a draw state keeps set pieces and transition chances live."
    },
    "key_matchup_thesis": "Racing Club chance creation leans on Yassir Zabiri against Enzo Boyomo, Alejandro Catena in Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle; possession projects near even.",
    "expected_rotation_usage_behavior": [
      "Osasuna: starters carry the main goal usage through Ante Budimir; bench watchlist: Romain Del Castillo, Jonathan Dubasin.",
      "Racing Club: starters carry the main goal usage through Yassir Zabiri; bench watchlist: Andrés Martín, Giorgi Guliashvili.",
      "Assist usage should flow through Alejandro Catena, Iñigo Vicente; late lineup changes should re-score these allocations."
    ],
    "pregame_play_by_play": [
      "0-15: Racing Club tries to establish the projected edge; track possession and first-shot share.",
      "15-45: Baseline expects balanced tempo, about 12 total first-half shots, and 1.35 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 Osasuna 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 Racing Club.",
      "Osasuna 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": {
    "Osasuna": {
      "formation": "4-3-3",
      "players": {
        "Aitor Fernández": {
          "player_id": 99516,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 13,
          "height": 182,
          "market_value": 375000,
          "stats": {
            "saves": 3,
            "goals_prevented": -0.0674,
            "rating": 6.8879,
            "minutes": 90,
            "total_pass": 28,
            "accurate_pass": 19,
            "total_long_balls": 14,
            "accurate_long_balls": 5,
            "touches": 39,
            "clearances": 1,
            "ball_recovery": 8,
            "high_claims": 1,
            "punches": 0.0,
            "aerial_won": 0,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 2,
            "possession_lost": 9.4491,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 17,
            "accurate_own_half_passes": 16,
            "gk_engine_opponent_lambda": 1.3505,
            "shots_faced": 13.2,
            "expected_saves": 3.23,
            "high_pressure_saves": 1.11,
            "opponent_faced": "Yassir Zabiri, Pablo García",
            "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": 16421054,
              "match_date": "2026-10-11",
              "home_team": "Real Betis",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 24,
                "ball_recovery": 9,
                "saves": 3,
                "goals_prevented": -1.5592
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416305,
              "match_date": "2026-09-19",
              "home_team": "Osasuna",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0021,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 14,
                "clearances": 1,
                "ball_recovery": 10,
                "saves": 1,
                "goals_prevented": -0.575
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416335,
              "match_date": "2026-09-16",
              "home_team": "Atlético Madrid",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0012,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 18,
                "clearances": 2,
                "ball_recovery": 8,
                "saves": 7,
                "goals_prevented": -0.0894
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083634,
              "match_date": "2026-05-12",
              "home_team": "Osasuna",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 19,
                "clearances": 1,
                "ball_recovery": 6,
                "saves": 2,
                "goals_prevented": 0.2518
              },
              "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": 14083568,
              "match_date": "2026-05-08",
              "home_team": "Levante UD",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 46,
                "rating": 8.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.001,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 12,
                "duels_won": 1,
                "ball_recovery": 8,
                "saves": 7,
                "goals_prevented": 0.7965
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 2135,
            "combined_rank_score": 806.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 68.0,
            "sofascore_rating": 7.6,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1544.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8879,
            "source_file": "data/player_rankings.csv",
            "player_name": "Aitor Fernández",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Oleksiy Shchebetun",
                  "ranking": 2130
                },
                {
                  "player_name": "Nurzhakhon Muzaffarov",
                  "ranking": 2131
                },
                {
                  "player_name": "Nosirzhon Abdusalomov",
                  "ranking": 2132
                },
                {
                  "player_name": "Tomás Ariel Silva",
                  "ranking": 2133
                },
                {
                  "player_name": "Tjay De Barr",
                  "ranking": 2134
                }
              ],
              "lower": [
                {
                  "player_name": "Franco Bechtholdt",
                  "ranking": 2136
                },
                {
                  "player_name": "Lutsharel Geertruida",
                  "ranking": 2137
                },
                {
                  "player_name": "Vlatko Stojanovski",
                  "ranking": 2138
                },
                {
                  "player_name": "Islom Tukhtakhuzhaev",
                  "ranking": 2139
                },
                {
                  "player_name": "Juan Figueroa",
                  "ranking": 2140
                }
              ]
            }
          },
          "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": "Osasuna",
              "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, Osasuna, 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": 3.0276,
                "goals_prevented": -0.0681,
                "rating": 6.8879,
                "minutes": 90.0,
                "total_pass": 28.2874,
                "accurate_pass": 19.0086,
                "total_long_balls": 13.9425,
                "accurate_long_balls": 4.6637,
                "touches": 39.2707,
                "clearances": 0.9129,
                "ball_recovery": 8.4619,
                "high_claims": 0.9129,
                "punches": 0.0,
                "aerial_won": 0.0,
                "sweeper_actions": 0.6862,
                "sweeper_accurate": 0.6862,
                "saves_inside_box": 1.6932,
                "possession_lost": 9.5455,
                "duels_won": 0.0,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 17.5317,
                "accurate_own_half_passes": 15.9972
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-17T10:04:09.876591+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 200,
                    "rows": 7041
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1656,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-08",
                    "opponent": "Levante UD",
                    "minutes": 46.0,
                    "is_starting": false,
                    "weight": 0.1408,
                    "rating": 8.4
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 1.0,
                  "accurateLongBalls": 5.274,
                  "save_contribution": 3.3025,
                  "distribution_accuracy": 0.9125,
                  "accurateOwnHalfPasses": 14.4492,
                  "passValueNormalized": 0.0446,
                  "totalOwnHalfPasses": 15.9085
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 3.0276458263397217,
                    "model_output": 3.0276,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "save_contribution",
                        "importance": 0.0393
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.039
                      },
                      {
                        "name": "saves",
                        "importance": 0.0355
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0354
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 2.941,
                      "items": [
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0381
                        },
                        {
                          "name": "saves",
                          "contribution": 0.0218
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0171
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0168
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0153
                        }
                      ],
                      "others": 0.0081,
                      "total": 3.0276,
                      "log_link": true,
                      "margin_base": 1.078763,
                      "item_margins": [
                        {
                          "name": "passValueNormalized",
                          "margin": 0.012875
                        },
                        {
                          "name": "saves",
                          "margin": 0.0073
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.005681
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": 0.005536
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.005059
                        }
                      ],
                      "others_margin": 0.002689
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.06813616305589676,
                    "model_output": -0.0681,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.0405
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.0401
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0394
                      },
                      {
                        "name": "totalOwnHalfPasses",
                        "importance": 0.0381
                      },
                      {
                        "name": "punches",
                        "importance": 0.0363
                      }
                    ],
                    "decomposition": {
                      "base": -0.0281,
                      "items": [
                        {
                          "name": "goodHighClaim",
                          "contribution": -0.0163
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0161
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.016
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0127
                        },
                        {
                          "name": "accurateOwnHalfPasses",
                          "contribution": 0.0119
                        }
                      ],
                      "others": -0.0228,
                      "total": -0.0681,
                      "log_link": false,
                      "margin_base": -0.028113,
                      "item_margins": [
                        {
                          "name": "goodHighClaim",
                          "margin": -0.016341
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.016084
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.015984
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": -0.012702
                        },
                        {
                          "name": "accurateOwnHalfPasses",
                          "margin": 0.011914
                        }
                      ],
                      "others_margin": -0.022794
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.887864112854004,
                    "model_output": 6.8879,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0379
                      },
                      {
                        "name": "commanding_index",
                        "importance": 0.0375
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.037
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0354
                      },
                      {
                        "name": "sweeper_accuracy",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 6.9974,
                      "items": [
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0285
                        },
                        {
                          "name": "goalsPrevented",
                          "contribution": -0.0235
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": -0.0185
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0163
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0146
                        }
                      ],
                      "others": -0.0081,
                      "total": 6.8879,
                      "log_link": false,
                      "margin_base": 6.997403,
                      "item_margins": [
                        {
                          "name": "minutesPlayed",
                          "margin": -0.028456
                        },
                        {
                          "name": "goalsPrevented",
                          "margin": -0.023515
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "margin": -0.018456
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.016346
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.014597
                        }
                      ],
                      "others_margin": -0.008169
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 5,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9899, quality 0.437)",
              "stats": {
                "saves": 2.9971,
                "goals_prevented": -0.0674,
                "rating": 6.8879,
                "minutes": 90.0,
                "total_pass": 28.0017,
                "accurate_pass": 18.8166,
                "total_long_balls": 13.8017,
                "accurate_long_balls": 4.6166,
                "touches": 38.8741,
                "clearances": 0.9037,
                "ball_recovery": 8.3764,
                "high_claims": 0.9037,
                "punches": 0.0,
                "aerial_won": 0.0,
                "sweeper_actions": 0.6793,
                "sweeper_accurate": 0.6793,
                "saves_inside_box": 1.6761,
                "possession_lost": 9.4491,
                "duels_won": 0.0,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 17.3546,
                "accurate_own_half_passes": 15.8356
              },
              "params": {
                "market_value_eur": 375000,
                "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.9971,
                "goals_prevented": -0.0674,
                "rating": 6.8879,
                "minutes": 90.0,
                "total_pass": 28.0017,
                "accurate_pass": 18.8166,
                "total_long_balls": 13.8017,
                "accurate_long_balls": 4.6166,
                "touches": 38.8741,
                "clearances": 0.9037,
                "ball_recovery": 8.3764,
                "high_claims": 0.9037,
                "punches": 0.0,
                "aerial_won": 0.0,
                "sweeper_actions": 0.6793,
                "sweeper_accurate": 0.6793,
                "saves_inside_box": 1.6761,
                "possession_lost": 9.4491,
                "duels_won": 0.0,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 17.3546,
                "accurate_own_half_passes": 15.8356
              },
              "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.9971,
                "goals_prevented": -0.0674,
                "rating": 6.8879,
                "minutes": 90.0,
                "total_pass": 28.0017,
                "accurate_pass": 18.8166,
                "total_long_balls": 13.8017,
                "accurate_long_balls": 4.6166,
                "touches": 38.8741,
                "clearances": 0.9037,
                "ball_recovery": 8.3764,
                "high_claims": 0.9037,
                "punches": 0.0,
                "aerial_won": 0.0,
                "sweeper_actions": 0.6793,
                "sweeper_accurate": 0.6793,
                "saves_inside_box": 1.6761,
                "possession_lost": 9.4491,
                "duels_won": 0.0,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 17.3546,
                "accurate_own_half_passes": 15.8356,
                "gk_engine_opponent_lambda": 1.3505,
                "shots_faced": 12.8,
                "expected_saves": 3.13,
                "high_pressure_saves": 1.08,
                "opponent_faced": "Yassir Zabiri, Pablo García",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Yassir Zabiri, Pablo García",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 1.3505
                }
              }
            },
            {
              "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.9971,
                "goals_prevented": -0.0674,
                "rating": 6.8879,
                "minutes": 90.0,
                "total_pass": 28.0017,
                "accurate_pass": 18.8166,
                "total_long_balls": 13.8017,
                "accurate_long_balls": 4.6166,
                "touches": 38.8741,
                "clearances": 0.9037,
                "ball_recovery": 8.3764,
                "high_claims": 0.9037,
                "punches": 0.0,
                "aerial_won": 0.0,
                "sweeper_actions": 0.6793,
                "sweeper_accurate": 0.6793,
                "saves_inside_box": 1.6761,
                "possession_lost": 9.4491,
                "duels_won": 0.0,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 17.3546,
                "accurate_own_half_passes": 15.8356,
                "gk_engine_opponent_lambda": 1.3505,
                "shots_faced": 12.8,
                "expected_saves": 3.13,
                "high_pressure_saves": 1.08,
                "opponent_faced": "Yassir Zabiri, Pablo García",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "saves": 2.9971,
                "goals_prevented": -0.0674,
                "rating": 6.8879,
                "minutes": 90.0,
                "total_pass": 28.0017,
                "accurate_pass": 18.8166,
                "total_long_balls": 13.8017,
                "accurate_long_balls": 4.6166,
                "touches": 38.8741,
                "clearances": 0.9037,
                "ball_recovery": 8.3764,
                "high_claims": 0.9037,
                "punches": 0.0,
                "aerial_won": 0.0,
                "sweeper_actions": 0.6793,
                "sweeper_accurate": 0.6793,
                "saves_inside_box": 1.6761,
                "possession_lost": 9.4491,
                "duels_won": 0.0,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 17.3546,
                "accurate_own_half_passes": 15.8356,
                "gk_engine_opponent_lambda": 1.3505,
                "shots_faced": 13.2,
                "expected_saves": 3.23,
                "high_pressure_saves": 1.11,
                "opponent_faced": "Yassir Zabiri, Pablo García",
                "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.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 12.8,
                  "after": 13.2
                },
                {
                  "stat": "expected_saves",
                  "before": 3.13,
                  "after": 3.23
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 1.08,
                  "after": 1.11
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 77.0)",
              "stats": {
                "saves": 2.9971,
                "goals_prevented": -0.0674,
                "rating": 6.8879,
                "minutes": 90.0,
                "total_pass": 28.0017,
                "accurate_pass": 18.8166,
                "total_long_balls": 13.8017,
                "accurate_long_balls": 4.6166,
                "touches": 38.8741,
                "clearances": 0.9037,
                "ball_recovery": 8.3764,
                "high_claims": 0.9037,
                "punches": 0.0,
                "aerial_won": 0.0,
                "sweeper_actions": 0.6793,
                "sweeper_accurate": 0.6793,
                "saves_inside_box": 1.6761,
                "possession_lost": 9.4491,
                "duels_won": 0.0,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 17.3546,
                "accurate_own_half_passes": 15.8356,
                "gk_engine_opponent_lambda": 1.3505,
                "shots_faced": 13.2,
                "expected_saves": 3.23,
                "high_pressure_saves": 1.11,
                "opponent_faced": "Yassir Zabiri, Pablo García",
                "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": 3,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2135,
                "fifa_rank": 1544.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "saves": 2.9971,
                "goals_prevented": -0.0674,
                "rating": 6.8879,
                "minutes": 90.0,
                "total_pass": 28.0017,
                "accurate_pass": 18.8166,
                "total_long_balls": 13.8017,
                "accurate_long_balls": 4.6166,
                "touches": 38.8741,
                "clearances": 0.9037,
                "ball_recovery": 8.3764,
                "high_claims": 0.9037,
                "punches": 0.0,
                "aerial_won": 0.0,
                "sweeper_actions": 0.6793,
                "sweeper_accurate": 0.6793,
                "saves_inside_box": 1.6761,
                "possession_lost": 9.4491,
                "duels_won": 0.0,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 17.3546,
                "accurate_own_half_passes": 15.8356,
                "gk_engine_opponent_lambda": 1.3505,
                "shots_faced": 13.2,
                "expected_saves": 3.23,
                "high_pressure_saves": 1.11,
                "opponent_faced": "Yassir Zabiri, Pablo García",
                "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": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 1.3652,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.9971,
                "goals_prevented": -0.0674,
                "rating": 6.8879,
                "minutes": 90.0,
                "total_pass": 28.0017,
                "accurate_pass": 18.8166,
                "total_long_balls": 13.8017,
                "accurate_long_balls": 4.6166,
                "touches": 38.8741,
                "clearances": 0.9037,
                "ball_recovery": 8.3764,
                "high_claims": 0.9037,
                "punches": 0.0,
                "aerial_won": 0.0,
                "sweeper_actions": 0.6793,
                "sweeper_accurate": 0.6793,
                "saves_inside_box": 1.6761,
                "possession_lost": 9.4491,
                "duels_won": 0.0,
                "duels_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 17.3546,
                "accurate_own_half_passes": 15.8356,
                "gk_engine_opponent_lambda": 1.3505,
                "shots_faced": 13.2,
                "expected_saves": 3.23,
                "high_pressure_saves": 1.11,
                "opponent_faced": "Yassir Zabiri, Pablo García",
                "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": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 0.9792,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Moi Gómez": {
          "player_id": 149370,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 16,
          "height": 174,
          "market_value": 1600000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1606,
            "assist_rate": 0.0906,
            "assists": 0,
            "expected_goals": 0.0511,
            "goal_rate": 0.0456,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 7.097,
            "minutes": 78,
            "total_pass": 46,
            "accurate_pass": 40,
            "duels_won": 5,
            "total_long_balls": 5,
            "accurate_long_balls": 3,
            "total_own_half_passes": 17,
            "accurate_own_half_passes": 16,
            "total_opp_half_passes": 29,
            "accurate_opp_half_passes": 25,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 59,
            "possession_lost": 9.1852,
            "dispossessed": 0.2925,
            "duels_lost": 2,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.004,
            "ball_carries": 19,
            "total_progression": 43,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "duel_xg_multiplier": 0.9412,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.7,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.41,
            "pressing_faced": "LOW",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Íñigo Sáinz-Maza",
            "opponent_faced": "Íñigo Sáinz-Maza",
            "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0498,
            "projected_assists": 0,
            "assist_probability": 0.1484,
            "finishing_factor": 1.126,
            "creation_factor": 0.8804,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16421054,
              "match_date": "2026-10-11",
              "home_team": "Real Betis",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1988,
                "total_shots": 0,
                "total_pass": 69,
                "accurate_pass": 64,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 60,
                "rating": 7.5,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.423,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 25,
                "key_pass": 3,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 6,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 77,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0211,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 35,
                "key_pass": 1,
                "tackles": 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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 16,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0284,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 10,
                "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": 16416296,
              "match_date": "2026-08-24",
              "home_team": "Osasuna",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 87,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0123,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 28,
                "interceptions": 3,
                "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": 14083723,
              "match_date": "2026-05-23",
              "home_team": "Getafe",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 20,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0038,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 14,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 32,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1245,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 36,
                "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": 14083634,
              "match_date": "2026-05-12",
              "home_team": "Osasuna",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 72,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0736,
                "total_shots": 0,
                "total_pass": 53,
                "accurate_pass": 47,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 2,
                "aerial_won": 1,
                "duels_won": 8,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083495,
              "match_date": "2026-05-02",
              "home_team": "Osasuna",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 70,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0961,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 20,
                "key_pass": 4,
                "tackles": 2,
                "clearances": 1,
                "duels_won": 6,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083231,
              "match_date": "2026-04-26",
              "home_team": "Osasuna",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 19,
                "rating": 7.2,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.2662,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 21,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3212,
            "combined_rank_score": 1162.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 374.0,
            "sofascore_rating": 6.9667,
            "sofascore_appearances": 3.0,
            "fifa_rank": 1951.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.097,
            "source_file": "data/player_rankings.csv",
            "player_name": "Moi Gómez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Pepelu",
                  "ranking": 3207
                },
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "Benjamin Henrichs",
                  "ranking": 3213
                },
                {
                  "player_name": "Harvey Elliott",
                  "ranking": 3214
                },
                {
                  "player_name": "Azor Matusiwa",
                  "ranking": 3215
                },
                {
                  "player_name": "Eljif Elmas",
                  "ranking": 3216
                },
                {
                  "player_name": "Lazaros Rota",
                  "ranking": 3217
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.77,
          "history_matches": 31,
          "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": 31,
            "data_confidence": 0.77,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9972,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 2.0,
              "minutes": 179.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (M_service) evaluated 31 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Osasuna, 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": 1.5041,
                "expected_assists": 0.11,
                "assists": 0.092,
                "assist_rate": 0.092,
                "expected_goals": 0.0372,
                "goals": 0.0492,
                "goal_rate": 0.0492,
                "shots_on_target": 0.1449,
                "total_shots": 0.5832,
                "rating": 7.097,
                "minutes": 78.49,
                "total_pass": 46.6131,
                "accurate_pass": 40.5228,
                "duels_won": 4.7455,
                "total_long_balls": 4.8874,
                "accurate_long_balls": 3.1073,
                "total_own_half_passes": 17.4216,
                "accurate_own_half_passes": 15.6617,
                "total_opp_half_passes": 29.1915,
                "accurate_opp_half_passes": 24.8611,
                "crosses_total": 1.6949,
                "crosses_accurate": 0.5411,
                "touches": 59.1215,
                "possession_lost": 9.211,
                "dispossessed": 0.2933,
                "duels_lost": 2.4354,
                "aerial_won": 0.5924,
                "aerial_lost": 0.3361,
                "interceptions": 0.9194,
                "tackles_won": 0.6228,
                "tackles": 1.3588,
                "clearances": 0.7935,
                "total_contest": 1.5799,
                "won_contest": 1.0987,
                "challenges_lost": 0.6982,
                "fouls": 0.6914,
                "fouls_drawn": 1.6955,
                "blocks": 0.1606,
                "big_chances_created": 0.2815,
                "big_chances_missed": 0.0,
                "xgot": 0.0029,
                "ball_carries": 18.738,
                "total_progression": 43.45,
                "progressive_carries": 1.1542,
                "shots_off_target": 0.4383
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-17T10:05:52.581708+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.151,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Deportivo Alavés",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.1283,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.1091,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Celta Vigo",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.0927,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Levante UD",
                    "minutes": 87.0,
                    "is_starting": true,
                    "weight": 0.0788,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Getafe",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.067,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Espanyol",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.0569,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Atlético Madrid",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0484,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "FC Barcelona",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Sevilla",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.035,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.0965,
                  "creative_index": 0.5216,
                  "expectedGoals": 0.0038,
                  "expectedAssists": 0.1237,
                  "onTargetScoringAttempt": 0.0049
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.5041329860687256,
                    "model_output": 1.5041,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.128
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.1017
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.111
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.1075
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0441
                        }
                      ],
                      "others": 0.1188,
                      "total": 1.5041,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.133972
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.094922
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.094287
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.083571
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.032358
                        }
                      ],
                      "others_margin": 0.082296
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.11002790927886963,
                    "model_output": 0.11,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0096
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0072
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0038
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0033
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0028
                        }
                      ],
                      "others": 0.0099,
                      "total": 0.11,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.106615
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.073124
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.036033
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.031867
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.028058
                        }
                      ],
                      "others_margin": 0.094732
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.09195968508720398,
                    "model_output": 0.092,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0091
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0066
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0066
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0056
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0051
                        }
                      ],
                      "others": 0.0032,
                      "total": 0.092,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.110289
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.088541
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.088249
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.068757
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.059346
                        }
                      ],
                      "others_margin": 0.035146
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.037207700312137604,
                    "model_output": 0.0372,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0378
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0138
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0066
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0026
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0018
                        }
                      ],
                      "others": -0.0077,
                      "total": 0.0372,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.513119
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.279224
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.142901
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.055015
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.039086
                        }
                      ],
                      "others_margin": -0.186369
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.049217358231544495,
                    "model_output": 0.0492,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0233
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0148
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0074
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0041
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0031
                        }
                      ],
                      "others": -0.0169,
                      "total": 0.0492,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.27236
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.221934
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.117596
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.063535
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.047458
                        }
                      ],
                      "others_margin": -0.293786
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.144899383187294,
                    "model_output": 0.1449,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0976
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0529
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0251
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0139
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0082
                        }
                      ],
                      "others": -0.0333,
                      "total": 0.1449,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.356188
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.263651
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.133962
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.07203
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.044841
                        }
                      ],
                      "others_margin": -0.207279
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5831965208053589,
                    "model_output": 0.5832,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2955
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1303
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.065
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0458
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0216
                        }
                      ],
                      "others": -0.1147,
                      "total": 0.5832,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.295456
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.130271
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.065007
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.04583
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.021625
                        }
                      ],
                      "others_margin": -0.114691
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.096992492675781,
                    "model_output": 7.097,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.12
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0482
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.042
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0304
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0156
                        }
                      ],
                      "others": 0.0189,
                      "total": 7.097,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.11997
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.048181
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.041978
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.030378
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.015619
                        }
                      ],
                      "others_margin": 0.01905
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 31,
                  "role_matches": 16,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9972, quality 0.437)",
              "stats": {
                "key_pass": 1.4999,
                "expected_assists": 0.1097,
                "assists": 0.0917,
                "assist_rate": 0.0917,
                "expected_goals": 0.0371,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "shots_on_target": 0.1445,
                "total_shots": 0.5816,
                "rating": 7.097,
                "minutes": 78.49,
                "total_pass": 46.4826,
                "accurate_pass": 40.4093,
                "duels_won": 4.7322,
                "total_long_balls": 4.8737,
                "accurate_long_balls": 3.0986,
                "total_own_half_passes": 17.3728,
                "accurate_own_half_passes": 15.6178,
                "total_opp_half_passes": 29.1098,
                "accurate_opp_half_passes": 24.7915,
                "crosses_total": 1.6902,
                "crosses_accurate": 0.5396,
                "touches": 58.956,
                "possession_lost": 9.1852,
                "dispossessed": 0.2925,
                "duels_lost": 2.4286,
                "aerial_won": 0.5907,
                "aerial_lost": 0.3352,
                "interceptions": 0.9168,
                "tackles_won": 0.6211,
                "tackles": 1.355,
                "clearances": 0.7913,
                "total_contest": 1.5755,
                "won_contest": 1.0956,
                "challenges_lost": 0.6962,
                "fouls": 0.6895,
                "fouls_drawn": 1.6908,
                "blocks": 0.1602,
                "big_chances_created": 0.2807,
                "big_chances_missed": 0.0,
                "xgot": 0.0029,
                "ball_carries": 18.6855,
                "total_progression": 43.3283,
                "progressive_carries": 1.151,
                "shots_off_target": 0.4371
              },
              "params": {
                "market_value_eur": 1600000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9972,
                "reference_quality": 0.505,
                "history_matches": 31,
                "history_shrink": 0.1389,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0120)",
              "stats": {
                "key_pass": 1.4999,
                "expected_assists": 0.1097,
                "assists": 0.0906,
                "assist_rate": 0.0906,
                "expected_goals": 0.0371,
                "goals": 0.0485,
                "goal_rate": 0.0485,
                "shots_on_target": 0.1428,
                "total_shots": 0.5746,
                "rating": 7.097,
                "minutes": 78.49,
                "total_pass": 46.4826,
                "accurate_pass": 40.4093,
                "duels_won": 4.7322,
                "total_long_balls": 4.8737,
                "accurate_long_balls": 3.0986,
                "total_own_half_passes": 17.3728,
                "accurate_own_half_passes": 15.6178,
                "total_opp_half_passes": 29.1098,
                "accurate_opp_half_passes": 24.7915,
                "crosses_total": 1.6751,
                "crosses_accurate": 0.5396,
                "touches": 58.956,
                "possession_lost": 9.1852,
                "dispossessed": 0.2925,
                "duels_lost": 2.4286,
                "aerial_won": 0.5907,
                "aerial_lost": 0.3352,
                "interceptions": 0.9215,
                "tackles_won": 0.6136,
                "tackles": 1.355,
                "clearances": 0.7913,
                "total_contest": 1.5755,
                "won_contest": 1.0956,
                "challenges_lost": 0.6962,
                "fouls": 0.6865,
                "fouls_drawn": 1.6914,
                "blocks": 0.1602,
                "big_chances_created": 0.2807,
                "big_chances_missed": 0.0,
                "xgot": 0.0029,
                "ball_carries": 18.6855,
                "total_progression": 43.3283,
                "progressive_carries": 1.151,
                "shots_off_target": 0.4371
              },
              "params": {
                "blend_weight": 0.012,
                "history_matches": 31,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8721,
                "prior_reliability": 0.1333,
                "competition": "La Liga",
                "squad": "Osasuna"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 1.6902,
                  "after": 1.6751
                },
                {
                  "stat": "wonTackle",
                  "before": 0.6211,
                  "after": 0.6136
                },
                {
                  "stat": "totalShots",
                  "before": 0.5816,
                  "after": 0.5746
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1.4999,
                "expected_assists": 0.1097,
                "assists": 0.0906,
                "assist_rate": 0.0906,
                "expected_goals": 0.0371,
                "goals": 0.0485,
                "goal_rate": 0.0485,
                "shots_on_target": 0.1428,
                "total_shots": 0.5799,
                "rating": 7.097,
                "minutes": 78.49,
                "total_pass": 46.4826,
                "accurate_pass": 40.4093,
                "duels_won": 4.7322,
                "total_long_balls": 4.8737,
                "accurate_long_balls": 3.0986,
                "total_own_half_passes": 17.3728,
                "accurate_own_half_passes": 15.6178,
                "total_opp_half_passes": 29.1098,
                "accurate_opp_half_passes": 24.7915,
                "crosses_total": 1.6751,
                "crosses_accurate": 0.5396,
                "touches": 58.956,
                "possession_lost": 9.1852,
                "dispossessed": 0.2925,
                "duels_lost": 2.4286,
                "aerial_won": 0.5907,
                "aerial_lost": 0.3352,
                "interceptions": 0.9215,
                "tackles_won": 0.6136,
                "tackles": 1.355,
                "clearances": 0.7913,
                "total_contest": 1.5755,
                "won_contest": 1.0956,
                "challenges_lost": 0.6962,
                "fouls": 0.6865,
                "fouls_drawn": 1.6914,
                "blocks": 0.1602,
                "big_chances_created": 0.2807,
                "big_chances_missed": 0.0,
                "xgot": 0.0029,
                "ball_carries": 18.6855,
                "total_progression": 43.3283,
                "progressive_carries": 1.151,
                "shots_off_target": 0.4371
              },
              "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.4999,
                "expected_assists": 0.1097,
                "assists": 0.0906,
                "assist_rate": 0.0906,
                "expected_goals": 0.0349,
                "goals": 0.0456,
                "goal_rate": 0.0456,
                "shots_on_target": 0.1344,
                "total_shots": 0.5458,
                "rating": 7.097,
                "minutes": 78.49,
                "total_pass": 46.4826,
                "accurate_pass": 40.4093,
                "duels_won": 4.7322,
                "total_long_balls": 4.8737,
                "accurate_long_balls": 3.0986,
                "total_own_half_passes": 17.3728,
                "accurate_own_half_passes": 15.6178,
                "total_opp_half_passes": 29.1098,
                "accurate_opp_half_passes": 24.7915,
                "crosses_total": 1.6751,
                "crosses_accurate": 0.5396,
                "touches": 58.956,
                "possession_lost": 9.1852,
                "dispossessed": 0.2925,
                "duels_lost": 2.4286,
                "aerial_won": 0.9,
                "aerial_lost": 0.3352,
                "interceptions": 0.9215,
                "tackles_won": 0.6136,
                "tackles": 1.355,
                "clearances": 0.7913,
                "total_contest": 1.5755,
                "won_contest": 1.0956,
                "challenges_lost": 0.6962,
                "fouls": 0.6865,
                "fouls_drawn": 1.6914,
                "blocks": 0.1602,
                "big_chances_created": 0.2807,
                "big_chances_missed": 0.0,
                "xgot": 0.0027,
                "ball_carries": 18.6855,
                "total_progression": 43.3283,
                "progressive_carries": 1.151,
                "shots_off_target": 0.4114,
                "duel_xg_multiplier": 0.9412,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.41,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Íñigo Sáinz-Maza",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                  "duel_win_rate": 0.41,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9412,
                  "skill_edge": 0.0,
                  "height_edge": -0.04,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.4374,
                  "attacker_role": "CM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Íñigo Sáinz-Maza",
                      "market_value": 1000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.4374
                    }
                  ],
                  "xg_override": 0.0349
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.5907,
                  "after": 0.9
                },
                {
                  "stat": "totalShots",
                  "before": 0.5799,
                  "after": 0.5458
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4371,
                  "after": 0.4114
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1428,
                  "after": 0.1344
                }
              ]
            },
            {
              "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.4999,
                "expected_assists": 0.1097,
                "assist_rate": 0.0906,
                "assists": 0,
                "expected_goals": 0.0349,
                "goal_rate": 0.0456,
                "goals": 0,
                "shots_on_target": 0.1344,
                "total_shots": 0.5458,
                "rating": 7.097,
                "minutes": 78.49,
                "total_pass": 46.4826,
                "accurate_pass": 40.4093,
                "duels_won": 4.7322,
                "total_long_balls": 4.8737,
                "accurate_long_balls": 3.0986,
                "total_own_half_passes": 17.3728,
                "accurate_own_half_passes": 15.6178,
                "total_opp_half_passes": 29.1098,
                "accurate_opp_half_passes": 24.7915,
                "crosses_total": 1.6751,
                "crosses_accurate": 0.5396,
                "touches": 58.956,
                "possession_lost": 9.1852,
                "dispossessed": 0.2925,
                "duels_lost": 2.4286,
                "aerial_won": 0.9,
                "aerial_lost": 0.3352,
                "interceptions": 0.9215,
                "tackles_won": 0.6136,
                "tackles": 1.355,
                "clearances": 0.7913,
                "total_contest": 1.5755,
                "won_contest": 1.0956,
                "challenges_lost": 0.6962,
                "fouls": 0.6865,
                "fouls_drawn": 1.6914,
                "blocks": 0.1602,
                "big_chances_created": 0.2807,
                "big_chances_missed": 0.0,
                "xgot": 0.0027,
                "ball_carries": 18.6855,
                "total_progression": 43.3283,
                "progressive_carries": 1.151,
                "shots_off_target": 0.4114,
                "duel_xg_multiplier": 0.9412,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.41,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "key_pass": 1.4999,
                "expected_assists": 0.1606,
                "assist_rate": 0.0906,
                "assists": 0,
                "expected_goals": 0.0511,
                "goal_rate": 0.0456,
                "goals": 0,
                "shots_on_target": 0.1344,
                "total_shots": 0.5458,
                "rating": 7.097,
                "minutes": 78.49,
                "total_pass": 46.4826,
                "accurate_pass": 40.4093,
                "duels_won": 4.7322,
                "total_long_balls": 4.8737,
                "accurate_long_balls": 3.0986,
                "total_own_half_passes": 17.3728,
                "accurate_own_half_passes": 15.6178,
                "total_opp_half_passes": 29.1098,
                "accurate_opp_half_passes": 24.7915,
                "crosses_total": 1.6751,
                "crosses_accurate": 0.5396,
                "touches": 58.956,
                "possession_lost": 9.1852,
                "dispossessed": 0.2925,
                "duels_lost": 2.4286,
                "aerial_won": 0.9,
                "aerial_lost": 0.3352,
                "interceptions": 0.9215,
                "tackles_won": 0.6136,
                "tackles": 1.355,
                "clearances": 0.7913,
                "total_contest": 1.5755,
                "won_contest": 1.0956,
                "challenges_lost": 0.6962,
                "fouls": 0.6865,
                "fouls_drawn": 1.6914,
                "blocks": 0.1602,
                "big_chances_created": 0.2807,
                "big_chances_missed": 0.0,
                "xgot": 0.004,
                "ball_carries": 18.6855,
                "total_progression": 43.3283,
                "progressive_carries": 1.151,
                "shots_off_target": 0.4114,
                "duel_xg_multiplier": 0.9412,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.41,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "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.126,
                "creation_factor": 0.8804
              },
              "params": {
                "team_lambda": 1.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0349,
                  "after": 0.0511
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1097,
                  "after": 0.1606
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 1 by projected rating, fifa_overall 76.0)",
              "stats": {
                "key_pass": 1.4999,
                "expected_assists": 0.1606,
                "assist_rate": 0.0906,
                "assists": 0,
                "expected_goals": 0.0511,
                "goal_rate": 0.0456,
                "goals": 0,
                "shots_on_target": 0.1344,
                "total_shots": 0.5458,
                "rating": 7.097,
                "minutes": 78.49,
                "total_pass": 46.4826,
                "accurate_pass": 40.4093,
                "duels_won": 4.7322,
                "total_long_balls": 4.8737,
                "accurate_long_balls": 3.0986,
                "total_own_half_passes": 17.3728,
                "accurate_own_half_passes": 15.6178,
                "total_opp_half_passes": 29.1098,
                "accurate_opp_half_passes": 24.7915,
                "crosses_total": 1.6751,
                "crosses_accurate": 0.5396,
                "touches": 58.956,
                "possession_lost": 9.1852,
                "dispossessed": 0.2925,
                "duels_lost": 2.4286,
                "aerial_won": 0.9,
                "aerial_lost": 0.3352,
                "interceptions": 0.9215,
                "tackles_won": 0.6136,
                "tackles": 1.355,
                "clearances": 0.7913,
                "total_contest": 1.5755,
                "won_contest": 1.0956,
                "challenges_lost": 0.6962,
                "fouls": 0.6865,
                "fouls_drawn": 1.6914,
                "blocks": 0.1602,
                "big_chances_created": 0.2807,
                "big_chances_missed": 0.0,
                "xgot": 0.004,
                "ball_carries": 18.6855,
                "total_progression": 43.3283,
                "progressive_carries": 1.151,
                "shots_off_target": 0.4114,
                "duel_xg_multiplier": 0.9412,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.41,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "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.126,
                "creation_factor": 0.8804,
                "fifa_overall": 76.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": 3212,
                "fifa_rank": 1951.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 1.4999,
                "expected_assists": 0.1606,
                "assist_rate": 0.0906,
                "assists": 0,
                "expected_goals": 0.0511,
                "goal_rate": 0.0456,
                "goals": 0,
                "shots_on_target": 0.1344,
                "total_shots": 0.5458,
                "rating": 7.097,
                "minutes": 78.49,
                "total_pass": 46.4826,
                "accurate_pass": 40.4093,
                "duels_won": 4.7322,
                "total_long_balls": 4.8737,
                "accurate_long_balls": 3.0986,
                "total_own_half_passes": 17.3728,
                "accurate_own_half_passes": 15.6178,
                "total_opp_half_passes": 29.1098,
                "accurate_opp_half_passes": 24.7915,
                "crosses_total": 1.6751,
                "crosses_accurate": 0.5396,
                "touches": 58.956,
                "possession_lost": 9.1852,
                "dispossessed": 0.2925,
                "duels_lost": 2.4286,
                "aerial_won": 0.9,
                "aerial_lost": 0.3352,
                "interceptions": 0.9215,
                "tackles_won": 0.6136,
                "tackles": 1.355,
                "clearances": 0.7913,
                "total_contest": 1.5755,
                "won_contest": 1.0956,
                "challenges_lost": 0.6962,
                "fouls": 0.6865,
                "fouls_drawn": 1.6914,
                "blocks": 0.1602,
                "big_chances_created": 0.2807,
                "big_chances_missed": 0.0,
                "xgot": 0.004,
                "ball_carries": 18.6855,
                "total_progression": 43.3283,
                "progressive_carries": 1.151,
                "shots_off_target": 0.4114,
                "duel_xg_multiplier": 0.9412,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.41,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0498,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.126,
                "creation_factor": 0.8804,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0498,
                "goal_rate": 0.0456,
                "scorer_weight": 0.0575,
                "squad_weight_total": 1.3652,
                "weight_share": 0.0421,
                "finishing_factor": 1.126,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.4999,
                "expected_assists": 0.1606,
                "assist_rate": 0.0906,
                "assists": 0,
                "expected_goals": 0.0511,
                "goal_rate": 0.0456,
                "goals": 0,
                "shots_on_target": 0.1344,
                "total_shots": 0.5458,
                "rating": 7.097,
                "minutes": 78.49,
                "total_pass": 46.4826,
                "accurate_pass": 40.4093,
                "duels_won": 4.7322,
                "total_long_balls": 4.8737,
                "accurate_long_balls": 3.0986,
                "total_own_half_passes": 17.3728,
                "accurate_own_half_passes": 15.6178,
                "total_opp_half_passes": 29.1098,
                "accurate_opp_half_passes": 24.7915,
                "crosses_total": 1.6751,
                "crosses_accurate": 0.5396,
                "touches": 58.956,
                "possession_lost": 9.1852,
                "dispossessed": 0.2925,
                "duels_lost": 2.4286,
                "aerial_won": 0.9,
                "aerial_lost": 0.3352,
                "interceptions": 0.9215,
                "tackles_won": 0.6136,
                "tackles": 1.355,
                "clearances": 0.7913,
                "total_contest": 1.5755,
                "won_contest": 1.0956,
                "challenges_lost": 0.6962,
                "fouls": 0.6865,
                "fouls_drawn": 1.6914,
                "blocks": 0.1602,
                "big_chances_created": 0.2807,
                "big_chances_missed": 0.0,
                "xgot": 0.004,
                "ball_carries": 18.6855,
                "total_progression": 43.3283,
                "progressive_carries": 1.151,
                "shots_off_target": 0.4114,
                "duel_xg_multiplier": 0.9412,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.41,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0498,
                "projected_assists": 0,
                "assist_probability": 0.1484,
                "finishing_factor": 1.126,
                "creation_factor": 0.8804,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1484,
                "assist_rate": 0.0906,
                "provider_weight": 0.1414,
                "squad_weight_total": 0.9792,
                "weight_share": 0.1444,
                "creation_factor": 0.8804,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Ante Budimir": {
          "player_id": 37318,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 17,
          "height": 190,
          "market_value": 2600000,
          "stats": {
            "expected_goals": 0.6025,
            "goal_rate": 0.4487,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 3,
            "expected_assists": 0.0485,
            "key_pass": 1,
            "rating": 6.8129,
            "minutes": 87,
            "total_pass": 11,
            "accurate_pass": 6,
            "duels_won": 6,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 25,
            "possession_lost": 8.8777,
            "dispossessed": 0.7508,
            "duels_lost": 6,
            "aerial_lost": 3,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 2,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.9462,
            "offsides": 0,
            "ball_carries": 5,
            "total_progression": 8,
            "progressive_carries": 1,
            "shots_off_target": 2,
            "duel_xg_multiplier": 0.9806,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.187,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Jeanuël Belocian, Alvaro Mantilla",
            "opponent_faced": "Jeanuël Belocian, Alvaro Mantilla",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.4526,
            "projected_assists": 0,
            "assist_probability": 0.0473,
            "finishing_factor": 1.0806,
            "creation_factor": 0.8,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16421054,
              "match_date": "2026-10-11",
              "home_team": "Real Betis",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7083,
                "expected_assists": 0.0001,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 6,
                "accurate_pass": 4,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416305,
              "match_date": "2026-09-19",
              "home_team": "Osasuna",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2072,
                "expected_assists": 0.0789,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 10,
                "accurate_pass": 6,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "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": 16416335,
              "match_date": "2026-09-16",
              "home_team": "Atlético Madrid",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 30,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1,
                "clearances": 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": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0739,
                "expected_assists": 0.0372,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 12,
                "clearances": 1,
                "aerial_won": 4,
                "duels_won": 7,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 9.2,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.6134,
                "expected_assists": 0.0091,
                "total_shots": 6,
                "shots_on_target": 5,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 8,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 7,
                "duels_won": 14,
                "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": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7884,
                "expected_assists": 0.0584,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 17,
                "accurate_pass": 10,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 32,
                "rating": 6.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.4479,
                "expected_assists": 0.0011,
                "total_shots": 4,
                "shots_on_target": 2,
                "total_pass": 2,
                "accurate_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416296,
              "match_date": "2026-08-24",
              "home_team": "Osasuna",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 80,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2557,
                "expected_assists": 0.0,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 8,
                "accurate_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 6,
                "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": 14083723,
              "match_date": "2026-05-23",
              "home_team": "Getafe",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0194,
                "expected_assists": 0.1265,
                "total_shots": 1,
                "total_pass": 14,
                "accurate_pass": 5,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 1,
                "aerial_won": 7,
                "duels_won": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.374,
                "expected_assists": 0.0587,
                "total_shots": 5,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 9,
                "accurate_pass": 5,
                "key_pass": 2,
                "aerial_won": 3,
                "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": 610,
            "combined_rank_score": 313.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 217.0,
            "sofascore_rating": 7.1667,
            "sofascore_appearances": 3.0,
            "fifa_rank": 410.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8129,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ante Budimir",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nemanja Ćalasan",
                  "ranking": 605
                },
                {
                  "player_name": "Sardorbek Bakhromov",
                  "ranking": 606
                },
                {
                  "player_name": "Alfonso Parot",
                  "ranking": 607
                },
                {
                  "player_name": "Vangelis Pavlidis",
                  "ranking": 608
                },
                {
                  "player_name": "Gavi",
                  "ranking": 609
                }
              ],
              "lower": [
                {
                  "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
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.772,
          "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.772,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.998,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 2.0,
              "minutes": 202.0,
              "goals_per90": 0.9090909090909092,
              "assists_per90": 0.0,
              "shots_per90": 4.01,
              "shots_on_target_pct": 55.6,
              "prior_reliability": 0.1467
            },
            "rationale": "XGBoost regressor (F_service) evaluated 45 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Osasuna, rel: 0.15, gls/90: 0.9090909090909092, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.4205,
                "goals": 0.4545,
                "goal_rate": 0.4545,
                "shots_on_target": 1.1791,
                "total_shots": 2.7293,
                "expected_assists": 0.0332,
                "key_pass": 0.582,
                "rating": 6.8129,
                "minutes": 86.57,
                "total_pass": 10.6358,
                "accurate_pass": 6.2718,
                "duels_won": 6.2419,
                "total_long_balls": 0.3048,
                "accurate_long_balls": 0.1445,
                "total_opp_half_passes": 8.1605,
                "accurate_opp_half_passes": 4.2451,
                "crosses_total": 0.1217,
                "crosses_accurate": 0.0,
                "touches": 25.0594,
                "possession_lost": 8.8955,
                "dispossessed": 0.7523,
                "duels_lost": 6.1338,
                "aerial_lost": 3.2217,
                "total_contest": 1.2223,
                "won_contest": 0.515,
                "ball_recovery": 1.2264,
                "challenges_lost": 0.2217,
                "fouls": 1.5114,
                "fouls_drawn": 1.57,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0631,
                "tackles_won": 0.4585,
                "tackles": 0.7611,
                "clearances": 1.1922,
                "blocks": 0.2812,
                "big_chances_created": 0.108,
                "big_chances_missed": 0.8222,
                "xgot": 0.6603,
                "offsides": 0.4944,
                "ball_carries": 4.9101,
                "total_progression": 7.6804,
                "progressive_carries": 0.5144,
                "shots_off_target": 1.5502
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:06:24.593912+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "Atlético Madrid",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.1084,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Espanyol",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 9.2
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Celta Vigo",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.0566,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Levante UD",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Espanyol",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 5.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalOppositionHalfPasses": 6.93,
                  "expectedGoals": 0.5505,
                  "accurateOppositionHalfPasses": 3.5244,
                  "accuratePass": 5.3206,
                  "totalShots": 2.4827
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.420462965965271,
                    "model_output": 0.4205,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0664
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0574
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0247
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0158
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0162
                        }
                      ],
                      "others": 0.0425,
                      "total": 0.4205,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.289994
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.196849
                        },
                        {
                          "name": "goals",
                          "margin": 0.074059
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.044659
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.04389
                        }
                      ],
                      "others_margin": 0.106067
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.4545190930366516,
                    "model_output": 0.4545,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0697
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0544
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0314
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0291
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0215
                        }
                      ],
                      "others": 0.045,
                      "total": 0.4545,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.294652
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.181607
                        },
                        {
                          "name": "goals",
                          "margin": 0.091669
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.078067
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.053882
                        }
                      ],
                      "others_margin": 0.104397
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 1.179073691368103,
                    "model_output": 1.1791,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1802
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.068
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0729
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0732
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0688
                        }
                      ],
                      "others": 0.1784,
                      "total": 1.1791,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.289111
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.090558
                        },
                        {
                          "name": "goals",
                          "margin": 0.088688
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.081813
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.071175
                        }
                      ],
                      "others_margin": 0.163933
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.729295492172241,
                    "model_output": 2.7293,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5576
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.2241
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.1281
                        },
                        {
                          "name": "goals",
                          "contribution": 0.1184
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0786
                        }
                      ],
                      "others": 0.2487,
                      "total": 2.7293,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.557552
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.224089
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.128135
                        },
                        {
                          "name": "goals",
                          "margin": 0.118364
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.078601
                        }
                      ],
                      "others_margin": 0.248714
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03316129744052887,
                    "model_output": 0.0332,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0171
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0125
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0105
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.008
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.003
                        }
                      ],
                      "others": -0.0141,
                      "total": 0.0332,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.236214
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.166408
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.166065
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.147071
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.061258
                        }
                      ],
                      "others_margin": -0.356272
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.581965446472168,
                    "model_output": 0.582,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1788
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0609
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0552
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0505
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0322
                        }
                      ],
                      "others": -0.0714,
                      "total": 0.582,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.235442
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.074149
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.072366
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.071047
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.048187
                        }
                      ],
                      "others_margin": -0.115574
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.812856674194336,
                    "model_output": 6.8129,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0559
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0299
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.024
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0221
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0178
                        }
                      ],
                      "others": -0.0116,
                      "total": 6.8129,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.05594
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.029851
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.024003
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.022144
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.017827
                        }
                      ],
                      "others_margin": -0.011619
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 45,
                  "role_matches": 41,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9980, quality 0.437)",
              "stats": {
                "expected_goals": 0.4196,
                "goals": 0.4536,
                "goal_rate": 0.4536,
                "shots_on_target": 1.1767,
                "total_shots": 2.7238,
                "expected_assists": 0.0331,
                "key_pass": 0.5808,
                "rating": 6.8129,
                "minutes": 86.57,
                "total_pass": 10.6145,
                "accurate_pass": 6.2593,
                "duels_won": 6.2294,
                "total_long_balls": 0.3042,
                "accurate_long_balls": 0.1442,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 4.2366,
                "crosses_total": 0.1215,
                "crosses_accurate": 0.0,
                "touches": 25.0093,
                "possession_lost": 8.8777,
                "dispossessed": 0.7508,
                "duels_lost": 6.1215,
                "aerial_lost": 3.2153,
                "total_contest": 1.2199,
                "won_contest": 0.514,
                "ball_recovery": 1.2239,
                "challenges_lost": 0.2213,
                "fouls": 1.5084,
                "fouls_drawn": 1.5669,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.063,
                "tackles_won": 0.4576,
                "tackles": 0.7596,
                "clearances": 1.1898,
                "blocks": 0.2806,
                "big_chances_created": 0.1078,
                "big_chances_missed": 0.8206,
                "xgot": 0.659,
                "offsides": 0.4934,
                "ball_carries": 4.9003,
                "total_progression": 7.665,
                "progressive_carries": 0.5134,
                "shots_off_target": 1.5471
              },
              "params": {
                "market_value_eur": 2600000,
                "quality_factor": 0.4374,
                "boost_factor": 0.998,
                "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.0095)",
              "stats": {
                "expected_goals": 0.4196,
                "goals": 0.4576,
                "goal_rate": 0.4576,
                "shots_on_target": 1.1859,
                "total_shots": 2.7346,
                "expected_assists": 0.0331,
                "key_pass": 0.5808,
                "rating": 6.8129,
                "minutes": 86.57,
                "total_pass": 10.6145,
                "accurate_pass": 6.2593,
                "duels_won": 6.2294,
                "total_long_balls": 0.3042,
                "accurate_long_balls": 0.1442,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 4.2366,
                "crosses_total": 0.1245,
                "crosses_accurate": 0.0,
                "touches": 25.0093,
                "possession_lost": 8.8777,
                "dispossessed": 0.7508,
                "duels_lost": 6.1215,
                "aerial_lost": 3.2153,
                "total_contest": 1.2199,
                "won_contest": 0.514,
                "ball_recovery": 1.2239,
                "challenges_lost": 0.2213,
                "fouls": 1.5107,
                "fouls_drawn": 1.577,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0624,
                "tackles_won": 0.4657,
                "tackles": 0.7596,
                "clearances": 1.1898,
                "blocks": 0.2806,
                "big_chances_created": 0.1078,
                "big_chances_missed": 0.8206,
                "xgot": 0.659,
                "offsides": 0.497,
                "ball_carries": 4.9003,
                "total_progression": 7.665,
                "progressive_carries": 0.5134,
                "shots_off_target": 1.5471
              },
              "params": {
                "blend_weight": 0.0095,
                "history_matches": 45,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9619,
                "prior_reliability": 0.1467,
                "competition": "La Liga",
                "squad": "Osasuna"
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.7238,
                  "after": 2.7346
                },
                {
                  "stat": "wasFouled",
                  "before": 1.5669,
                  "after": 1.577
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 1.1767,
                  "after": 1.1859
                },
                {
                  "stat": "wonTackle",
                  "before": 0.4576,
                  "after": 0.4657
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.4196,
                "goals": 0.4576,
                "goal_rate": 0.4576,
                "shots_on_target": 1.1859,
                "total_shots": 2.7346,
                "expected_assists": 0.0331,
                "key_pass": 0.5808,
                "rating": 6.8129,
                "minutes": 86.57,
                "total_pass": 10.6145,
                "accurate_pass": 6.2593,
                "duels_won": 6.2294,
                "total_long_balls": 0.3042,
                "accurate_long_balls": 0.1442,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 4.2366,
                "crosses_total": 0.1245,
                "crosses_accurate": 0.0,
                "touches": 25.0093,
                "possession_lost": 8.8777,
                "dispossessed": 0.7508,
                "duels_lost": 6.1215,
                "aerial_lost": 3.2153,
                "total_contest": 1.2199,
                "won_contest": 0.514,
                "ball_recovery": 1.2239,
                "challenges_lost": 0.2213,
                "fouls": 1.5107,
                "fouls_drawn": 1.577,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0624,
                "tackles_won": 0.4657,
                "tackles": 0.7596,
                "clearances": 1.1898,
                "blocks": 0.2806,
                "big_chances_created": 0.1078,
                "big_chances_missed": 0.8206,
                "xgot": 0.659,
                "offsides": 0.497,
                "ball_carries": 4.9003,
                "total_progression": 7.665,
                "progressive_carries": 0.5134,
                "shots_off_target": 1.5471
              },
              "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.4115,
                "goals": 0.4487,
                "goal_rate": 0.4487,
                "shots_on_target": 1.1629,
                "total_shots": 2.6815,
                "expected_assists": 0.0331,
                "key_pass": 0.5808,
                "rating": 6.8129,
                "minutes": 86.57,
                "total_pass": 10.6145,
                "accurate_pass": 6.2593,
                "duels_won": 6.2294,
                "total_long_balls": 0.3042,
                "accurate_long_balls": 0.1442,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 4.2366,
                "crosses_total": 0.1245,
                "crosses_accurate": 0.0,
                "touches": 25.0093,
                "possession_lost": 8.8777,
                "dispossessed": 0.7508,
                "duels_lost": 6.1215,
                "aerial_lost": 3.2153,
                "total_contest": 1.2199,
                "won_contest": 0.514,
                "ball_recovery": 1.2239,
                "challenges_lost": 0.2213,
                "fouls": 1.5107,
                "fouls_drawn": 1.577,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0624,
                "tackles_won": 0.4657,
                "tackles": 0.7596,
                "clearances": 1.1898,
                "blocks": 0.2806,
                "big_chances_created": 0.1078,
                "big_chances_missed": 0.8047,
                "xgot": 0.6462,
                "offsides": 0.497,
                "ball_carries": 4.9003,
                "total_progression": 7.665,
                "progressive_carries": 0.5134,
                "shots_off_target": 1.5171,
                "duel_xg_multiplier": 0.9806,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.187,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jeanuël Belocian, Alvaro Mantilla",
                "opponent_faced": "Jeanuël Belocian, Alvaro Mantilla",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Jeanuël Belocian, Alvaro Mantilla",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.187,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 0.9806,
                  "skill_edge": -0.0372,
                  "height_edge": 0.024,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.52,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Jeanuël Belocian",
                      "market_value": 12900000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.6027
                    },
                    {
                      "player": "Alvaro Mantilla",
                      "market_value": 1200000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4374
                    }
                  ],
                  "xg_override": 0.4115
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.7346,
                  "after": 2.6815
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.5471,
                  "after": 1.5171
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 1.1859,
                  "after": 1.1629
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.8206,
                  "after": 0.8047
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.659,
                  "after": 0.6462
                },
                {
                  "stat": "goals",
                  "before": 0.4576,
                  "after": 0.4487
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.4196,
                  "after": 0.4115
                }
              ]
            },
            {
              "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.4115,
                "goal_rate": 0.4487,
                "goals": 0,
                "shots_on_target": 1.1629,
                "total_shots": 2.6815,
                "expected_assists": 0.0331,
                "key_pass": 0.5808,
                "rating": 6.8129,
                "minutes": 86.57,
                "total_pass": 10.6145,
                "accurate_pass": 6.2593,
                "duels_won": 6.2294,
                "total_long_balls": 0.3042,
                "accurate_long_balls": 0.1442,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 4.2366,
                "crosses_total": 0.1245,
                "crosses_accurate": 0.0,
                "touches": 25.0093,
                "possession_lost": 8.8777,
                "dispossessed": 0.7508,
                "duels_lost": 6.1215,
                "aerial_lost": 3.2153,
                "total_contest": 1.2199,
                "won_contest": 0.514,
                "ball_recovery": 1.2239,
                "challenges_lost": 0.2213,
                "fouls": 1.5107,
                "fouls_drawn": 1.577,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0624,
                "tackles_won": 0.4657,
                "tackles": 0.7596,
                "clearances": 1.1898,
                "blocks": 0.2806,
                "big_chances_created": 0.1078,
                "big_chances_missed": 0.8047,
                "xgot": 0.6462,
                "offsides": 0.497,
                "ball_carries": 4.9003,
                "total_progression": 7.665,
                "progressive_carries": 0.5134,
                "shots_off_target": 1.5171,
                "duel_xg_multiplier": 0.9806,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.187,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jeanuël Belocian, Alvaro Mantilla",
                "opponent_faced": "Jeanuël Belocian, Alvaro Mantilla",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.6025,
                "goal_rate": 0.4487,
                "goals": 0,
                "shots_on_target": 1.1629,
                "total_shots": 2.6815,
                "expected_assists": 0.0485,
                "key_pass": 0.5808,
                "rating": 6.8129,
                "minutes": 86.57,
                "total_pass": 10.6145,
                "accurate_pass": 6.2593,
                "duels_won": 6.2294,
                "total_long_balls": 0.3042,
                "accurate_long_balls": 0.1442,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 4.2366,
                "crosses_total": 0.1245,
                "crosses_accurate": 0.0,
                "touches": 25.0093,
                "possession_lost": 8.8777,
                "dispossessed": 0.7508,
                "duels_lost": 6.1215,
                "aerial_lost": 3.2153,
                "total_contest": 1.2199,
                "won_contest": 0.514,
                "ball_recovery": 1.2239,
                "challenges_lost": 0.2213,
                "fouls": 1.5107,
                "fouls_drawn": 1.577,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0624,
                "tackles_won": 0.4657,
                "tackles": 0.7596,
                "clearances": 1.1898,
                "blocks": 0.2806,
                "big_chances_created": 0.1078,
                "big_chances_missed": 0.8047,
                "xgot": 0.9462,
                "offsides": 0.497,
                "ball_carries": 4.9003,
                "total_progression": 7.665,
                "progressive_carries": 0.5134,
                "shots_off_target": 1.5171,
                "duel_xg_multiplier": 0.9806,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.187,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jeanuël Belocian, Alvaro Mantilla",
                "opponent_faced": "Jeanuël Belocian, Alvaro Mantilla",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0806,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.4115,
                  "after": 0.6025
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0331,
                  "after": 0.0485
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 82.0)",
              "stats": {
                "expected_goals": 0.6025,
                "goal_rate": 0.4487,
                "goals": 0,
                "shots_on_target": 1.1629,
                "total_shots": 2.6815,
                "expected_assists": 0.0485,
                "key_pass": 0.5808,
                "rating": 6.8129,
                "minutes": 86.57,
                "total_pass": 10.6145,
                "accurate_pass": 6.2593,
                "duels_won": 6.2294,
                "total_long_balls": 0.3042,
                "accurate_long_balls": 0.1442,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 4.2366,
                "crosses_total": 0.1245,
                "crosses_accurate": 0.0,
                "touches": 25.0093,
                "possession_lost": 8.8777,
                "dispossessed": 0.7508,
                "duels_lost": 6.1215,
                "aerial_lost": 3.2153,
                "total_contest": 1.2199,
                "won_contest": 0.514,
                "ball_recovery": 1.2239,
                "challenges_lost": 0.2213,
                "fouls": 1.5107,
                "fouls_drawn": 1.577,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0624,
                "tackles_won": 0.4657,
                "tackles": 0.7596,
                "clearances": 1.1898,
                "blocks": 0.2806,
                "big_chances_created": 0.1078,
                "big_chances_missed": 0.8047,
                "xgot": 0.9462,
                "offsides": 0.497,
                "ball_carries": 4.9003,
                "total_progression": 7.665,
                "progressive_carries": 0.5134,
                "shots_off_target": 1.5171,
                "duel_xg_multiplier": 0.9806,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.187,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jeanuël Belocian, Alvaro Mantilla",
                "opponent_faced": "Jeanuël Belocian, Alvaro Mantilla",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0806,
                "creation_factor": 0.8,
                "fifa_overall": 82.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": 610,
                "fifa_rank": 410.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": {
                "expected_goals": 0.6025,
                "goal_rate": 0.4487,
                "goals": 1,
                "shots_on_target": 1.1629,
                "total_shots": 2.6815,
                "expected_assists": 0.0485,
                "key_pass": 0.5808,
                "rating": 6.8129,
                "minutes": 86.57,
                "total_pass": 10.6145,
                "accurate_pass": 6.2593,
                "duels_won": 6.2294,
                "total_long_balls": 0.3042,
                "accurate_long_balls": 0.1442,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 4.2366,
                "crosses_total": 0.1245,
                "crosses_accurate": 0.0,
                "touches": 25.0093,
                "possession_lost": 8.8777,
                "dispossessed": 0.7508,
                "duels_lost": 6.1215,
                "aerial_lost": 3.2153,
                "total_contest": 1.2199,
                "won_contest": 0.514,
                "ball_recovery": 1.2239,
                "challenges_lost": 0.2213,
                "fouls": 1.5107,
                "fouls_drawn": 1.577,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0624,
                "tackles_won": 0.4657,
                "tackles": 0.7596,
                "clearances": 1.1898,
                "blocks": 0.2806,
                "big_chances_created": 0.1078,
                "big_chances_missed": 0.8047,
                "xgot": 0.9462,
                "offsides": 0.497,
                "ball_carries": 4.9003,
                "total_progression": 7.665,
                "progressive_carries": 0.5134,
                "shots_off_target": 1.5171,
                "duel_xg_multiplier": 0.9806,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.187,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jeanuël Belocian, Alvaro Mantilla",
                "opponent_faced": "Jeanuël Belocian, Alvaro Mantilla",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.4526,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0806,
                "creation_factor": 0.8,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 1,
                "goal_probability": 0.4526,
                "goal_rate": 0.4487,
                "scorer_weight": 0.6511,
                "squad_weight_total": 1.3652,
                "weight_share": 0.4769,
                "finishing_factor": 1.0806,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.6025,
                "goal_rate": 0.4487,
                "goals": 1,
                "shots_on_target": 1.1629,
                "total_shots": 2.6815,
                "expected_assists": 0.0485,
                "key_pass": 0.5808,
                "rating": 6.8129,
                "minutes": 86.57,
                "total_pass": 10.6145,
                "accurate_pass": 6.2593,
                "duels_won": 6.2294,
                "total_long_balls": 0.3042,
                "accurate_long_balls": 0.1442,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 4.2366,
                "crosses_total": 0.1245,
                "crosses_accurate": 0.0,
                "touches": 25.0093,
                "possession_lost": 8.8777,
                "dispossessed": 0.7508,
                "duels_lost": 6.1215,
                "aerial_lost": 3.2153,
                "total_contest": 1.2199,
                "won_contest": 0.514,
                "ball_recovery": 1.2239,
                "challenges_lost": 0.2213,
                "fouls": 1.5107,
                "fouls_drawn": 1.577,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0624,
                "tackles_won": 0.4657,
                "tackles": 0.7596,
                "clearances": 1.1898,
                "blocks": 0.2806,
                "big_chances_created": 0.1078,
                "big_chances_missed": 0.8047,
                "xgot": 0.9462,
                "offsides": 0.497,
                "ball_carries": 4.9003,
                "total_progression": 7.665,
                "progressive_carries": 0.5134,
                "shots_off_target": 1.5171,
                "duel_xg_multiplier": 0.9806,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 2.0,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.187,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Jeanuël Belocian, Alvaro Mantilla",
                "opponent_faced": "Jeanuël Belocian, Alvaro Mantilla",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.4526,
                "projected_assists": 0,
                "assist_probability": 0.0473,
                "finishing_factor": 1.0806,
                "creation_factor": 0.8,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0473,
                "assist_rate": 0.0,
                "provider_weight": 0.0388,
                "squad_weight_total": 0.9792,
                "weight_share": 0.0396,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Rubén García": {
          "player_id": 260031,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 14,
          "height": 171,
          "market_value": 1700000,
          "stats": {
            "expected_goals": 0.1474,
            "goal_rate": 0.1374,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.1135,
            "key_pass": 1,
            "rating": 6.7996,
            "minutes": 70,
            "total_pass": 23,
            "accurate_pass": 19,
            "duels_won": 4,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_opp_half_passes": 14,
            "accurate_opp_half_passes": 11,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 39,
            "possession_lost": 9.9549,
            "dispossessed": 0.4815,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.1602,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0798,
            "offsides": 0,
            "ball_carries": 10,
            "total_progression": 18,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9118,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.1,
            "aerial_won": 1,
            "crosses_attempted": 1.9,
            "duel_win_rate": 0.42,
            "pressing_faced": "LOW",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "numerical_situation": "1v1",
            "opponent_defenders": "Pablo Ramón",
            "opponent_faced": "Pablo Ramón",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1371,
            "projected_assists": 0,
            "assist_probability": 0.1073,
            "finishing_factor": 1.2435,
            "creation_factor": 1.25,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421054,
              "match_date": "2026-10-11",
              "home_team": "Real Betis",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 74,
                "rating": 7.1,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.0754,
                "expected_assists": 0.1162,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 25,
                "accurate_pass": 22,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 2,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416305,
              "match_date": "2026-09-19",
              "home_team": "Osasuna",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 69,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0311,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 15,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416335,
              "match_date": "2026-09-16",
              "home_team": "Atlético Madrid",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 31,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0593,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 60,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.047,
                "expected_assists": 0.0077,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 28,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 3,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 60,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0043,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 13,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 45,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0028,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 12,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 32,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2221,
                "expected_assists": 0.7757,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 25,
                "accurate_pass": 23,
                "key_pass": 2,
                "interceptions": 1,
                "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": 16416296,
              "match_date": "2026-08-24",
              "home_team": "Osasuna",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 72,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.111,
                "expected_assists": 0.137,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 22,
                "accurate_pass": 18,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083723,
              "match_date": "2026-05-23",
              "home_team": "Getafe",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5278,
                "expected_assists": 0.3406,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 39,
                "accurate_pass": 31,
                "key_pass": 4,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2995,
            "combined_rank_score": 995.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 3.0,
            "fifa_rank": 1545.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7996,
            "source_file": "data/player_rankings.csv",
            "player_name": "Rubén García",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jayce Olivero",
                  "ranking": 2990
                },
                {
                  "player_name": "Felix Oberwaditzer",
                  "ranking": 2991
                },
                {
                  "player_name": "Kieran Tierney",
                  "ranking": 2992
                },
                {
                  "player_name": "Malick Fofana",
                  "ranking": 2993
                },
                {
                  "player_name": "Kai Mauro",
                  "ranking": 2994
                }
              ],
              "lower": [
                {
                  "player_name": "Nikola Mirković",
                  "ranking": 2996
                },
                {
                  "player_name": "Alvaro Abarzua",
                  "ranking": 2997
                },
                {
                  "player_name": "Felipe Salomoni",
                  "ranking": 2998
                },
                {
                  "player_name": "Cristóbal Sepúlveda",
                  "ranking": 2999
                },
                {
                  "player_name": "Markas Beneta",
                  "ranking": 3000
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.767,
          "history_matches": 43,
          "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": 43,
            "data_confidence": 0.767,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9979,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 2.0,
              "minutes": 149.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 2.42,
              "shots_on_target_pct": 50.0,
              "prior_reliability": 0.1133
            },
            "rationale": "XGBoost regressor (F_service) evaluated 43 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Osasuna, 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.1107,
                "goals": 0.1522,
                "goal_rate": 0.1522,
                "shots_on_target": 0.3939,
                "total_shots": 1.2058,
                "expected_assists": 0.0777,
                "key_pass": 0.9538,
                "rating": 6.7996,
                "minutes": 69.58,
                "total_pass": 23.3228,
                "accurate_pass": 18.7712,
                "duels_won": 3.9542,
                "total_long_balls": 2.7256,
                "accurate_long_balls": 2.2429,
                "total_opp_half_passes": 14.4553,
                "accurate_opp_half_passes": 10.8871,
                "crosses_total": 4.1653,
                "crosses_accurate": 1.1294,
                "touches": 38.9557,
                "possession_lost": 9.9758,
                "dispossessed": 0.4825,
                "duels_lost": 4.0726,
                "aerial_lost": 1.243,
                "total_contest": 1.1631,
                "won_contest": 0.5499,
                "ball_recovery": 3.1748,
                "challenges_lost": 0.7074,
                "fouls": 1.069,
                "fouls_drawn": 0.585,
                "assists": 0.1617,
                "assist_rate": 0.1617,
                "interceptions": 0.3701,
                "tackles_won": 1.3767,
                "tackles": 2.0099,
                "clearances": 1.4381,
                "blocks": 0.119,
                "big_chances_created": 0.2377,
                "big_chances_missed": 0.1602,
                "xgot": 0.0599,
                "offsides": 0.0035,
                "ball_carries": 10.0993,
                "total_progression": 18.419,
                "progressive_carries": 0.8365,
                "shots_off_target": 0.8119
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:06:24.593912+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Betis",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Rayo Vallecano",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "Atlético Madrid",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Espanyol",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Deportivo Alavés",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Celta Vigo",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.0566,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Levante UD",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Getafe",
                    "minutes": 2.0,
                    "is_starting": false,
                    "weight": 0.0409,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Espanyol",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalOppositionHalfPasses": 12.5837,
                  "expectedGoals": 0.0662,
                  "accurateOppositionHalfPasses": 9.6556,
                  "accuratePass": 16.9619,
                  "totalShots": 1.0073
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.11066755652427673,
                    "model_output": 0.1107,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0563
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0526
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0272
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0164
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.009
                        }
                      ],
                      "others": -0.0379,
                      "total": 0.1107,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.250618
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.232165
                        },
                        {
                          "name": "goals",
                          "margin": -0.145338
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.099234
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.058814
                        }
                      ],
                      "others_margin": -0.294375
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.15221062302589417,
                    "model_output": 0.1522,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0634
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0359
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0194
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0149
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.011
                        }
                      ],
                      "others": -0.0334,
                      "total": 0.1522,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.271484
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.144576
                        },
                        {
                          "name": "goals",
                          "margin": -0.087693
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.073013
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.057791
                        }
                      ],
                      "others_margin": -0.198111
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.39386850595474243,
                    "model_output": 0.3939,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1767
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0839
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0565
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0487
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0309
                        }
                      ],
                      "others": -0.1004,
                      "total": 0.3939,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.284112
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.12501
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.093836
                        },
                        {
                          "name": "goals",
                          "margin": -0.088741
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.060708
                        }
                      ],
                      "others_margin": -0.227006
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.2057572603225708,
                    "model_output": 1.2058,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3902
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.143
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0773
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0559
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0508
                        }
                      ],
                      "others": -0.2312,
                      "total": 1.2058,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.390244
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.142993
                        },
                        {
                          "name": "goals",
                          "margin": -0.077345
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.055919
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.050776
                        }
                      ],
                      "others_margin": -0.231293
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07768659293651581,
                    "model_output": 0.0777,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0092
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0065
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0054
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0042
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0038
                        }
                      ],
                      "others": -0.008,
                      "total": 0.0777,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.134498
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.085379
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.065791
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.047791
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.043129
                        }
                      ],
                      "others_margin": -0.099893
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.9538189172744751,
                    "model_output": 0.9538,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1515
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.062
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0493
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.041
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.035
                        }
                      ],
                      "others": -0.0584,
                      "total": 0.9538,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.202893
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.072425
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.054104
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.042909
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.03524
                        }
                      ],
                      "others_margin": -0.05939
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.799646377563477,
                    "model_output": 6.7996,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0464
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0213
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0151
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0098
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0083
                        }
                      ],
                      "others": -0.0061,
                      "total": 6.7996,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.046388
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.021302
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.015136
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.009792
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.00832
                        }
                      ],
                      "others_margin": -0.006107
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 43,
                  "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 0.9979, quality 0.437)",
              "stats": {
                "expected_goals": 0.1104,
                "goals": 0.1519,
                "goal_rate": 0.1519,
                "shots_on_target": 0.393,
                "total_shots": 1.2032,
                "expected_assists": 0.0775,
                "key_pass": 0.9518,
                "rating": 6.7996,
                "minutes": 69.58,
                "total_pass": 23.2738,
                "accurate_pass": 18.7318,
                "duels_won": 3.9459,
                "total_long_balls": 2.7199,
                "accurate_long_balls": 2.2382,
                "total_opp_half_passes": 14.4249,
                "accurate_opp_half_passes": 10.8642,
                "crosses_total": 4.1566,
                "crosses_accurate": 1.127,
                "touches": 38.8739,
                "possession_lost": 9.9549,
                "dispossessed": 0.4815,
                "duels_lost": 4.064,
                "aerial_lost": 1.2404,
                "total_contest": 1.1607,
                "won_contest": 0.5487,
                "ball_recovery": 3.1681,
                "challenges_lost": 0.7059,
                "fouls": 1.0668,
                "fouls_drawn": 0.5838,
                "assists": 0.1614,
                "assist_rate": 0.1614,
                "interceptions": 0.3693,
                "tackles_won": 1.3738,
                "tackles": 2.0057,
                "clearances": 1.4351,
                "blocks": 0.1188,
                "big_chances_created": 0.2372,
                "big_chances_missed": 0.1599,
                "xgot": 0.0598,
                "offsides": 0.0035,
                "ball_carries": 10.0781,
                "total_progression": 18.3803,
                "progressive_carries": 0.8347,
                "shots_off_target": 0.8102
              },
              "params": {
                "market_value_eur": 1700000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9979,
                "reference_quality": 0.505,
                "history_matches": 43,
                "history_shrink": 0.1042,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0077)",
              "stats": {
                "expected_goals": 0.1104,
                "goals": 0.1507,
                "goal_rate": 0.1507,
                "shots_on_target": 0.3972,
                "total_shots": 1.2083,
                "expected_assists": 0.0775,
                "key_pass": 0.9518,
                "rating": 6.7996,
                "minutes": 69.58,
                "total_pass": 23.2738,
                "accurate_pass": 18.7318,
                "duels_won": 3.9459,
                "total_long_balls": 2.7199,
                "accurate_long_balls": 2.2382,
                "total_opp_half_passes": 14.4249,
                "accurate_opp_half_passes": 10.8642,
                "crosses_total": 4.1666,
                "crosses_accurate": 1.127,
                "touches": 38.8739,
                "possession_lost": 9.9549,
                "dispossessed": 0.4815,
                "duels_lost": 4.064,
                "aerial_lost": 1.2404,
                "total_contest": 1.1607,
                "won_contest": 0.5487,
                "ball_recovery": 3.1681,
                "challenges_lost": 0.7059,
                "fouls": 1.0656,
                "fouls_drawn": 0.5828,
                "assists": 0.1602,
                "assist_rate": 0.1602,
                "interceptions": 0.37,
                "tackles_won": 1.3702,
                "tackles": 2.0057,
                "clearances": 1.4351,
                "blocks": 0.1188,
                "big_chances_created": 0.2372,
                "big_chances_missed": 0.1599,
                "xgot": 0.0598,
                "offsides": 0.0035,
                "ball_carries": 10.0781,
                "total_progression": 18.3803,
                "progressive_carries": 0.8347,
                "shots_off_target": 0.8102
              },
              "params": {
                "blend_weight": 0.0077,
                "history_matches": 43,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.7731,
                "prior_reliability": 0.1133,
                "competition": "La Liga",
                "squad": "Osasuna"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 4.1566,
                  "after": 4.1666
                },
                {
                  "stat": "totalShots",
                  "before": 1.2032,
                  "after": 1.2083
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1104,
                "goals": 0.1507,
                "goal_rate": 0.1507,
                "shots_on_target": 0.3972,
                "total_shots": 1.2083,
                "expected_assists": 0.0775,
                "key_pass": 0.9518,
                "rating": 6.7996,
                "minutes": 69.58,
                "total_pass": 23.2738,
                "accurate_pass": 18.7318,
                "duels_won": 3.9459,
                "total_long_balls": 2.7199,
                "accurate_long_balls": 2.2382,
                "total_opp_half_passes": 14.4249,
                "accurate_opp_half_passes": 10.8642,
                "crosses_total": 4.1666,
                "crosses_accurate": 1.127,
                "touches": 38.8739,
                "possession_lost": 9.9549,
                "dispossessed": 0.4815,
                "duels_lost": 4.064,
                "aerial_lost": 1.2404,
                "total_contest": 1.1607,
                "won_contest": 0.5487,
                "ball_recovery": 3.1681,
                "challenges_lost": 0.7059,
                "fouls": 1.0656,
                "fouls_drawn": 0.5828,
                "assists": 0.1602,
                "assist_rate": 0.1602,
                "interceptions": 0.37,
                "tackles_won": 1.3702,
                "tackles": 2.0057,
                "clearances": 1.4351,
                "blocks": 0.1188,
                "big_chances_created": 0.2372,
                "big_chances_missed": 0.1599,
                "xgot": 0.0598,
                "offsides": 0.0035,
                "ball_carries": 10.0781,
                "total_progression": 18.3803,
                "progressive_carries": 0.8347,
                "shots_off_target": 0.8102
              },
              "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.1007,
                "goals": 0.1374,
                "goal_rate": 0.1374,
                "shots_on_target": 0.3622,
                "total_shots": 1.1017,
                "expected_assists": 0.0775,
                "key_pass": 0.9518,
                "rating": 6.7996,
                "minutes": 69.58,
                "total_pass": 23.2738,
                "accurate_pass": 18.7318,
                "duels_won": 3.9459,
                "total_long_balls": 2.7199,
                "accurate_long_balls": 2.2382,
                "total_opp_half_passes": 14.4249,
                "accurate_opp_half_passes": 10.8642,
                "crosses_total": 4.1666,
                "crosses_accurate": 1.127,
                "touches": 38.8739,
                "possession_lost": 9.9549,
                "dispossessed": 0.4815,
                "duels_lost": 4.064,
                "aerial_lost": 1.2404,
                "total_contest": 1.1607,
                "won_contest": 0.5487,
                "ball_recovery": 3.1681,
                "challenges_lost": 0.7059,
                "fouls": 1.0656,
                "fouls_drawn": 0.5828,
                "assists": 0.1602,
                "assist_rate": 0.1602,
                "interceptions": 0.37,
                "tackles_won": 1.3702,
                "tackles": 2.0057,
                "clearances": 1.4351,
                "blocks": 0.1188,
                "big_chances_created": 0.2372,
                "big_chances_missed": 0.1458,
                "xgot": 0.0545,
                "offsides": 0.0035,
                "ball_carries": 10.0781,
                "total_progression": 18.3803,
                "progressive_carries": 0.8347,
                "shots_off_target": 0.7387,
                "duel_xg_multiplier": 0.9118,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.1,
                "aerial_won": 0.8,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.42,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Ramón",
                "opponent_faced": "Pablo Ramón",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Pablo Ramón",
                  "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                  "duel_win_rate": 0.42,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9118,
                  "skill_edge": 0.0,
                  "height_edge": -0.06,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.4374,
                  "attacker_role": "LW",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Pablo Ramón",
                      "market_value": 1500000,
                      "role": "RB",
                      "price_index": 0.7,
                      "adjusted_quality": 0.4374
                    }
                  ],
                  "xg_override": 0.1007
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.2083,
                  "after": 1.1017
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.8102,
                  "after": 0.7387
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3972,
                  "after": 0.3622
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.1599,
                  "after": 0.1458
                },
                {
                  "stat": "goals",
                  "before": 0.1507,
                  "after": 0.1374
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1104,
                  "after": 0.1007
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.0598,
                  "after": 0.0545
                }
              ]
            },
            {
              "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.1007,
                "goal_rate": 0.1374,
                "goals": 0,
                "shots_on_target": 0.3622,
                "total_shots": 1.1017,
                "expected_assists": 0.0775,
                "key_pass": 0.9518,
                "rating": 6.7996,
                "minutes": 69.58,
                "total_pass": 23.2738,
                "accurate_pass": 18.7318,
                "duels_won": 3.9459,
                "total_long_balls": 2.7199,
                "accurate_long_balls": 2.2382,
                "total_opp_half_passes": 14.4249,
                "accurate_opp_half_passes": 10.8642,
                "crosses_total": 4.1666,
                "crosses_accurate": 1.127,
                "touches": 38.8739,
                "possession_lost": 9.9549,
                "dispossessed": 0.4815,
                "duels_lost": 4.064,
                "aerial_lost": 1.2404,
                "total_contest": 1.1607,
                "won_contest": 0.5487,
                "ball_recovery": 3.1681,
                "challenges_lost": 0.7059,
                "fouls": 1.0656,
                "fouls_drawn": 0.5828,
                "assist_rate": 0.1602,
                "assists": 0,
                "interceptions": 0.37,
                "tackles_won": 1.3702,
                "tackles": 2.0057,
                "clearances": 1.4351,
                "blocks": 0.1188,
                "big_chances_created": 0.2372,
                "big_chances_missed": 0.1458,
                "xgot": 0.0545,
                "offsides": 0.0035,
                "ball_carries": 10.0781,
                "total_progression": 18.3803,
                "progressive_carries": 0.8347,
                "shots_off_target": 0.7387,
                "duel_xg_multiplier": 0.9118,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.1,
                "aerial_won": 0.8,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.42,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Ramón",
                "opponent_faced": "Pablo Ramón",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.1474,
                "goal_rate": 0.1374,
                "goals": 0,
                "shots_on_target": 0.3622,
                "total_shots": 1.1017,
                "expected_assists": 0.1135,
                "key_pass": 0.9518,
                "rating": 6.7996,
                "minutes": 69.58,
                "total_pass": 23.2738,
                "accurate_pass": 18.7318,
                "duels_won": 3.9459,
                "total_long_balls": 2.7199,
                "accurate_long_balls": 2.2382,
                "total_opp_half_passes": 14.4249,
                "accurate_opp_half_passes": 10.8642,
                "crosses_total": 4.1666,
                "crosses_accurate": 1.127,
                "touches": 38.8739,
                "possession_lost": 9.9549,
                "dispossessed": 0.4815,
                "duels_lost": 4.064,
                "aerial_lost": 1.2404,
                "total_contest": 1.1607,
                "won_contest": 0.5487,
                "ball_recovery": 3.1681,
                "challenges_lost": 0.7059,
                "fouls": 1.0656,
                "fouls_drawn": 0.5828,
                "assist_rate": 0.1602,
                "assists": 0,
                "interceptions": 0.37,
                "tackles_won": 1.3702,
                "tackles": 2.0057,
                "clearances": 1.4351,
                "blocks": 0.1188,
                "big_chances_created": 0.2372,
                "big_chances_missed": 0.1458,
                "xgot": 0.0798,
                "offsides": 0.0035,
                "ball_carries": 10.0781,
                "total_progression": 18.3803,
                "progressive_carries": 0.8347,
                "shots_off_target": 0.7387,
                "duel_xg_multiplier": 0.9118,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.1,
                "aerial_won": 0.8,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.42,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Ramón",
                "opponent_faced": "Pablo Ramón",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2435,
                "creation_factor": 1.25
              },
              "params": {
                "team_lambda": 1.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1007,
                  "after": 0.1474
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0775,
                  "after": 0.1135
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 8 by projected rating, fifa_overall 77.0)",
              "stats": {
                "expected_goals": 0.1474,
                "goal_rate": 0.1374,
                "goals": 0,
                "shots_on_target": 0.3622,
                "total_shots": 1.1017,
                "expected_assists": 0.1135,
                "key_pass": 0.9518,
                "rating": 6.7996,
                "minutes": 69.58,
                "total_pass": 23.2738,
                "accurate_pass": 18.7318,
                "duels_won": 3.9459,
                "total_long_balls": 2.7199,
                "accurate_long_balls": 2.2382,
                "total_opp_half_passes": 14.4249,
                "accurate_opp_half_passes": 10.8642,
                "crosses_total": 4.1666,
                "crosses_accurate": 1.127,
                "touches": 38.8739,
                "possession_lost": 9.9549,
                "dispossessed": 0.4815,
                "duels_lost": 4.064,
                "aerial_lost": 1.2404,
                "total_contest": 1.1607,
                "won_contest": 0.5487,
                "ball_recovery": 3.1681,
                "challenges_lost": 0.7059,
                "fouls": 1.0656,
                "fouls_drawn": 0.5828,
                "assist_rate": 0.1602,
                "assists": 0,
                "interceptions": 0.37,
                "tackles_won": 1.3702,
                "tackles": 2.0057,
                "clearances": 1.4351,
                "blocks": 0.1188,
                "big_chances_created": 0.2372,
                "big_chances_missed": 0.1458,
                "xgot": 0.0798,
                "offsides": 0.0035,
                "ball_carries": 10.0781,
                "total_progression": 18.3803,
                "progressive_carries": 0.8347,
                "shots_off_target": 0.7387,
                "duel_xg_multiplier": 0.9118,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.1,
                "aerial_won": 0.8,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.42,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Ramón",
                "opponent_faced": "Pablo Ramón",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2435,
                "creation_factor": 1.25,
                "fifa_overall": 77.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": 2995,
                "fifa_rank": 1545.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.1474,
                "goal_rate": 0.1374,
                "goals": 0,
                "shots_on_target": 0.3622,
                "total_shots": 1.1017,
                "expected_assists": 0.1135,
                "key_pass": 0.9518,
                "rating": 6.7996,
                "minutes": 69.58,
                "total_pass": 23.2738,
                "accurate_pass": 18.7318,
                "duels_won": 3.9459,
                "total_long_balls": 2.7199,
                "accurate_long_balls": 2.2382,
                "total_opp_half_passes": 14.4249,
                "accurate_opp_half_passes": 10.8642,
                "crosses_total": 4.1666,
                "crosses_accurate": 1.127,
                "touches": 38.8739,
                "possession_lost": 9.9549,
                "dispossessed": 0.4815,
                "duels_lost": 4.064,
                "aerial_lost": 1.2404,
                "total_contest": 1.1607,
                "won_contest": 0.5487,
                "ball_recovery": 3.1681,
                "challenges_lost": 0.7059,
                "fouls": 1.0656,
                "fouls_drawn": 0.5828,
                "assist_rate": 0.1602,
                "assists": 0,
                "interceptions": 0.37,
                "tackles_won": 1.3702,
                "tackles": 2.0057,
                "clearances": 1.4351,
                "blocks": 0.1188,
                "big_chances_created": 0.2372,
                "big_chances_missed": 0.1458,
                "xgot": 0.0798,
                "offsides": 0.0035,
                "ball_carries": 10.0781,
                "total_progression": 18.3803,
                "progressive_carries": 0.8347,
                "shots_off_target": 0.7387,
                "duel_xg_multiplier": 0.9118,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.1,
                "aerial_won": 0.8,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.42,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Ramón",
                "opponent_faced": "Pablo Ramón",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1371,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2435,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1371,
                "goal_rate": 0.1374,
                "scorer_weight": 0.1833,
                "squad_weight_total": 1.3652,
                "weight_share": 0.1343,
                "finishing_factor": 1.2435,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.1474,
                "goal_rate": 0.1374,
                "goals": 0,
                "shots_on_target": 0.3622,
                "total_shots": 1.1017,
                "expected_assists": 0.1135,
                "key_pass": 0.9518,
                "rating": 6.7996,
                "minutes": 69.58,
                "total_pass": 23.2738,
                "accurate_pass": 18.7318,
                "duels_won": 3.9459,
                "total_long_balls": 2.7199,
                "accurate_long_balls": 2.2382,
                "total_opp_half_passes": 14.4249,
                "accurate_opp_half_passes": 10.8642,
                "crosses_total": 4.1666,
                "crosses_accurate": 1.127,
                "touches": 38.8739,
                "possession_lost": 9.9549,
                "dispossessed": 0.4815,
                "duels_lost": 4.064,
                "aerial_lost": 1.2404,
                "total_contest": 1.1607,
                "won_contest": 0.5487,
                "ball_recovery": 3.1681,
                "challenges_lost": 0.7059,
                "fouls": 1.0656,
                "fouls_drawn": 0.5828,
                "assist_rate": 0.1602,
                "assists": 0,
                "interceptions": 0.37,
                "tackles_won": 1.3702,
                "tackles": 2.0057,
                "clearances": 1.4351,
                "blocks": 0.1188,
                "big_chances_created": 0.2372,
                "big_chances_missed": 0.1458,
                "xgot": 0.0798,
                "offsides": 0.0035,
                "ball_carries": 10.0781,
                "total_progression": 18.3803,
                "progressive_carries": 0.8347,
                "shots_off_target": 0.7387,
                "duel_xg_multiplier": 0.9118,
                "dribbles_attempted": 3.0,
                "dribbles_successful": 1.1,
                "aerial_won": 0.8,
                "crosses_attempted": 1.9,
                "duel_win_rate": 0.42,
                "pressing_faced": "LOW",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "numerical_situation": "1v1",
                "opponent_defenders": "Pablo Ramón",
                "opponent_faced": "Pablo Ramón",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1371,
                "projected_assists": 0,
                "assist_probability": 0.1073,
                "finishing_factor": 1.2435,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1073,
                "assist_rate": 0.1602,
                "provider_weight": 0.1419,
                "squad_weight_total": 0.9792,
                "weight_share": 0.1449,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Iker Muñoz": {
          "player_id": 1119586,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 8,
          "height": 179,
          "market_value": 1800000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0605,
            "assist_rate": 0.058,
            "assists": 0,
            "expected_goals": 0.0508,
            "goal_rate": 0.0399,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.8843,
            "minutes": 83,
            "total_pass": 44,
            "accurate_pass": 37,
            "duels_won": 4,
            "total_long_balls": 6,
            "accurate_long_balls": 3,
            "total_own_half_passes": 20,
            "accurate_own_half_passes": 18,
            "total_opp_half_passes": 24,
            "accurate_opp_half_passes": 18,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 56,
            "possession_lost": 10.8267,
            "dispossessed": 0.6171,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 2,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0498,
            "ball_carries": 16,
            "total_progression": 54,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "duel_xg_multiplier": 0.9706,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.7,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.4,
            "pressing_faced": "LOW",
            "matchup_zone": "CDM vs CDM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Íñigo Sáinz-Maza",
            "opponent_faced": "Íñigo Sáinz-Maza",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0495,
            "projected_assists": 0,
            "assist_probability": 0.0587,
            "finishing_factor": 1.0614,
            "creation_factor": 1.1829,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16421054,
              "match_date": "2026-10-11",
              "home_team": "Real Betis",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 11,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 9,
                "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": 16416305,
              "match_date": "2026-09-19",
              "home_team": "Osasuna",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0183,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 26,
                "key_pass": 2,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0596,
                "expected_assists": 0.0519,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 66,
                "accurate_pass": 58,
                "clearances": 5,
                "aerial_won": 3,
                "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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0204,
                "total_shots": 0,
                "total_pass": 68,
                "accurate_pass": 58,
                "interceptions": 4,
                "clearances": 2,
                "aerial_won": 4,
                "duels_won": 7,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 71,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0362,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 23,
                "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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0281,
                "expected_assists": 0.0108,
                "total_shots": 1,
                "total_pass": 33,
                "accurate_pass": 30,
                "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": 16416296,
              "match_date": "2026-08-24",
              "home_team": "Osasuna",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0204,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 37,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 32,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0177,
                "expected_assists": 0.0186,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 23,
                "accurate_pass": 22,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083568,
              "match_date": "2026-05-08",
              "home_team": "Levante UD",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 62,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0076,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 18,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083231,
              "match_date": "2026-04-26",
              "home_team": "Osasuna",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 71,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0072,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 24,
                "key_pass": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 4072,
            "combined_rank_score": 2051.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 578.0,
            "sofascore_rating": 6.8,
            "sofascore_appearances": 3.0,
            "fifa_rank": 3525.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8843,
            "source_file": "data/player_rankings.csv",
            "player_name": "Iker Muñoz",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ondrej Duda",
                  "ranking": 4067
                },
                {
                  "player_name": "Caleb Yirenkyi",
                  "ranking": 4068
                },
                {
                  "player_name": "Gabriel Ávalos",
                  "ranking": 4069
                },
                {
                  "player_name": "Cecilio Domínguez",
                  "ranking": 4070
                },
                {
                  "player_name": "Álvaro Montero",
                  "ranking": 4071
                }
              ],
              "lower": [
                {
                  "player_name": "Elvis Rexhbeçaj",
                  "ranking": 4073
                },
                {
                  "player_name": "Aarón Anselmino",
                  "ranking": 4074
                },
                {
                  "player_name": "Miguel Ángel Merentiel",
                  "ranking": 4075
                },
                {
                  "player_name": "Gastón Martirena",
                  "ranking": 4076
                },
                {
                  "player_name": "Adam Armstrong",
                  "ranking": 4077
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.773,
          "history_matches": 26,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 26,
            "data_confidence": 0.773,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9967,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 2.0,
              "minutes": 205.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.44,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1533
            },
            "rationale": "XGBoost regressor (M_service) evaluated 26 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Osasuna, 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.5546,
                "expected_assists": 0.0415,
                "assists": 0.0591,
                "assist_rate": 0.0591,
                "expected_goals": 0.0359,
                "goals": 0.042,
                "goal_rate": 0.042,
                "shots_on_target": 0.1586,
                "total_shots": 0.6177,
                "rating": 6.8843,
                "minutes": 83.12,
                "total_pass": 44.6422,
                "accurate_pass": 36.6219,
                "duels_won": 4.2959,
                "total_long_balls": 5.6726,
                "accurate_long_balls": 2.8055,
                "total_own_half_passes": 20.3467,
                "accurate_own_half_passes": 18.2846,
                "total_opp_half_passes": 24.2955,
                "accurate_opp_half_passes": 18.3373,
                "crosses_total": 0.4235,
                "crosses_accurate": 0.1356,
                "touches": 56.392,
                "possession_lost": 10.8625,
                "dispossessed": 0.6191,
                "duels_lost": 5.2027,
                "aerial_won": 1.7784,
                "aerial_lost": 1.2663,
                "interceptions": 1.2199,
                "tackles_won": 0.3411,
                "tackles": 0.5249,
                "clearances": 2.447,
                "total_contest": 1.0462,
                "won_contest": 0.5542,
                "challenges_lost": 1.3872,
                "fouls": 1.4381,
                "fouls_drawn": 1.4932,
                "blocks": 0.344,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0351,
                "ball_carries": 15.6249,
                "total_progression": 54.2675,
                "progressive_carries": 0.9191,
                "shots_off_target": 0.4591
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-17T10:05:52.581708+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Betis",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.1522,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1294,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Espanyol",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.11,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0935,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.0795,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Celta Vigo",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0675,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0574,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Espanyol",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.0488,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-08",
                    "opponent": "Levante UD",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.0415,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Sevilla",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.0353,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.3255,
                  "creative_index": 0.1815,
                  "expectedGoals": 0.0136,
                  "expectedAssists": 0.0203,
                  "onTargetScoringAttempt": 0.1971
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5546074509620667,
                    "model_output": 0.5546,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.127
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.124
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.1061
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0639
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.0285
                        }
                      ],
                      "others": -0.1429,
                      "total": 0.5546,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.132992
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.129564
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.125978
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.084407
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.039995
                        }
                      ],
                      "others_margin": -0.229353
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.041457731276750565,
                    "model_output": 0.0415,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0151
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0097
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0092
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0064
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.005
                        }
                      ],
                      "others": -0.0171,
                      "total": 0.0415,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.194361
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.148162
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.140652
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.095764
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.082397
                        }
                      ],
                      "others_margin": -0.345448
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.05908871442079544,
                    "model_output": 0.0591,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0102
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.007
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0069
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0059
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0034
                        }
                      ],
                      "others": -0.0087,
                      "total": 0.0591,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.124029
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.087136
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.086114
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.078883
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.049313
                        }
                      ],
                      "others_margin": -0.138441
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.03592139482498169,
                    "model_output": 0.0359,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.04
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0094
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0062
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0062
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0026
                        }
                      ],
                      "others": -0.0064,
                      "total": 0.0359,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.551449
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.18923
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.129972
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.129729
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.059853
                        }
                      ],
                      "others_margin": -0.164808
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.04195975512266159,
                    "model_output": 0.042,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0232
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0158
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0065
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.006
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0056
                        }
                      ],
                      "others": -0.0107,
                      "total": 0.042,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.270563
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.237133
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.116165
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.108126
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.100605
                        }
                      ],
                      "others_margin": -0.229758
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.15859071910381317,
                    "model_output": 0.1586,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0897
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0496
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0261
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0242
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0061
                        }
                      ],
                      "others": -0.0198,
                      "total": 0.1586,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.322114
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.235911
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.150612
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.140336
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.033419
                        }
                      ],
                      "others_margin": -0.118019
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6176931262016296,
                    "model_output": 0.6177,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2768
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1249
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0623
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0389
                        },
                        {
                          "name": "wonTackle",
                          "contribution": 0.0216
                        }
                      ],
                      "others": -0.1463,
                      "total": 0.6177,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.276783
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.124907
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.062288
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.038911
                        },
                        {
                          "name": "wonTackle",
                          "margin": 0.02156
                        }
                      ],
                      "others_margin": -0.146326
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.884270668029785,
                    "model_output": 6.8843,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0339
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0306
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0225
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0181
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0169
                        }
                      ],
                      "others": -0.0096,
                      "total": 6.8843,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.033854
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.030607
                        },
                        {
                          "name": "rating",
                          "margin": -0.022503
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.018067
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.016857
                        }
                      ],
                      "others_margin": -0.009533
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 26,
                  "role_matches": 13,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9967, quality 0.437)",
              "stats": {
                "key_pass": 0.5528,
                "expected_assists": 0.0413,
                "assists": 0.0589,
                "assist_rate": 0.0589,
                "expected_goals": 0.0358,
                "goals": 0.0418,
                "goal_rate": 0.0418,
                "shots_on_target": 0.1581,
                "total_shots": 0.6157,
                "rating": 6.8843,
                "minutes": 83.12,
                "total_pass": 44.4949,
                "accurate_pass": 36.501,
                "duels_won": 4.2817,
                "total_long_balls": 5.6539,
                "accurate_long_balls": 2.7962,
                "total_own_half_passes": 20.2796,
                "accurate_own_half_passes": 18.2243,
                "total_opp_half_passes": 24.2153,
                "accurate_opp_half_passes": 18.2768,
                "crosses_total": 0.4221,
                "crosses_accurate": 0.1352,
                "touches": 56.2059,
                "possession_lost": 10.8267,
                "dispossessed": 0.6171,
                "duels_lost": 5.1855,
                "aerial_won": 1.7725,
                "aerial_lost": 1.2621,
                "interceptions": 1.2159,
                "tackles_won": 0.34,
                "tackles": 0.5232,
                "clearances": 2.4389,
                "total_contest": 1.0427,
                "won_contest": 0.5524,
                "challenges_lost": 1.3826,
                "fouls": 1.4334,
                "fouls_drawn": 1.4883,
                "blocks": 0.3429,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.035,
                "ball_carries": 15.5733,
                "total_progression": 54.0884,
                "progressive_carries": 0.9161,
                "shots_off_target": 0.4576
              },
              "params": {
                "market_value_eur": 1800000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9967,
                "reference_quality": 0.505,
                "history_matches": 26,
                "history_shrink": 0.1613,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0161)",
              "stats": {
                "key_pass": 0.5528,
                "expected_assists": 0.0413,
                "assists": 0.058,
                "assist_rate": 0.058,
                "expected_goals": 0.0358,
                "goals": 0.0411,
                "goal_rate": 0.0411,
                "shots_on_target": 0.1556,
                "total_shots": 0.6123,
                "rating": 6.8843,
                "minutes": 83.12,
                "total_pass": 44.4949,
                "accurate_pass": 36.501,
                "duels_won": 4.2817,
                "total_long_balls": 5.6539,
                "accurate_long_balls": 2.7962,
                "total_own_half_passes": 20.2796,
                "accurate_own_half_passes": 18.2243,
                "total_opp_half_passes": 24.2153,
                "accurate_opp_half_passes": 18.2768,
                "crosses_total": 0.4347,
                "crosses_accurate": 0.1352,
                "touches": 56.2059,
                "possession_lost": 10.8267,
                "dispossessed": 0.6171,
                "duels_lost": 5.1855,
                "aerial_won": 1.7725,
                "aerial_lost": 1.2621,
                "interceptions": 1.2093,
                "tackles_won": 0.341,
                "tackles": 0.5232,
                "clearances": 2.4389,
                "total_contest": 1.0427,
                "won_contest": 0.5524,
                "challenges_lost": 1.3826,
                "fouls": 1.4426,
                "fouls_drawn": 1.4773,
                "blocks": 0.3429,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.035,
                "ball_carries": 15.5733,
                "total_progression": 54.0884,
                "progressive_carries": 0.9161,
                "shots_off_target": 0.4576
              },
              "params": {
                "blend_weight": 0.0161,
                "history_matches": 26,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9236,
                "prior_reliability": 0.1533,
                "competition": "La Liga",
                "squad": "Osasuna"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 0.4221,
                  "after": 0.4347
                },
                {
                  "stat": "wasFouled",
                  "before": 1.4883,
                  "after": 1.4773
                },
                {
                  "stat": "fouls",
                  "before": 1.4334,
                  "after": 1.4426
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.2159,
                  "after": 1.2093
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5528,
                "expected_assists": 0.0413,
                "assists": 0.058,
                "assist_rate": 0.058,
                "expected_goals": 0.0358,
                "goals": 0.0411,
                "goal_rate": 0.0411,
                "shots_on_target": 0.1556,
                "total_shots": 0.6132,
                "rating": 6.8843,
                "minutes": 83.12,
                "total_pass": 44.4949,
                "accurate_pass": 36.501,
                "duels_won": 4.2817,
                "total_long_balls": 5.6539,
                "accurate_long_balls": 2.7962,
                "total_own_half_passes": 20.2796,
                "accurate_own_half_passes": 18.2243,
                "total_opp_half_passes": 24.2153,
                "accurate_opp_half_passes": 18.2768,
                "crosses_total": 0.4347,
                "crosses_accurate": 0.1352,
                "touches": 56.2059,
                "possession_lost": 10.8267,
                "dispossessed": 0.6171,
                "duels_lost": 5.1855,
                "aerial_won": 1.7725,
                "aerial_lost": 1.2621,
                "interceptions": 1.2093,
                "tackles_won": 0.341,
                "tackles": 0.5232,
                "clearances": 2.4389,
                "total_contest": 1.0427,
                "won_contest": 0.5524,
                "challenges_lost": 1.3826,
                "fouls": 1.4426,
                "fouls_drawn": 1.4773,
                "blocks": 0.3429,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.035,
                "ball_carries": 15.5733,
                "total_progression": 54.0884,
                "progressive_carries": 0.9161,
                "shots_off_target": 0.4576
              },
              "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.5528,
                "expected_assists": 0.0413,
                "assists": 0.058,
                "assist_rate": 0.058,
                "expected_goals": 0.0347,
                "goals": 0.0399,
                "goal_rate": 0.0399,
                "shots_on_target": 0.151,
                "total_shots": 0.5952,
                "rating": 6.8843,
                "minutes": 83.12,
                "total_pass": 44.4949,
                "accurate_pass": 36.501,
                "duels_won": 4.2817,
                "total_long_balls": 5.6539,
                "accurate_long_balls": 2.7962,
                "total_own_half_passes": 20.2796,
                "accurate_own_half_passes": 18.2243,
                "total_opp_half_passes": 24.2153,
                "accurate_opp_half_passes": 18.2768,
                "crosses_total": 0.4347,
                "crosses_accurate": 0.1352,
                "touches": 56.2059,
                "possession_lost": 10.8267,
                "dispossessed": 0.6171,
                "duels_lost": 5.1855,
                "aerial_won": 1.0,
                "aerial_lost": 1.2621,
                "interceptions": 1.2093,
                "tackles_won": 0.341,
                "tackles": 0.5232,
                "clearances": 2.4389,
                "total_contest": 1.0427,
                "won_contest": 0.5524,
                "challenges_lost": 1.3826,
                "fouls": 1.4426,
                "fouls_drawn": 1.4773,
                "blocks": 0.3429,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.034,
                "ball_carries": 15.5733,
                "total_progression": 54.0884,
                "progressive_carries": 0.9161,
                "shots_off_target": 0.4441,
                "duel_xg_multiplier": 0.9706,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.4,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Íñigo Sáinz-Maza",
                  "matchup_zone": "CDM vs CDM",
                  "duel_win_rate": 0.4,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 0.9706,
                  "skill_edge": 0.0,
                  "height_edge": -0.02,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.4374,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Íñigo Sáinz-Maza",
                      "market_value": 1000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.4374
                    }
                  ],
                  "xg_override": 0.0347
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 1.7725,
                  "after": 1.0
                },
                {
                  "stat": "totalShots",
                  "before": 0.6132,
                  "after": 0.5952
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4576,
                  "after": 0.4441
                }
              ]
            },
            {
              "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.5528,
                "expected_assists": 0.0413,
                "assist_rate": 0.058,
                "assists": 0,
                "expected_goals": 0.0347,
                "goal_rate": 0.0399,
                "goals": 0,
                "shots_on_target": 0.151,
                "total_shots": 0.5952,
                "rating": 6.8843,
                "minutes": 83.12,
                "total_pass": 44.4949,
                "accurate_pass": 36.501,
                "duels_won": 4.2817,
                "total_long_balls": 5.6539,
                "accurate_long_balls": 2.7962,
                "total_own_half_passes": 20.2796,
                "accurate_own_half_passes": 18.2243,
                "total_opp_half_passes": 24.2153,
                "accurate_opp_half_passes": 18.2768,
                "crosses_total": 0.4347,
                "crosses_accurate": 0.1352,
                "touches": 56.2059,
                "possession_lost": 10.8267,
                "dispossessed": 0.6171,
                "duels_lost": 5.1855,
                "aerial_won": 1.0,
                "aerial_lost": 1.2621,
                "interceptions": 1.2093,
                "tackles_won": 0.341,
                "tackles": 0.5232,
                "clearances": 2.4389,
                "total_contest": 1.0427,
                "won_contest": 0.5524,
                "challenges_lost": 1.3826,
                "fouls": 1.4426,
                "fouls_drawn": 1.4773,
                "blocks": 0.3429,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.034,
                "ball_carries": 15.5733,
                "total_progression": 54.0884,
                "progressive_carries": 0.9161,
                "shots_off_target": 0.4441,
                "duel_xg_multiplier": 0.9706,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.4,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "key_pass": 0.5528,
                "expected_assists": 0.0605,
                "assist_rate": 0.058,
                "assists": 0,
                "expected_goals": 0.0508,
                "goal_rate": 0.0399,
                "goals": 0,
                "shots_on_target": 0.151,
                "total_shots": 0.5952,
                "rating": 6.8843,
                "minutes": 83.12,
                "total_pass": 44.4949,
                "accurate_pass": 36.501,
                "duels_won": 4.2817,
                "total_long_balls": 5.6539,
                "accurate_long_balls": 2.7962,
                "total_own_half_passes": 20.2796,
                "accurate_own_half_passes": 18.2243,
                "total_opp_half_passes": 24.2153,
                "accurate_opp_half_passes": 18.2768,
                "crosses_total": 0.4347,
                "crosses_accurate": 0.1352,
                "touches": 56.2059,
                "possession_lost": 10.8267,
                "dispossessed": 0.6171,
                "duels_lost": 5.1855,
                "aerial_won": 1.0,
                "aerial_lost": 1.2621,
                "interceptions": 1.2093,
                "tackles_won": 0.341,
                "tackles": 0.5232,
                "clearances": 2.4389,
                "total_contest": 1.0427,
                "won_contest": 0.5524,
                "challenges_lost": 1.3826,
                "fouls": 1.4426,
                "fouls_drawn": 1.4773,
                "blocks": 0.3429,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0498,
                "ball_carries": 15.5733,
                "total_progression": 54.0884,
                "progressive_carries": 0.9161,
                "shots_off_target": 0.4441,
                "duel_xg_multiplier": 0.9706,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.4,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0614,
                "creation_factor": 1.1829
              },
              "params": {
                "team_lambda": 1.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0347,
                  "after": 0.0508
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0413,
                  "after": 0.0605
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 73.0)",
              "stats": {
                "key_pass": 0.5528,
                "expected_assists": 0.0605,
                "assist_rate": 0.058,
                "assists": 0,
                "expected_goals": 0.0508,
                "goal_rate": 0.0399,
                "goals": 0,
                "shots_on_target": 0.151,
                "total_shots": 0.5952,
                "rating": 6.8843,
                "minutes": 83.12,
                "total_pass": 44.4949,
                "accurate_pass": 36.501,
                "duels_won": 4.2817,
                "total_long_balls": 5.6539,
                "accurate_long_balls": 2.7962,
                "total_own_half_passes": 20.2796,
                "accurate_own_half_passes": 18.2243,
                "total_opp_half_passes": 24.2153,
                "accurate_opp_half_passes": 18.2768,
                "crosses_total": 0.4347,
                "crosses_accurate": 0.1352,
                "touches": 56.2059,
                "possession_lost": 10.8267,
                "dispossessed": 0.6171,
                "duels_lost": 5.1855,
                "aerial_won": 1.0,
                "aerial_lost": 1.2621,
                "interceptions": 1.2093,
                "tackles_won": 0.341,
                "tackles": 0.5232,
                "clearances": 2.4389,
                "total_contest": 1.0427,
                "won_contest": 0.5524,
                "challenges_lost": 1.3826,
                "fouls": 1.4426,
                "fouls_drawn": 1.4773,
                "blocks": 0.3429,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0498,
                "ball_carries": 15.5733,
                "total_progression": 54.0884,
                "progressive_carries": 0.9161,
                "shots_off_target": 0.4441,
                "duel_xg_multiplier": 0.9706,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.4,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0614,
                "creation_factor": 1.1829,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 5,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4072,
                "fifa_rank": 3525.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.5528,
                "expected_assists": 0.0605,
                "assist_rate": 0.058,
                "assists": 0,
                "expected_goals": 0.0508,
                "goal_rate": 0.0399,
                "goals": 0,
                "shots_on_target": 0.151,
                "total_shots": 0.5952,
                "rating": 6.8843,
                "minutes": 83.12,
                "total_pass": 44.4949,
                "accurate_pass": 36.501,
                "duels_won": 4.2817,
                "total_long_balls": 5.6539,
                "accurate_long_balls": 2.7962,
                "total_own_half_passes": 20.2796,
                "accurate_own_half_passes": 18.2243,
                "total_opp_half_passes": 24.2153,
                "accurate_opp_half_passes": 18.2768,
                "crosses_total": 0.4347,
                "crosses_accurate": 0.1352,
                "touches": 56.2059,
                "possession_lost": 10.8267,
                "dispossessed": 0.6171,
                "duels_lost": 5.1855,
                "aerial_won": 1.0,
                "aerial_lost": 1.2621,
                "interceptions": 1.2093,
                "tackles_won": 0.341,
                "tackles": 0.5232,
                "clearances": 2.4389,
                "total_contest": 1.0427,
                "won_contest": 0.5524,
                "challenges_lost": 1.3826,
                "fouls": 1.4426,
                "fouls_drawn": 1.4773,
                "blocks": 0.3429,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0498,
                "ball_carries": 15.5733,
                "total_progression": 54.0884,
                "progressive_carries": 0.9161,
                "shots_off_target": 0.4441,
                "duel_xg_multiplier": 0.9706,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.4,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0495,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0614,
                "creation_factor": 1.1829,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0495,
                "goal_rate": 0.0399,
                "scorer_weight": 0.0539,
                "squad_weight_total": 1.3652,
                "weight_share": 0.0395,
                "finishing_factor": 1.0614,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.5528,
                "expected_assists": 0.0605,
                "assist_rate": 0.058,
                "assists": 0,
                "expected_goals": 0.0508,
                "goal_rate": 0.0399,
                "goals": 0,
                "shots_on_target": 0.151,
                "total_shots": 0.5952,
                "rating": 6.8843,
                "minutes": 83.12,
                "total_pass": 44.4949,
                "accurate_pass": 36.501,
                "duels_won": 4.2817,
                "total_long_balls": 5.6539,
                "accurate_long_balls": 2.7962,
                "total_own_half_passes": 20.2796,
                "accurate_own_half_passes": 18.2243,
                "total_opp_half_passes": 24.2153,
                "accurate_opp_half_passes": 18.2768,
                "crosses_total": 0.4347,
                "crosses_accurate": 0.1352,
                "touches": 56.2059,
                "possession_lost": 10.8267,
                "dispossessed": 0.6171,
                "duels_lost": 5.1855,
                "aerial_won": 1.0,
                "aerial_lost": 1.2621,
                "interceptions": 1.2093,
                "tackles_won": 0.341,
                "tackles": 0.5232,
                "clearances": 2.4389,
                "total_contest": 1.0427,
                "won_contest": 0.5524,
                "challenges_lost": 1.3826,
                "fouls": 1.4426,
                "fouls_drawn": 1.4773,
                "blocks": 0.3429,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0498,
                "ball_carries": 15.5733,
                "total_progression": 54.0884,
                "progressive_carries": 0.9161,
                "shots_off_target": 0.4441,
                "duel_xg_multiplier": 0.9706,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.4,
                "pressing_faced": "LOW",
                "matchup_zone": "CDM vs CDM",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0495,
                "projected_assists": 0,
                "assist_probability": 0.0587,
                "finishing_factor": 1.0614,
                "creation_factor": 1.1829,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0587,
                "assist_rate": 0.058,
                "provider_weight": 0.0716,
                "squad_weight_total": 0.9792,
                "weight_share": 0.0731,
                "creation_factor": 1.1829,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Lucas Torró": {
          "player_id": 187313,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 6,
          "height": 190,
          "market_value": 2700000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0555,
            "assist_rate": 0.0486,
            "assists": 0,
            "expected_goals": 0.1287,
            "goal_rate": 0.0741,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7968,
            "minutes": 78,
            "total_pass": 37,
            "accurate_pass": 29,
            "duels_won": 6,
            "total_long_balls": 4,
            "accurate_long_balls": 1,
            "total_own_half_passes": 16,
            "accurate_own_half_passes": 14,
            "total_opp_half_passes": 21,
            "accurate_opp_half_passes": 15,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 47,
            "possession_lost": 9.7819,
            "dispossessed": 0.4235,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 2,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 2,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0799,
            "ball_carries": 11,
            "total_progression": 31,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.0353,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.8,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.474,
            "pressing_faced": "LOW",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Íñigo Sáinz-Maza",
            "opponent_faced": "Íñigo Sáinz-Maza",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1208,
            "projected_assists": 0,
            "assist_probability": 0.054,
            "finishing_factor": 0.8999,
            "creation_factor": 1.1217,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16421054,
              "match_date": "2026-10-11",
              "home_team": "Real Betis",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0303,
                "expected_assists": 0.0218,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 68,
                "accurate_pass": 60,
                "tackles": 1,
                "clearances": 2,
                "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": 16416305,
              "match_date": "2026-09-19",
              "home_team": "Osasuna",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 21,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0106,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 11,
                "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": 16416335,
              "match_date": "2026-09-16",
              "home_team": "Atlético Madrid",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0162,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 17,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 19,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0028,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 11,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0633,
                "expected_assists": 0.0182,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 54,
                "accurate_pass": 45,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416296,
              "match_date": "2026-08-24",
              "home_team": "Osasuna",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 9,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 4,
                "clearances": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083723,
              "match_date": "2026-05-23",
              "home_team": "Getafe",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 68,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1626,
                "expected_assists": 0.006,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 2,
                "total_pass": 16,
                "accurate_pass": 9,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 7,
                "duels_won": 10,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 58,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1181,
                "expected_assists": 0.033,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 20,
                "accurate_pass": 14,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 5,
                "duels_won": 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": 14083634,
              "match_date": "2026-05-12",
              "home_team": "Osasuna",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 72,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0836,
                "expected_assists": 0.0422,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 39,
                "accurate_pass": 31,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "aerial_won": 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": 14083568,
              "match_date": "2026-05-08",
              "home_team": "Levante UD",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 28,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 3,
                "key_pass": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 3
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3360,
            "combined_rank_score": 1309.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 665.0,
            "sofascore_rating": 6.7281,
            "sofascore_appearances": 34.0,
            "fifa_rank": 1953.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7968,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lucas Torró",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Soufiane Rahimi",
                  "ranking": 3355
                },
                {
                  "player_name": "Héctor Bellerín",
                  "ranking": 3356
                },
                {
                  "player_name": "Lucas Perri",
                  "ranking": 3357
                },
                {
                  "player_name": "Billy Gilmour",
                  "ranking": 3358
                },
                {
                  "player_name": "Bernardo",
                  "ranking": 3359
                }
              ],
              "lower": [
                {
                  "player_name": "Kyle Walker",
                  "ranking": 3361
                },
                {
                  "player_name": "Nikola Moro",
                  "ranking": 3362
                },
                {
                  "player_name": "Ayden Heaven",
                  "ranking": 3363
                },
                {
                  "player_name": "Aron Dønnum",
                  "ranking": 3364
                },
                {
                  "player_name": "Iñaki Peña",
                  "ranking": 3365
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.763,
          "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.763,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9977,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 1.0,
              "minutes": 120.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.75,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.0867
            },
            "rationale": "XGBoost regressor (M_service) evaluated 40 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Osasuna, rel: 0.09, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.5618,
                "expected_assists": 0.038,
                "assists": 0.049,
                "assist_rate": 0.049,
                "expected_goals": 0.0851,
                "goals": 0.0722,
                "goal_rate": 0.0722,
                "shots_on_target": 0.3432,
                "total_shots": 0.9216,
                "rating": 6.7968,
                "minutes": 78.46,
                "total_pass": 37.1398,
                "accurate_pass": 28.8729,
                "duels_won": 5.5975,
                "total_long_balls": 3.5605,
                "accurate_long_balls": 1.1235,
                "total_own_half_passes": 16.4607,
                "accurate_own_half_passes": 13.8778,
                "total_opp_half_passes": 20.6791,
                "accurate_opp_half_passes": 14.9951,
                "crosses_total": 0.0426,
                "crosses_accurate": 0.0,
                "touches": 47.1646,
                "possession_lost": 9.8045,
                "dispossessed": 0.4245,
                "duels_lost": 4.7175,
                "aerial_won": 3.2166,
                "aerial_lost": 2.3209,
                "interceptions": 0.6452,
                "tackles_won": 0.6983,
                "tackles": 1.4306,
                "clearances": 1.5383,
                "total_contest": 0.4844,
                "won_contest": 0.4301,
                "challenges_lost": 0.7796,
                "fouls": 1.4422,
                "fouls_drawn": 0.5266,
                "blocks": 0.4787,
                "big_chances_created": 0.0051,
                "big_chances_missed": 0.1153,
                "xgot": 0.0528,
                "ball_carries": 10.6934,
                "total_progression": 31.3653,
                "progressive_carries": 0.5315,
                "shots_off_target": 0.5784
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-17T10:05:52.581708+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Rayo Vallecano",
                    "minutes": 21.0,
                    "is_starting": false,
                    "weight": 0.1277,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.0923,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Levante UD",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.0667,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Getafe",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Espanyol",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Atlético Madrid",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-08",
                    "opponent": "Levante UD",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.7653,
                  "creative_index": 0.1306,
                  "expectedGoals": 0.0338,
                  "expectedAssists": 0.0141,
                  "onTargetScoringAttempt": 0.1795
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5617659687995911,
                    "model_output": 0.5618,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.1122
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1114
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.098
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0837
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0254
                        }
                      ],
                      "others": -0.1233,
                      "total": 0.5618,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.134325
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.133366
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.116346
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.111409
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.036368
                        }
                      ],
                      "others_margin": -0.1984
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03796093165874481,
                    "model_output": 0.038,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.018
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.013
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0074
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0064
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.005
                        }
                      ],
                      "others": -0.0126,
                      "total": 0.038,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.235863
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.213329
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.127749
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.109492
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.09477
                        }
                      ],
                      "others_margin": -0.287892
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.04899545758962631,
                    "model_output": 0.049,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0146
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0066
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0062
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0049
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.003
                        }
                      ],
                      "others": -0.0161,
                      "total": 0.049,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.182939
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.08658
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.081235
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.069644
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.045699
                        }
                      ],
                      "others_margin": -0.284018
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.08508937060832977,
                    "model_output": 0.0851,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0141
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0113
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0055
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0049
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0025
                        }
                      ],
                      "others": 0.0009,
                      "total": 0.0851,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.139002
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.110488
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.058126
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.055148
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.029656
                        }
                      ],
                      "others_margin": 0.011691
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.07224287837743759,
                    "model_output": 0.0722,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0133
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0127
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.008
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0071
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0059
                        }
                      ],
                      "others": -0.0194,
                      "total": 0.0722,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.127527
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.121055
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.084847
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.075651
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.062129
                        }
                      ],
                      "others_margin": -0.237921
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.34317684173583984,
                    "model_output": 0.3432,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.059
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0243
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0142
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0112
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0085
                        }
                      ],
                      "others": -0.0287,
                      "total": 0.3432,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.166594
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.065202
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.038543
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.030477
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.023211
                        }
                      ],
                      "others_margin": -0.08049
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.9215483069419861,
                    "model_output": 0.9215,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1471
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0645
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0451
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0204
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0198
                        }
                      ],
                      "others": -0.0713,
                      "total": 0.9215,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.147105
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.06447
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.04511
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.020371
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.019785
                        }
                      ],
                      "others_margin": -0.071355
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.796751976013184,
                    "model_output": 6.7968,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": -0.042
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0273
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0097
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0064
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0059
                        }
                      ],
                      "others": -0.0196,
                      "total": 6.7968,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.041997
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.027341
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.009705
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.006428
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.00591
                        }
                      ],
                      "others_margin": -0.019605
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 40,
                  "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 0.9977, quality 0.437)",
              "stats": {
                "key_pass": 0.5605,
                "expected_assists": 0.0379,
                "assists": 0.0489,
                "assist_rate": 0.0489,
                "expected_goals": 0.0849,
                "goals": 0.0721,
                "goal_rate": 0.0721,
                "shots_on_target": 0.3424,
                "total_shots": 0.9195,
                "rating": 6.7968,
                "minutes": 78.46,
                "total_pass": 37.0544,
                "accurate_pass": 28.8065,
                "duels_won": 5.5846,
                "total_long_balls": 3.5523,
                "accurate_long_balls": 1.1209,
                "total_own_half_passes": 16.4228,
                "accurate_own_half_passes": 13.8459,
                "total_opp_half_passes": 20.6315,
                "accurate_opp_half_passes": 14.9606,
                "crosses_total": 0.0425,
                "crosses_accurate": 0.0,
                "touches": 47.0561,
                "possession_lost": 9.7819,
                "dispossessed": 0.4235,
                "duels_lost": 4.7066,
                "aerial_won": 3.2092,
                "aerial_lost": 2.3156,
                "interceptions": 0.6437,
                "tackles_won": 0.6967,
                "tackles": 1.4273,
                "clearances": 1.5348,
                "total_contest": 0.4833,
                "won_contest": 0.4291,
                "challenges_lost": 0.7778,
                "fouls": 1.4389,
                "fouls_drawn": 0.5254,
                "blocks": 0.4776,
                "big_chances_created": 0.0051,
                "big_chances_missed": 0.115,
                "xgot": 0.0527,
                "ball_carries": 10.6688,
                "total_progression": 31.2932,
                "progressive_carries": 0.5303,
                "shots_off_target": 0.5771
              },
              "params": {
                "market_value_eur": 2700000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9977,
                "reference_quality": 0.505,
                "history_matches": 40,
                "history_shrink": 0.1111,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0063)",
              "stats": {
                "key_pass": 0.5605,
                "expected_assists": 0.0379,
                "assists": 0.0486,
                "assist_rate": 0.0486,
                "expected_goals": 0.0849,
                "goals": 0.0716,
                "goal_rate": 0.0716,
                "shots_on_target": 0.3403,
                "total_shots": 0.9178,
                "rating": 6.7968,
                "minutes": 78.46,
                "total_pass": 37.0544,
                "accurate_pass": 28.8065,
                "duels_won": 5.5846,
                "total_long_balls": 3.5523,
                "accurate_long_balls": 1.1209,
                "total_own_half_passes": 16.4228,
                "accurate_own_half_passes": 13.8459,
                "total_opp_half_passes": 20.6315,
                "accurate_opp_half_passes": 14.9606,
                "crosses_total": 0.0422,
                "crosses_accurate": 0.0,
                "touches": 47.0561,
                "possession_lost": 9.7819,
                "dispossessed": 0.4235,
                "duels_lost": 4.7066,
                "aerial_won": 3.2092,
                "aerial_lost": 2.3156,
                "interceptions": 0.6397,
                "tackles_won": 0.7007,
                "tackles": 1.4273,
                "clearances": 1.5348,
                "total_contest": 0.4833,
                "won_contest": 0.4291,
                "challenges_lost": 0.7778,
                "fouls": 1.4341,
                "fouls_drawn": 0.5221,
                "blocks": 0.4776,
                "big_chances_created": 0.0051,
                "big_chances_missed": 0.115,
                "xgot": 0.0527,
                "ball_carries": 10.6688,
                "total_progression": 31.2932,
                "progressive_carries": 0.5303,
                "shots_off_target": 0.5771
              },
              "params": {
                "blend_weight": 0.0063,
                "history_matches": 40,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8718,
                "prior_reliability": 0.0867,
                "competition": "La Liga",
                "squad": "Osasuna"
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.5605,
                "expected_assists": 0.0379,
                "assists": 0.0486,
                "assist_rate": 0.0486,
                "expected_goals": 0.0849,
                "goals": 0.0716,
                "goal_rate": 0.0716,
                "shots_on_target": 0.3403,
                "total_shots": 0.9178,
                "rating": 6.7968,
                "minutes": 78.46,
                "total_pass": 37.0544,
                "accurate_pass": 28.8065,
                "duels_won": 5.5846,
                "total_long_balls": 3.5523,
                "accurate_long_balls": 1.1209,
                "total_own_half_passes": 16.4228,
                "accurate_own_half_passes": 13.8459,
                "total_opp_half_passes": 20.6315,
                "accurate_opp_half_passes": 14.9606,
                "crosses_total": 0.0422,
                "crosses_accurate": 0.0,
                "touches": 47.0561,
                "possession_lost": 9.7819,
                "dispossessed": 0.4235,
                "duels_lost": 4.7066,
                "aerial_won": 3.2092,
                "aerial_lost": 2.3156,
                "interceptions": 0.6397,
                "tackles_won": 0.7007,
                "tackles": 1.4273,
                "clearances": 1.5348,
                "total_contest": 0.4833,
                "won_contest": 0.4291,
                "challenges_lost": 0.7778,
                "fouls": 1.4341,
                "fouls_drawn": 0.5221,
                "blocks": 0.4776,
                "big_chances_created": 0.0051,
                "big_chances_missed": 0.115,
                "xgot": 0.0527,
                "ball_carries": 10.6688,
                "total_progression": 31.2932,
                "progressive_carries": 0.5303,
                "shots_off_target": 0.5771
              },
              "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.5605,
                "expected_assists": 0.0379,
                "assists": 0.0486,
                "assist_rate": 0.0486,
                "expected_goals": 0.0879,
                "goals": 0.0741,
                "goal_rate": 0.0741,
                "shots_on_target": 0.3523,
                "total_shots": 0.9502,
                "rating": 6.7968,
                "minutes": 78.46,
                "total_pass": 37.0544,
                "accurate_pass": 28.8065,
                "duels_won": 5.5846,
                "total_long_balls": 3.5523,
                "accurate_long_balls": 1.1209,
                "total_own_half_passes": 16.4228,
                "accurate_own_half_passes": 13.8459,
                "total_opp_half_passes": 20.6315,
                "accurate_opp_half_passes": 14.9606,
                "crosses_total": 0.0422,
                "crosses_accurate": 0.0,
                "touches": 47.0561,
                "possession_lost": 9.7819,
                "dispossessed": 0.4235,
                "duels_lost": 4.7066,
                "aerial_won": 1.3,
                "aerial_lost": 2.3156,
                "interceptions": 0.6397,
                "tackles_won": 0.7007,
                "tackles": 1.4273,
                "clearances": 1.5348,
                "total_contest": 0.4833,
                "won_contest": 0.4291,
                "challenges_lost": 0.7778,
                "fouls": 1.4341,
                "fouls_drawn": 0.5221,
                "blocks": 0.4776,
                "big_chances_created": 0.0051,
                "big_chances_missed": 0.1191,
                "xgot": 0.0546,
                "ball_carries": 10.6688,
                "total_progression": 31.2932,
                "progressive_carries": 0.5303,
                "shots_off_target": 0.5975,
                "duel_xg_multiplier": 1.0353,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.474,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Íñigo Sáinz-Maza",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                  "duel_win_rate": 0.474,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.0353,
                  "skill_edge": 0.0,
                  "height_edge": 0.024,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.4374,
                  "attacker_role": "CM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Íñigo Sáinz-Maza",
                      "market_value": 1000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.4374
                    }
                  ],
                  "xg_override": 0.0879
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 3.2092,
                  "after": 1.3
                },
                {
                  "stat": "totalShots",
                  "before": 0.9178,
                  "after": 0.9502
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.5771,
                  "after": 0.5975
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3403,
                  "after": 0.3523
                }
              ]
            },
            {
              "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.5605,
                "expected_assists": 0.0379,
                "assist_rate": 0.0486,
                "assists": 0,
                "expected_goals": 0.0879,
                "goal_rate": 0.0741,
                "goals": 0,
                "shots_on_target": 0.3523,
                "total_shots": 0.9502,
                "rating": 6.7968,
                "minutes": 78.46,
                "total_pass": 37.0544,
                "accurate_pass": 28.8065,
                "duels_won": 5.5846,
                "total_long_balls": 3.5523,
                "accurate_long_balls": 1.1209,
                "total_own_half_passes": 16.4228,
                "accurate_own_half_passes": 13.8459,
                "total_opp_half_passes": 20.6315,
                "accurate_opp_half_passes": 14.9606,
                "crosses_total": 0.0422,
                "crosses_accurate": 0.0,
                "touches": 47.0561,
                "possession_lost": 9.7819,
                "dispossessed": 0.4235,
                "duels_lost": 4.7066,
                "aerial_won": 1.3,
                "aerial_lost": 2.3156,
                "interceptions": 0.6397,
                "tackles_won": 0.7007,
                "tackles": 1.4273,
                "clearances": 1.5348,
                "total_contest": 0.4833,
                "won_contest": 0.4291,
                "challenges_lost": 0.7778,
                "fouls": 1.4341,
                "fouls_drawn": 0.5221,
                "blocks": 0.4776,
                "big_chances_created": 0.0051,
                "big_chances_missed": 0.1191,
                "xgot": 0.0546,
                "ball_carries": 10.6688,
                "total_progression": 31.2932,
                "progressive_carries": 0.5303,
                "shots_off_target": 0.5975,
                "duel_xg_multiplier": 1.0353,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.474,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "key_pass": 0.5605,
                "expected_assists": 0.0555,
                "assist_rate": 0.0486,
                "assists": 0,
                "expected_goals": 0.1287,
                "goal_rate": 0.0741,
                "goals": 0,
                "shots_on_target": 0.3523,
                "total_shots": 0.9502,
                "rating": 6.7968,
                "minutes": 78.46,
                "total_pass": 37.0544,
                "accurate_pass": 28.8065,
                "duels_won": 5.5846,
                "total_long_balls": 3.5523,
                "accurate_long_balls": 1.1209,
                "total_own_half_passes": 16.4228,
                "accurate_own_half_passes": 13.8459,
                "total_opp_half_passes": 20.6315,
                "accurate_opp_half_passes": 14.9606,
                "crosses_total": 0.0422,
                "crosses_accurate": 0.0,
                "touches": 47.0561,
                "possession_lost": 9.7819,
                "dispossessed": 0.4235,
                "duels_lost": 4.7066,
                "aerial_won": 1.3,
                "aerial_lost": 2.3156,
                "interceptions": 0.6397,
                "tackles_won": 0.7007,
                "tackles": 1.4273,
                "clearances": 1.5348,
                "total_contest": 0.4833,
                "won_contest": 0.4291,
                "challenges_lost": 0.7778,
                "fouls": 1.4341,
                "fouls_drawn": 0.5221,
                "blocks": 0.4776,
                "big_chances_created": 0.0051,
                "big_chances_missed": 0.1191,
                "xgot": 0.0799,
                "ball_carries": 10.6688,
                "total_progression": 31.2932,
                "progressive_carries": 0.5303,
                "shots_off_target": 0.5975,
                "duel_xg_multiplier": 1.0353,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.474,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8999,
                "creation_factor": 1.1217
              },
              "params": {
                "team_lambda": 1.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0879,
                  "after": 0.1287
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0379,
                  "after": 0.0555
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 76.0)",
              "stats": {
                "key_pass": 0.5605,
                "expected_assists": 0.0555,
                "assist_rate": 0.0486,
                "assists": 0,
                "expected_goals": 0.1287,
                "goal_rate": 0.0741,
                "goals": 0,
                "shots_on_target": 0.3523,
                "total_shots": 0.9502,
                "rating": 6.7968,
                "minutes": 78.46,
                "total_pass": 37.0544,
                "accurate_pass": 28.8065,
                "duels_won": 5.5846,
                "total_long_balls": 3.5523,
                "accurate_long_balls": 1.1209,
                "total_own_half_passes": 16.4228,
                "accurate_own_half_passes": 13.8459,
                "total_opp_half_passes": 20.6315,
                "accurate_opp_half_passes": 14.9606,
                "crosses_total": 0.0422,
                "crosses_accurate": 0.0,
                "touches": 47.0561,
                "possession_lost": 9.7819,
                "dispossessed": 0.4235,
                "duels_lost": 4.7066,
                "aerial_won": 1.3,
                "aerial_lost": 2.3156,
                "interceptions": 0.6397,
                "tackles_won": 0.7007,
                "tackles": 1.4273,
                "clearances": 1.5348,
                "total_contest": 0.4833,
                "won_contest": 0.4291,
                "challenges_lost": 0.7778,
                "fouls": 1.4341,
                "fouls_drawn": 0.5221,
                "blocks": 0.4776,
                "big_chances_created": 0.0051,
                "big_chances_missed": 0.1191,
                "xgot": 0.0799,
                "ball_carries": 10.6688,
                "total_progression": 31.2932,
                "progressive_carries": 0.5303,
                "shots_off_target": 0.5975,
                "duel_xg_multiplier": 1.0353,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.474,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8999,
                "creation_factor": 1.1217,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 9,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3360,
                "fifa_rank": 1953.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.5605,
                "expected_assists": 0.0555,
                "assist_rate": 0.0486,
                "assists": 0,
                "expected_goals": 0.1287,
                "goal_rate": 0.0741,
                "goals": 0,
                "shots_on_target": 0.3523,
                "total_shots": 0.9502,
                "rating": 6.7968,
                "minutes": 78.46,
                "total_pass": 37.0544,
                "accurate_pass": 28.8065,
                "duels_won": 5.5846,
                "total_long_balls": 3.5523,
                "accurate_long_balls": 1.1209,
                "total_own_half_passes": 16.4228,
                "accurate_own_half_passes": 13.8459,
                "total_opp_half_passes": 20.6315,
                "accurate_opp_half_passes": 14.9606,
                "crosses_total": 0.0422,
                "crosses_accurate": 0.0,
                "touches": 47.0561,
                "possession_lost": 9.7819,
                "dispossessed": 0.4235,
                "duels_lost": 4.7066,
                "aerial_won": 1.3,
                "aerial_lost": 2.3156,
                "interceptions": 0.6397,
                "tackles_won": 0.7007,
                "tackles": 1.4273,
                "clearances": 1.5348,
                "total_contest": 0.4833,
                "won_contest": 0.4291,
                "challenges_lost": 0.7778,
                "fouls": 1.4341,
                "fouls_drawn": 0.5221,
                "blocks": 0.4776,
                "big_chances_created": 0.0051,
                "big_chances_missed": 0.1191,
                "xgot": 0.0799,
                "ball_carries": 10.6688,
                "total_progression": 31.2932,
                "progressive_carries": 0.5303,
                "shots_off_target": 0.5975,
                "duel_xg_multiplier": 1.0353,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.474,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1208,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8999,
                "creation_factor": 1.1217,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1208,
                "goal_rate": 0.0741,
                "scorer_weight": 0.1158,
                "squad_weight_total": 1.3652,
                "weight_share": 0.0848,
                "finishing_factor": 0.8999,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.5605,
                "expected_assists": 0.0555,
                "assist_rate": 0.0486,
                "assists": 0,
                "expected_goals": 0.1287,
                "goal_rate": 0.0741,
                "goals": 0,
                "shots_on_target": 0.3523,
                "total_shots": 0.9502,
                "rating": 6.7968,
                "minutes": 78.46,
                "total_pass": 37.0544,
                "accurate_pass": 28.8065,
                "duels_won": 5.5846,
                "total_long_balls": 3.5523,
                "accurate_long_balls": 1.1209,
                "total_own_half_passes": 16.4228,
                "accurate_own_half_passes": 13.8459,
                "total_opp_half_passes": 20.6315,
                "accurate_opp_half_passes": 14.9606,
                "crosses_total": 0.0422,
                "crosses_accurate": 0.0,
                "touches": 47.0561,
                "possession_lost": 9.7819,
                "dispossessed": 0.4235,
                "duels_lost": 4.7066,
                "aerial_won": 1.3,
                "aerial_lost": 2.3156,
                "interceptions": 0.6397,
                "tackles_won": 0.7007,
                "tackles": 1.4273,
                "clearances": 1.5348,
                "total_contest": 0.4833,
                "won_contest": 0.4291,
                "challenges_lost": 0.7778,
                "fouls": 1.4341,
                "fouls_drawn": 0.5221,
                "blocks": 0.4776,
                "big_chances_created": 0.0051,
                "big_chances_missed": 0.1191,
                "xgot": 0.0799,
                "ball_carries": 10.6688,
                "total_progression": 31.2932,
                "progressive_carries": 0.5303,
                "shots_off_target": 0.5975,
                "duel_xg_multiplier": 1.0353,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.474,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.1208,
                "projected_assists": 0,
                "assist_probability": 0.054,
                "finishing_factor": 0.8999,
                "creation_factor": 1.1217,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.054,
                "assist_rate": 0.0486,
                "provider_weight": 0.0623,
                "squad_weight_total": 0.9792,
                "weight_share": 0.0636,
                "creation_factor": 1.1217,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Jon Moncayola": {
          "player_id": 976141,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 7,
          "height": 182,
          "market_value": 7300000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1168,
            "assist_rate": 0.0775,
            "assists": 0,
            "expected_goals": 0.064,
            "goal_rate": 0.0494,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.8197,
            "minutes": 78,
            "total_pass": 32,
            "accurate_pass": 27,
            "duels_won": 3,
            "total_long_balls": 5,
            "accurate_long_balls": 3,
            "total_own_half_passes": 15,
            "accurate_own_half_passes": 13,
            "total_opp_half_passes": 17,
            "accurate_opp_half_passes": 13,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 45,
            "possession_lost": 9.9978,
            "dispossessed": 0.8191,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0307,
            "ball_carries": 8,
            "total_progression": 16,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "duel_xg_multiplier": 1.0296,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.8,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.47,
            "pressing_faced": "LOW",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Íñigo Sáinz-Maza",
            "opponent_faced": "Íñigo Sáinz-Maza",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.062,
            "projected_assists": 0,
            "assist_probability": 0.1102,
            "finishing_factor": 1.0608,
            "creation_factor": 0.9823,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16421054,
              "match_date": "2026-10-11",
              "home_team": "Real Betis",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 63,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0136,
                "expected_assists": 0.166,
                "total_shots": 1,
                "total_pass": 25,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "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": 16416305,
              "match_date": "2026-09-19",
              "home_team": "Osasuna",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 69,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0062,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 4,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416335,
              "match_date": "2026-09-16",
              "home_team": "Atlético Madrid",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 19,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0695,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 11,
                "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": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0876,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 47,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0098,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 40,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0169,
                "expected_assists": 0.0386,
                "total_shots": 1,
                "total_pass": 42,
                "accurate_pass": 38,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 3,
                "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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 45,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0096,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 16,
                "tackles": 2,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416296,
              "match_date": "2026-08-24",
              "home_team": "Osasuna",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0715,
                "expected_assists": 0.019,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 32,
                "accurate_pass": 28,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 2,
                "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": 14083723,
              "match_date": "2026-05-23",
              "home_team": "Getafe",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 81,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0756,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 58,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0391,
                "expected_assists": 0.0092,
                "total_shots": 1,
                "total_pass": 27,
                "accurate_pass": 23,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 982,
            "combined_rank_score": 481.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 3.0,
            "fifa_rank": 517.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8197,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jon Moncayola",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "José Aldo",
                  "ranking": 977
                },
                {
                  "player_name": "Matheus Henrique",
                  "ranking": 978
                },
                {
                  "player_name": "Azizkhon Isokov",
                  "ranking": 979
                },
                {
                  "player_name": "Esteban Páez",
                  "ranking": 980
                },
                {
                  "player_name": "Krzysztof Piątek",
                  "ranking": 981
                }
              ],
              "lower": [
                {
                  "player_name": "Jahmali Waite",
                  "ranking": 983
                },
                {
                  "player_name": "Guillermo Viscarra",
                  "ranking": 984
                },
                {
                  "player_name": "Alexis Sánchez",
                  "ranking": 985
                },
                {
                  "player_name": "Jin-uk Jeong",
                  "ranking": 986
                },
                {
                  "player_name": "Cho Young-kwang",
                  "ranking": 987
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.775,
          "history_matches": 44,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 44,
            "data_confidence": 0.775,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9995,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 225.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.8,
              "shots_on_target_pct": 50.0,
              "prior_reliability": 0.1667
            },
            "rationale": "XGBoost regressor (M_service) evaluated 44 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Osasuna, rel: 0.17, 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.9248,
                "expected_assists": 0.0799,
                "assists": 0.0784,
                "assist_rate": 0.0784,
                "expected_goals": 0.0424,
                "goals": 0.0485,
                "goal_rate": 0.0485,
                "shots_on_target": 0.1778,
                "total_shots": 0.6244,
                "rating": 6.8197,
                "minutes": 78.32,
                "total_pass": 32.0007,
                "accurate_pass": 26.5443,
                "duels_won": 3.17,
                "total_long_balls": 5.0343,
                "accurate_long_balls": 2.5864,
                "total_own_half_passes": 14.6402,
                "accurate_own_half_passes": 13.0422,
                "total_opp_half_passes": 17.3605,
                "accurate_opp_half_passes": 13.502,
                "crosses_total": 2.648,
                "crosses_accurate": 0.7031,
                "touches": 45.342,
                "possession_lost": 10.0028,
                "dispossessed": 0.8195,
                "duels_lost": 3.6353,
                "aerial_won": 0.5969,
                "aerial_lost": 0.863,
                "interceptions": 0.7864,
                "tackles_won": 1.2208,
                "tackles": 2.0264,
                "clearances": 1.0506,
                "total_contest": 0.2051,
                "won_contest": 0.1618,
                "challenges_lost": 0.802,
                "fouls": 1.1208,
                "fouls_drawn": 0.3857,
                "blocks": 0.0671,
                "big_chances_created": 0.0497,
                "big_chances_missed": 0.0126,
                "xgot": 0.0204,
                "ball_carries": 8.2801,
                "total_progression": 16.3356,
                "progressive_carries": 0.442,
                "shots_off_target": 0.4466
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-17T10:05:52.581708+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Betis",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1501,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Rayo Vallecano",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "Atlético Madrid",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.1085,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Espanyol",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Celta Vigo",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Getafe",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Espanyol",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.4172,
                  "creative_index": 0.2548,
                  "expectedGoals": 0.0153,
                  "expectedAssists": 0.0738,
                  "onTargetScoringAttempt": 0.0908
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.9248331785202026,
                    "model_output": 0.9248,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.141
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0818
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0804
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": -0.0382
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0351
                        }
                      ],
                      "others": -0.0345,
                      "total": 0.9248,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.146572
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.082391
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.081048
                        },
                        {
                          "name": "keyPass_p90",
                          "margin": -0.037683
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.035907
                        }
                      ],
                      "others_margin": -0.036593
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07986769825220108,
                    "model_output": 0.0799,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": 0.0147
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0114
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0099
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0057
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0035
                        }
                      ],
                      "others": -0.0127,
                      "total": 0.0799,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": 0.158202
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.107962
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.092919
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.057228
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.037308
                        }
                      ],
                      "others_margin": -0.148493
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.07840237766504288,
                    "model_output": 0.0784,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0088
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0091
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.009
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0072
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0045
                        }
                      ],
                      "others": -0.006,
                      "total": 0.0784,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.09631
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.090385
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.089033
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.077698
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": -0.051655
                        }
                      ],
                      "others_margin": -0.075138
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0424317866563797,
                    "model_output": 0.0424,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0363
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0094
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0067
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0058
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.001
                        }
                      ],
                      "others": -0.0063,
                      "total": 0.0424,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.486557
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.177183
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.148212
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.129885
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.021176
                        }
                      ],
                      "others_margin": -0.137641
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.048530180007219315,
                    "model_output": 0.0485,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.022
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0129
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0078
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0075
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0034
                        }
                      ],
                      "others": -0.0113,
                      "total": 0.0485,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.25494
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.186663
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.117492
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.112778
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.055334
                        }
                      ],
                      "others_margin": -0.208399
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.17779433727264404,
                    "model_output": 0.1778,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0763
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0512
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0325
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0242
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0062
                        }
                      ],
                      "others": -0.0059,
                      "total": 0.1778,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.266924
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.229783
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.179147
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.13629
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.032941
                        }
                      ],
                      "others_margin": -0.032934
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6243804693222046,
                    "model_output": 0.6244,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2736
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1154
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.067
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0461
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0304
                        }
                      ],
                      "others": -0.0694,
                      "total": 0.6244,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.273556
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.115396
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.067024
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.046125
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.030445
                        }
                      ],
                      "others_margin": -0.0694
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.819660186767578,
                    "model_output": 6.8197,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0279
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0186
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0084
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.008
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0077
                        }
                      ],
                      "others": -0.0186,
                      "total": 6.8197,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.027885
                        },
                        {
                          "name": "rating",
                          "margin": -0.01861
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.008403
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.008025
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.007663
                        }
                      ],
                      "others_margin": -0.018579
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 44,
                  "role_matches": 42,
                  "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.9244,
                "expected_assists": 0.0798,
                "assists": 0.0784,
                "assist_rate": 0.0784,
                "expected_goals": 0.0424,
                "goals": 0.0485,
                "goal_rate": 0.0485,
                "shots_on_target": 0.1777,
                "total_shots": 0.6241,
                "rating": 6.8197,
                "minutes": 78.32,
                "total_pass": 31.9847,
                "accurate_pass": 26.531,
                "duels_won": 3.1684,
                "total_long_balls": 5.0318,
                "accurate_long_balls": 2.5851,
                "total_own_half_passes": 14.6329,
                "accurate_own_half_passes": 13.0357,
                "total_opp_half_passes": 17.3518,
                "accurate_opp_half_passes": 13.4952,
                "crosses_total": 2.6467,
                "crosses_accurate": 0.7027,
                "touches": 45.3193,
                "possession_lost": 9.9978,
                "dispossessed": 0.8191,
                "duels_lost": 3.6335,
                "aerial_won": 0.5966,
                "aerial_lost": 0.8626,
                "interceptions": 0.786,
                "tackles_won": 1.2202,
                "tackles": 2.0254,
                "clearances": 1.0501,
                "total_contest": 0.205,
                "won_contest": 0.1617,
                "challenges_lost": 0.8016,
                "fouls": 1.1202,
                "fouls_drawn": 0.3855,
                "blocks": 0.0671,
                "big_chances_created": 0.0497,
                "big_chances_missed": 0.0126,
                "xgot": 0.0204,
                "ball_carries": 8.276,
                "total_progression": 16.3274,
                "progressive_carries": 0.4418,
                "shots_off_target": 0.4464
              },
              "params": {
                "market_value_eur": 7300000,
                "quality_factor": 0.4903,
                "boost_factor": 0.9995,
                "reference_quality": 0.505,
                "history_matches": 44,
                "history_shrink": 0.102,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0111)",
              "stats": {
                "key_pass": 0.9244,
                "expected_assists": 0.0798,
                "assists": 0.0775,
                "assist_rate": 0.0775,
                "expected_goals": 0.0424,
                "goals": 0.048,
                "goal_rate": 0.048,
                "shots_on_target": 0.1796,
                "total_shots": 0.6249,
                "rating": 6.8197,
                "minutes": 78.32,
                "total_pass": 31.9847,
                "accurate_pass": 26.531,
                "duels_won": 3.1684,
                "total_long_balls": 5.0318,
                "accurate_long_balls": 2.5851,
                "total_own_half_passes": 14.6329,
                "accurate_own_half_passes": 13.0357,
                "total_opp_half_passes": 17.3518,
                "accurate_opp_half_passes": 13.4952,
                "crosses_total": 2.629,
                "crosses_accurate": 0.7027,
                "touches": 45.3193,
                "possession_lost": 9.9978,
                "dispossessed": 0.8191,
                "duels_lost": 3.6335,
                "aerial_won": 0.5966,
                "aerial_lost": 0.8626,
                "interceptions": 0.7966,
                "tackles_won": 1.226,
                "tackles": 2.0254,
                "clearances": 1.0501,
                "total_contest": 0.205,
                "won_contest": 0.1617,
                "challenges_lost": 0.8016,
                "fouls": 1.1194,
                "fouls_drawn": 0.3812,
                "blocks": 0.0671,
                "big_chances_created": 0.0497,
                "big_chances_missed": 0.0126,
                "xgot": 0.0204,
                "ball_carries": 8.276,
                "total_progression": 16.3274,
                "progressive_carries": 0.4418,
                "shots_off_target": 0.4464
              },
              "params": {
                "blend_weight": 0.0111,
                "history_matches": 44,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8702,
                "prior_reliability": 0.1667,
                "competition": "La Liga",
                "squad": "Osasuna"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 2.6467,
                  "after": 2.629
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.786,
                  "after": 0.7966
                },
                {
                  "stat": "wonTackle",
                  "before": 1.2202,
                  "after": 1.226
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.9244,
                "expected_assists": 0.0798,
                "assists": 0.0775,
                "assist_rate": 0.0775,
                "expected_goals": 0.0424,
                "goals": 0.048,
                "goal_rate": 0.048,
                "shots_on_target": 0.1796,
                "total_shots": 0.626,
                "rating": 6.8197,
                "minutes": 78.32,
                "total_pass": 31.9847,
                "accurate_pass": 26.531,
                "duels_won": 3.1684,
                "total_long_balls": 5.0318,
                "accurate_long_balls": 2.5851,
                "total_own_half_passes": 14.6329,
                "accurate_own_half_passes": 13.0357,
                "total_opp_half_passes": 17.3518,
                "accurate_opp_half_passes": 13.4952,
                "crosses_total": 2.629,
                "crosses_accurate": 0.7027,
                "touches": 45.3193,
                "possession_lost": 9.9978,
                "dispossessed": 0.8191,
                "duels_lost": 3.6335,
                "aerial_won": 0.5966,
                "aerial_lost": 0.8626,
                "interceptions": 0.7966,
                "tackles_won": 1.226,
                "tackles": 2.0254,
                "clearances": 1.0501,
                "total_contest": 0.205,
                "won_contest": 0.1617,
                "challenges_lost": 0.8016,
                "fouls": 1.1194,
                "fouls_drawn": 0.3812,
                "blocks": 0.0671,
                "big_chances_created": 0.0497,
                "big_chances_missed": 0.0126,
                "xgot": 0.0204,
                "ball_carries": 8.276,
                "total_progression": 16.3274,
                "progressive_carries": 0.4418,
                "shots_off_target": 0.4464
              },
              "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.9244,
                "expected_assists": 0.0798,
                "assists": 0.0775,
                "assist_rate": 0.0775,
                "expected_goals": 0.0437,
                "goals": 0.0494,
                "goal_rate": 0.0494,
                "shots_on_target": 0.1849,
                "total_shots": 0.6445,
                "rating": 6.8197,
                "minutes": 78.32,
                "total_pass": 31.9847,
                "accurate_pass": 26.531,
                "duels_won": 3.1684,
                "total_long_balls": 5.0318,
                "accurate_long_balls": 2.5851,
                "total_own_half_passes": 14.6329,
                "accurate_own_half_passes": 13.0357,
                "total_opp_half_passes": 17.3518,
                "accurate_opp_half_passes": 13.4952,
                "crosses_total": 2.629,
                "crosses_accurate": 0.7027,
                "touches": 45.3193,
                "possession_lost": 9.9978,
                "dispossessed": 0.8191,
                "duels_lost": 3.6335,
                "aerial_won": 1.1,
                "aerial_lost": 0.8626,
                "interceptions": 0.7966,
                "tackles_won": 1.226,
                "tackles": 2.0254,
                "clearances": 1.0501,
                "total_contest": 0.205,
                "won_contest": 0.1617,
                "challenges_lost": 0.8016,
                "fouls": 1.1194,
                "fouls_drawn": 0.3812,
                "blocks": 0.0671,
                "big_chances_created": 0.0497,
                "big_chances_missed": 0.013,
                "xgot": 0.021,
                "ball_carries": 8.276,
                "total_progression": 16.3274,
                "progressive_carries": 0.4418,
                "shots_off_target": 0.4596,
                "duel_xg_multiplier": 1.0296,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.47,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Íñigo Sáinz-Maza",
                  "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                  "duel_win_rate": 0.47,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.0296,
                  "skill_edge": 0.0282,
                  "height_edge": -0.008,
                  "attacker_skill": 0.5,
                  "defender_skill": 0.4374,
                  "attacker_role": "CM",
                  "attacker_mv_price_index": 0.9,
                  "defender_adjusted_parts": [
                    {
                      "player": "Íñigo Sáinz-Maza",
                      "market_value": 1000000,
                      "role": "CDM",
                      "price_index": 0.85,
                      "adjusted_quality": 0.4374
                    }
                  ],
                  "xg_override": 0.0437
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.5966,
                  "after": 1.1
                },
                {
                  "stat": "totalShots",
                  "before": 0.626,
                  "after": 0.6445
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4464,
                  "after": 0.4596
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1796,
                  "after": 0.1849
                }
              ]
            },
            {
              "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.9244,
                "expected_assists": 0.0798,
                "assist_rate": 0.0775,
                "assists": 0,
                "expected_goals": 0.0437,
                "goal_rate": 0.0494,
                "goals": 0,
                "shots_on_target": 0.1849,
                "total_shots": 0.6445,
                "rating": 6.8197,
                "minutes": 78.32,
                "total_pass": 31.9847,
                "accurate_pass": 26.531,
                "duels_won": 3.1684,
                "total_long_balls": 5.0318,
                "accurate_long_balls": 2.5851,
                "total_own_half_passes": 14.6329,
                "accurate_own_half_passes": 13.0357,
                "total_opp_half_passes": 17.3518,
                "accurate_opp_half_passes": 13.4952,
                "crosses_total": 2.629,
                "crosses_accurate": 0.7027,
                "touches": 45.3193,
                "possession_lost": 9.9978,
                "dispossessed": 0.8191,
                "duels_lost": 3.6335,
                "aerial_won": 1.1,
                "aerial_lost": 0.8626,
                "interceptions": 0.7966,
                "tackles_won": 1.226,
                "tackles": 2.0254,
                "clearances": 1.0501,
                "total_contest": 0.205,
                "won_contest": 0.1617,
                "challenges_lost": 0.8016,
                "fouls": 1.1194,
                "fouls_drawn": 0.3812,
                "blocks": 0.0671,
                "big_chances_created": 0.0497,
                "big_chances_missed": 0.013,
                "xgot": 0.021,
                "ball_carries": 8.276,
                "total_progression": 16.3274,
                "progressive_carries": 0.4418,
                "shots_off_target": 0.4596,
                "duel_xg_multiplier": 1.0296,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.47,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "key_pass": 0.9244,
                "expected_assists": 0.1168,
                "assist_rate": 0.0775,
                "assists": 0,
                "expected_goals": 0.064,
                "goal_rate": 0.0494,
                "goals": 0,
                "shots_on_target": 0.1849,
                "total_shots": 0.6445,
                "rating": 6.8197,
                "minutes": 78.32,
                "total_pass": 31.9847,
                "accurate_pass": 26.531,
                "duels_won": 3.1684,
                "total_long_balls": 5.0318,
                "accurate_long_balls": 2.5851,
                "total_own_half_passes": 14.6329,
                "accurate_own_half_passes": 13.0357,
                "total_opp_half_passes": 17.3518,
                "accurate_opp_half_passes": 13.4952,
                "crosses_total": 2.629,
                "crosses_accurate": 0.7027,
                "touches": 45.3193,
                "possession_lost": 9.9978,
                "dispossessed": 0.8191,
                "duels_lost": 3.6335,
                "aerial_won": 1.1,
                "aerial_lost": 0.8626,
                "interceptions": 0.7966,
                "tackles_won": 1.226,
                "tackles": 2.0254,
                "clearances": 1.0501,
                "total_contest": 0.205,
                "won_contest": 0.1617,
                "challenges_lost": 0.8016,
                "fouls": 1.1194,
                "fouls_drawn": 0.3812,
                "blocks": 0.0671,
                "big_chances_created": 0.0497,
                "big_chances_missed": 0.013,
                "xgot": 0.0307,
                "ball_carries": 8.276,
                "total_progression": 16.3274,
                "progressive_carries": 0.4418,
                "shots_off_target": 0.4596,
                "duel_xg_multiplier": 1.0296,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.47,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0608,
                "creation_factor": 0.9823
              },
              "params": {
                "team_lambda": 1.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0437,
                  "after": 0.064
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0798,
                  "after": 0.1168
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 81.0)",
              "stats": {
                "key_pass": 0.9244,
                "expected_assists": 0.1168,
                "assist_rate": 0.0775,
                "assists": 0,
                "expected_goals": 0.064,
                "goal_rate": 0.0494,
                "goals": 0,
                "shots_on_target": 0.1849,
                "total_shots": 0.6445,
                "rating": 6.8197,
                "minutes": 78.32,
                "total_pass": 31.9847,
                "accurate_pass": 26.531,
                "duels_won": 3.1684,
                "total_long_balls": 5.0318,
                "accurate_long_balls": 2.5851,
                "total_own_half_passes": 14.6329,
                "accurate_own_half_passes": 13.0357,
                "total_opp_half_passes": 17.3518,
                "accurate_opp_half_passes": 13.4952,
                "crosses_total": 2.629,
                "crosses_accurate": 0.7027,
                "touches": 45.3193,
                "possession_lost": 9.9978,
                "dispossessed": 0.8191,
                "duels_lost": 3.6335,
                "aerial_won": 1.1,
                "aerial_lost": 0.8626,
                "interceptions": 0.7966,
                "tackles_won": 1.226,
                "tackles": 2.0254,
                "clearances": 1.0501,
                "total_contest": 0.205,
                "won_contest": 0.1617,
                "challenges_lost": 0.8016,
                "fouls": 1.1194,
                "fouls_drawn": 0.3812,
                "blocks": 0.0671,
                "big_chances_created": 0.0497,
                "big_chances_missed": 0.013,
                "xgot": 0.0307,
                "ball_carries": 8.276,
                "total_progression": 16.3274,
                "progressive_carries": 0.4418,
                "shots_off_target": 0.4596,
                "duel_xg_multiplier": 1.0296,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.47,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0608,
                "creation_factor": 0.9823,
                "fifa_overall": 81.0
              },
              "params": {
                "match_squad_rank": 6,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 982,
                "fifa_rank": 517.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": {
                "key_pass": 0.9244,
                "expected_assists": 0.1168,
                "assist_rate": 0.0775,
                "assists": 0,
                "expected_goals": 0.064,
                "goal_rate": 0.0494,
                "goals": 0,
                "shots_on_target": 0.1849,
                "total_shots": 0.6445,
                "rating": 6.8197,
                "minutes": 78.32,
                "total_pass": 31.9847,
                "accurate_pass": 26.531,
                "duels_won": 3.1684,
                "total_long_balls": 5.0318,
                "accurate_long_balls": 2.5851,
                "total_own_half_passes": 14.6329,
                "accurate_own_half_passes": 13.0357,
                "total_opp_half_passes": 17.3518,
                "accurate_opp_half_passes": 13.4952,
                "crosses_total": 2.629,
                "crosses_accurate": 0.7027,
                "touches": 45.3193,
                "possession_lost": 9.9978,
                "dispossessed": 0.8191,
                "duels_lost": 3.6335,
                "aerial_won": 1.1,
                "aerial_lost": 0.8626,
                "interceptions": 0.7966,
                "tackles_won": 1.226,
                "tackles": 2.0254,
                "clearances": 1.0501,
                "total_contest": 0.205,
                "won_contest": 0.1617,
                "challenges_lost": 0.8016,
                "fouls": 1.1194,
                "fouls_drawn": 0.3812,
                "blocks": 0.0671,
                "big_chances_created": 0.0497,
                "big_chances_missed": 0.013,
                "xgot": 0.0307,
                "ball_carries": 8.276,
                "total_progression": 16.3274,
                "progressive_carries": 0.4418,
                "shots_off_target": 0.4596,
                "duel_xg_multiplier": 1.0296,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.47,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.062,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0608,
                "creation_factor": 0.9823,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.062,
                "goal_rate": 0.0494,
                "scorer_weight": 0.0679,
                "squad_weight_total": 1.3652,
                "weight_share": 0.0497,
                "finishing_factor": 1.0608,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.9244,
                "expected_assists": 0.1168,
                "assist_rate": 0.0775,
                "assists": 0,
                "expected_goals": 0.064,
                "goal_rate": 0.0494,
                "goals": 0,
                "shots_on_target": 0.1849,
                "total_shots": 0.6445,
                "rating": 6.8197,
                "minutes": 78.32,
                "total_pass": 31.9847,
                "accurate_pass": 26.531,
                "duels_won": 3.1684,
                "total_long_balls": 5.0318,
                "accurate_long_balls": 2.5851,
                "total_own_half_passes": 14.6329,
                "accurate_own_half_passes": 13.0357,
                "total_opp_half_passes": 17.3518,
                "accurate_opp_half_passes": 13.4952,
                "crosses_total": 2.629,
                "crosses_accurate": 0.7027,
                "touches": 45.3193,
                "possession_lost": 9.9978,
                "dispossessed": 0.8191,
                "duels_lost": 3.6335,
                "aerial_won": 1.1,
                "aerial_lost": 0.8626,
                "interceptions": 0.7966,
                "tackles_won": 1.226,
                "tackles": 2.0254,
                "clearances": 1.0501,
                "total_contest": 0.205,
                "won_contest": 0.1617,
                "challenges_lost": 0.8016,
                "fouls": 1.1194,
                "fouls_drawn": 0.3812,
                "blocks": 0.0671,
                "big_chances_created": 0.0497,
                "big_chances_missed": 0.013,
                "xgot": 0.0307,
                "ball_carries": 8.276,
                "total_progression": 16.3274,
                "progressive_carries": 0.4418,
                "shots_off_target": 0.4596,
                "duel_xg_multiplier": 1.0296,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.47,
                "pressing_faced": "LOW",
                "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Íñigo Sáinz-Maza",
                "opponent_faced": "Íñigo Sáinz-Maza",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.062,
                "projected_assists": 0,
                "assist_probability": 0.1102,
                "finishing_factor": 1.0608,
                "creation_factor": 0.9823,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1102,
                "assist_rate": 0.0775,
                "provider_weight": 0.1147,
                "squad_weight_total": 0.9792,
                "weight_share": 0.1172,
                "creation_factor": 0.9823,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Abel Bretones": {
          "player_id": 1010165,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 23,
          "height": 188,
          "market_value": 3400000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.6269,
            "minutes": 88,
            "total_pass": 28,
            "accurate_pass": 23,
            "duels_won": 4,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 13,
            "accurate_own_half_passes": 11,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 12,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 51,
            "possession_lost": 11.6409,
            "dispossessed": 0.5926,
            "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.0104,
            "goals": 0,
            "assist_rate": 0.0484,
            "assists": 0,
            "expected_goals": 0.0234,
            "expected_assists": 0.1132,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0132,
            "ball_carries": 13,
            "total_progression": 55,
            "progressive_carries": 2,
            "key_pass": 0,
            "shots_off_target": 0,
            "opponent_faced": "Iñigo Vicente",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0231,
            "projected_assists": 0,
            "assist_probability": 0.107,
            "finishing_factor": 0.9152,
            "creation_factor": 0.8,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16421054,
              "match_date": "2026-10-11",
              "home_team": "Real Betis",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2915,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 34,
                "key_pass": 1,
                "interceptions": 2,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416305,
              "match_date": "2026-09-19",
              "home_team": "Osasuna",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 34,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.005,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 10,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416335,
              "match_date": "2026-09-16",
              "home_team": "Atlético Madrid",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 5.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.002,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 11,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 45,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2636,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 33,
                "key_pass": 1,
                "tackles": 1,
                "tackles_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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 4.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0202,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 23,
                "tackles": 3,
                "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": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0095,
                "expected_assists": 0.0027,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 13,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0241,
                "expected_assists": 0.0284,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 45,
                "accurate_pass": 41,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 3,
                "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": 16416296,
              "match_date": "2026-08-24",
              "home_team": "Osasuna",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0637,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 24,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 4,
                "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": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 67,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0691,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 27,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083634,
              "match_date": "2026-05-12",
              "home_team": "Osasuna",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 30,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0787,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 13,
                "key_pass": 2,
                "clearances": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 3302,
            "combined_rank_score": 1257.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 530.0,
            "sofascore_rating": 6.8333,
            "sofascore_appearances": 3.0,
            "fifa_rank": 1985.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6269,
            "source_file": "data/player_rankings.csv",
            "player_name": "Abel Bretones",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ibrahim Mbaye",
                  "ranking": 3297
                },
                {
                  "player_name": "Unai Núñez",
                  "ranking": 3298
                },
                {
                  "player_name": "Rodrigo Muniz",
                  "ranking": 3299
                },
                {
                  "player_name": "Raíllo",
                  "ranking": 3300
                },
                {
                  "player_name": "Gelson Martins",
                  "ranking": 3301
                }
              ],
              "lower": [
                {
                  "player_name": "Chiquinho",
                  "ranking": 3303
                },
                {
                  "player_name": "Kaiki",
                  "ranking": 3304
                },
                {
                  "player_name": "Mouctar Diakhaby",
                  "ranking": 3305
                },
                {
                  "player_name": "Diego Carlos",
                  "ranking": 3306
                },
                {
                  "player_name": "André Onana",
                  "ranking": 3307
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "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.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9977,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "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 36 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Osasuna, 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": 0.9661,
                "tackles": 1.8303,
                "tackles_won": 1.1445,
                "clearances": 2.1031,
                "aerial_won": 0.6986,
                "total_shots": 0.3901,
                "rating": 6.6269,
                "minutes": 88.44,
                "total_pass": 28.3334,
                "accurate_pass": 23.0984,
                "duels_won": 3.8858,
                "total_long_balls": 4.3466,
                "accurate_long_balls": 1.5925,
                "total_own_half_passes": 12.5368,
                "accurate_own_half_passes": 10.7552,
                "total_opp_half_passes": 15.7966,
                "accurate_opp_half_passes": 12.3432,
                "crosses_total": 1.8751,
                "crosses_accurate": 0.5143,
                "touches": 50.6311,
                "possession_lost": 11.6677,
                "dispossessed": 0.594,
                "duels_lost": 4.3307,
                "aerial_lost": 0.7764,
                "total_contest": 1.8704,
                "won_contest": 0.7349,
                "ball_recovery": 4.3051,
                "challenges_lost": 0.7555,
                "fouls": 1.1375,
                "fouls_drawn": 0.8352,
                "blocks": 0.1863,
                "goals": 0.0106,
                "goal_rate": 0.0106,
                "assists": 0.0493,
                "assist_rate": 0.0493,
                "expected_goals": 0.016,
                "expected_assists": 0.0775,
                "shots_on_target": 0.0306,
                "big_chances_created": 0.1179,
                "xgot": 0.009,
                "ball_carries": 12.9118,
                "total_progression": 54.9047,
                "progressive_carries": 1.6631,
                "key_pass": 0.4182,
                "shots_off_target": 0.3595
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:05:00.533351+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1504,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Rayo Vallecano",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.1279,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1087,
                    "rating": 5.0
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Espanyol",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0924,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0785,
                    "rating": 4.8
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0667,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0567,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0482,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Espanyol",
                    "minutes": 67.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Atlético Madrid",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 1.4386,
                  "aerialWon": 0.5362,
                  "totalClearance_p90": 2.2858,
                  "totalTackle": 1.0956,
                  "defensive_actions": 1.8224
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.9661214351654053,
                    "model_output": 0.9661,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1123
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.043
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.034
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0212
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0205
                        }
                      ],
                      "others": 0.0256,
                      "total": 0.9661,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.122666
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.043279
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.033988
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.021816
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.021559
                        }
                      ],
                      "others_margin": 0.026759
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.830297827720642,
                    "model_output": 1.8303,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1876
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.054
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0545
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0552
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0471
                        }
                      ],
                      "others": 0.0404,
                      "total": 1.8303,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.126494
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.033609
                        },
                        {
                          "name": "rating",
                          "margin": 0.032841
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.032182
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.026685
                        }
                      ],
                      "others_margin": 0.022282
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.1445095539093018,
                    "model_output": 1.1445,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1109
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0463
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0332
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.031
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0298
                        }
                      ],
                      "others": 0.1937,
                      "total": 1.1445,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.122103
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.04911
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.035523
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.033156
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.031856
                        }
                      ],
                      "others_margin": 0.18539
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.103065013885498,
                    "model_output": 2.1031,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": -0.7528
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3432
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.2943
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2536
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1043
                        }
                      ],
                      "others": -0.2678,
                      "total": 2.1031,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.247583
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.120515
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.102404
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.097523
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.04304
                        }
                      ],
                      "others_margin": -0.119926
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.6985512971878052,
                    "model_output": 0.6986,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.4365
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.1027
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0914
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0904
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0684
                        }
                      ],
                      "others": -0.2069,
                      "total": 0.6986,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.381109
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.115569
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.115528
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.11432
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.07855
                        }
                      ],
                      "others_margin": -0.259546
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.39009782671928406,
                    "model_output": 0.3901,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1221
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0498
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.035
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0344
                        },
                        {
                          "name": "duelWon",
                          "contribution": -0.0077
                        }
                      ],
                      "others": -0.005,
                      "total": 0.3901,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.122061
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.049845
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.035001
                        },
                        {
                          "name": "rating",
                          "margin": -0.034429
                        },
                        {
                          "name": "duelWon",
                          "margin": -0.00772
                        }
                      ],
                      "others_margin": -0.005039
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.626925945281982,
                    "model_output": 6.6269,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0425
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0243
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0171
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0154
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0107
                        }
                      ],
                      "others": -0.0478,
                      "total": 6.6269,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.042452
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.024324
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.017121
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.015443
                        },
                        {
                          "name": "rating",
                          "margin": -0.010736
                        }
                      ],
                      "others_margin": -0.047702
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 36,
                  "role_matches": 23,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9977, quality 0.442)",
              "stats": {
                "interceptions": 0.9639,
                "tackles": 1.8261,
                "tackles_won": 1.1419,
                "clearances": 2.0982,
                "aerial_won": 0.6969,
                "total_shots": 0.3892,
                "rating": 6.6269,
                "minutes": 88.44,
                "total_pass": 28.2682,
                "accurate_pass": 23.0453,
                "duels_won": 3.8769,
                "total_long_balls": 4.3366,
                "accurate_long_balls": 1.5888,
                "total_own_half_passes": 12.508,
                "accurate_own_half_passes": 10.7305,
                "total_opp_half_passes": 15.7603,
                "accurate_opp_half_passes": 12.3148,
                "crosses_total": 1.8708,
                "crosses_accurate": 0.5131,
                "touches": 50.5146,
                "possession_lost": 11.6409,
                "dispossessed": 0.5926,
                "duels_lost": 4.3207,
                "aerial_lost": 0.7746,
                "total_contest": 1.8661,
                "won_contest": 0.7332,
                "ball_recovery": 4.2952,
                "challenges_lost": 0.7538,
                "fouls": 1.1349,
                "fouls_drawn": 0.8333,
                "blocks": 0.1859,
                "goals": 0.0106,
                "goal_rate": 0.0106,
                "assists": 0.0492,
                "assist_rate": 0.0492,
                "expected_goals": 0.016,
                "expected_assists": 0.0773,
                "shots_on_target": 0.0305,
                "big_chances_created": 0.1176,
                "xgot": 0.009,
                "ball_carries": 12.8821,
                "total_progression": 54.7784,
                "progressive_carries": 1.6593,
                "key_pass": 0.4172,
                "shots_off_target": 0.3587
              },
              "params": {
                "market_value_eur": 3400000,
                "quality_factor": 0.4424,
                "boost_factor": 0.9977,
                "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.0159)",
              "stats": {
                "interceptions": 0.9642,
                "tackles": 1.8261,
                "tackles_won": 1.155,
                "clearances": 2.0982,
                "aerial_won": 0.6969,
                "total_shots": 0.3935,
                "rating": 6.6269,
                "minutes": 88.44,
                "total_pass": 28.2682,
                "accurate_pass": 23.0453,
                "duels_won": 3.8769,
                "total_long_balls": 4.3366,
                "accurate_long_balls": 1.5888,
                "total_own_half_passes": 12.508,
                "accurate_own_half_passes": 10.7305,
                "total_opp_half_passes": 15.7603,
                "accurate_opp_half_passes": 12.3148,
                "crosses_total": 1.8671,
                "crosses_accurate": 0.5131,
                "touches": 50.5146,
                "possession_lost": 11.6409,
                "dispossessed": 0.5926,
                "duels_lost": 4.3207,
                "aerial_lost": 0.7746,
                "total_contest": 1.8661,
                "won_contest": 0.7332,
                "ball_recovery": 4.2952,
                "challenges_lost": 0.7538,
                "fouls": 1.1429,
                "fouls_drawn": 0.8253,
                "blocks": 0.1859,
                "goals": 0.0104,
                "goal_rate": 0.0104,
                "assists": 0.0484,
                "assist_rate": 0.0484,
                "expected_goals": 0.016,
                "expected_assists": 0.0773,
                "shots_on_target": 0.03,
                "big_chances_created": 0.1176,
                "xgot": 0.009,
                "ball_carries": 12.8821,
                "total_progression": 54.7784,
                "progressive_carries": 1.6593,
                "key_pass": 0.4172,
                "shots_off_target": 0.3587
              },
              "params": {
                "blend_weight": 0.0159,
                "history_matches": 36,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9827,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Osasuna"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 1.1419,
                  "after": 1.155
                },
                {
                  "stat": "fouls",
                  "before": 1.1349,
                  "after": 1.1429
                },
                {
                  "stat": "wasFouled",
                  "before": 0.8333,
                  "after": 0.8253
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.9642,
                "tackles": 1.8261,
                "tackles_won": 1.155,
                "clearances": 2.0982,
                "aerial_won": 0.6969,
                "total_shots": 0.3935,
                "rating": 6.6269,
                "minutes": 88.44,
                "total_pass": 28.2682,
                "accurate_pass": 23.0453,
                "duels_won": 3.8769,
                "total_long_balls": 4.3366,
                "accurate_long_balls": 1.5888,
                "total_own_half_passes": 12.508,
                "accurate_own_half_passes": 10.7305,
                "total_opp_half_passes": 15.7603,
                "accurate_opp_half_passes": 12.3148,
                "crosses_total": 1.8671,
                "crosses_accurate": 0.5131,
                "touches": 50.5146,
                "possession_lost": 11.6409,
                "dispossessed": 0.5926,
                "duels_lost": 4.3207,
                "aerial_lost": 0.7746,
                "total_contest": 1.8661,
                "won_contest": 0.7332,
                "ball_recovery": 4.2952,
                "challenges_lost": 0.7538,
                "fouls": 1.1429,
                "fouls_drawn": 0.8253,
                "blocks": 0.1859,
                "goals": 0.0104,
                "goal_rate": 0.0104,
                "assists": 0.0484,
                "assist_rate": 0.0484,
                "expected_goals": 0.016,
                "expected_assists": 0.0773,
                "shots_on_target": 0.03,
                "big_chances_created": 0.1176,
                "xgot": 0.009,
                "ball_carries": 12.8821,
                "total_progression": 54.7784,
                "progressive_carries": 1.6593,
                "key_pass": 0.4172,
                "shots_off_target": 0.3587
              },
              "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.9642,
                "tackles": 1.8261,
                "tackles_won": 1.155,
                "clearances": 2.0982,
                "aerial_won": 0.6969,
                "total_shots": 0.3935,
                "rating": 6.6269,
                "minutes": 88.44,
                "total_pass": 28.2682,
                "accurate_pass": 23.0453,
                "duels_won": 3.8769,
                "total_long_balls": 4.3366,
                "accurate_long_balls": 1.5888,
                "total_own_half_passes": 12.508,
                "accurate_own_half_passes": 10.7305,
                "total_opp_half_passes": 15.7603,
                "accurate_opp_half_passes": 12.3148,
                "crosses_total": 1.8671,
                "crosses_accurate": 0.5131,
                "touches": 50.5146,
                "possession_lost": 11.6409,
                "dispossessed": 0.5926,
                "duels_lost": 4.3207,
                "aerial_lost": 0.7746,
                "total_contest": 1.8661,
                "won_contest": 0.7332,
                "ball_recovery": 4.2952,
                "challenges_lost": 0.7538,
                "fouls": 1.1429,
                "fouls_drawn": 0.8253,
                "blocks": 0.1859,
                "goals": 0.0104,
                "goal_rate": 0.0104,
                "assists": 0.0484,
                "assist_rate": 0.0484,
                "expected_goals": 0.016,
                "expected_assists": 0.0773,
                "shots_on_target": 0.03,
                "big_chances_created": 0.1176,
                "xgot": 0.009,
                "ball_carries": 12.8821,
                "total_progression": 54.7784,
                "progressive_carries": 1.6593,
                "key_pass": 0.4172,
                "shots_off_target": 0.3587,
                "opponent_faced": "Iñigo Vicente",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Iñigo Vicente",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.9642,
                "tackles": 1.8261,
                "tackles_won": 1.155,
                "clearances": 2.0982,
                "aerial_won": 0.6969,
                "total_shots": 0.3935,
                "rating": 6.6269,
                "minutes": 88.44,
                "total_pass": 28.2682,
                "accurate_pass": 23.0453,
                "duels_won": 3.8769,
                "total_long_balls": 4.3366,
                "accurate_long_balls": 1.5888,
                "total_own_half_passes": 12.508,
                "accurate_own_half_passes": 10.7305,
                "total_opp_half_passes": 15.7603,
                "accurate_opp_half_passes": 12.3148,
                "crosses_total": 1.8671,
                "crosses_accurate": 0.5131,
                "touches": 50.5146,
                "possession_lost": 11.6409,
                "dispossessed": 0.5926,
                "duels_lost": 4.3207,
                "aerial_lost": 0.7746,
                "total_contest": 1.8661,
                "won_contest": 0.7332,
                "ball_recovery": 4.2952,
                "challenges_lost": 0.7538,
                "fouls": 1.1429,
                "fouls_drawn": 0.8253,
                "blocks": 0.1859,
                "goal_rate": 0.0104,
                "goals": 0,
                "assist_rate": 0.0484,
                "assists": 0,
                "expected_goals": 0.016,
                "expected_assists": 0.0773,
                "shots_on_target": 0.03,
                "big_chances_created": 0.1176,
                "xgot": 0.009,
                "ball_carries": 12.8821,
                "total_progression": 54.7784,
                "progressive_carries": 1.6593,
                "key_pass": 0.4172,
                "shots_off_target": 0.3587,
                "opponent_faced": "Iñigo Vicente",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "interceptions": 0.9642,
                "tackles": 1.8261,
                "tackles_won": 1.155,
                "clearances": 2.0982,
                "aerial_won": 0.6969,
                "total_shots": 0.3935,
                "rating": 6.6269,
                "minutes": 88.44,
                "total_pass": 28.2682,
                "accurate_pass": 23.0453,
                "duels_won": 3.8769,
                "total_long_balls": 4.3366,
                "accurate_long_balls": 1.5888,
                "total_own_half_passes": 12.508,
                "accurate_own_half_passes": 10.7305,
                "total_opp_half_passes": 15.7603,
                "accurate_opp_half_passes": 12.3148,
                "crosses_total": 1.8671,
                "crosses_accurate": 0.5131,
                "touches": 50.5146,
                "possession_lost": 11.6409,
                "dispossessed": 0.5926,
                "duels_lost": 4.3207,
                "aerial_lost": 0.7746,
                "total_contest": 1.8661,
                "won_contest": 0.7332,
                "ball_recovery": 4.2952,
                "challenges_lost": 0.7538,
                "fouls": 1.1429,
                "fouls_drawn": 0.8253,
                "blocks": 0.1859,
                "goal_rate": 0.0104,
                "goals": 0,
                "assist_rate": 0.0484,
                "assists": 0,
                "expected_goals": 0.0234,
                "expected_assists": 0.1132,
                "shots_on_target": 0.03,
                "big_chances_created": 0.1176,
                "xgot": 0.0132,
                "ball_carries": 12.8821,
                "total_progression": 54.7784,
                "progressive_carries": 1.6593,
                "key_pass": 0.4172,
                "shots_off_target": 0.3587,
                "opponent_faced": "Iñigo Vicente",
                "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.9152,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.016,
                  "after": 0.0234
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0773,
                  "after": 0.1132
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 76.0)",
              "stats": {
                "interceptions": 0.9642,
                "tackles": 1.8261,
                "tackles_won": 1.155,
                "clearances": 2.0982,
                "aerial_won": 0.6969,
                "total_shots": 0.3935,
                "rating": 6.6269,
                "minutes": 88.44,
                "total_pass": 28.2682,
                "accurate_pass": 23.0453,
                "duels_won": 3.8769,
                "total_long_balls": 4.3366,
                "accurate_long_balls": 1.5888,
                "total_own_half_passes": 12.508,
                "accurate_own_half_passes": 10.7305,
                "total_opp_half_passes": 15.7603,
                "accurate_opp_half_passes": 12.3148,
                "crosses_total": 1.8671,
                "crosses_accurate": 0.5131,
                "touches": 50.5146,
                "possession_lost": 11.6409,
                "dispossessed": 0.5926,
                "duels_lost": 4.3207,
                "aerial_lost": 0.7746,
                "total_contest": 1.8661,
                "won_contest": 0.7332,
                "ball_recovery": 4.2952,
                "challenges_lost": 0.7538,
                "fouls": 1.1429,
                "fouls_drawn": 0.8253,
                "blocks": 0.1859,
                "goal_rate": 0.0104,
                "goals": 0,
                "assist_rate": 0.0484,
                "assists": 0,
                "expected_goals": 0.0234,
                "expected_assists": 0.1132,
                "shots_on_target": 0.03,
                "big_chances_created": 0.1176,
                "xgot": 0.0132,
                "ball_carries": 12.8821,
                "total_progression": 54.7784,
                "progressive_carries": 1.6593,
                "key_pass": 0.4172,
                "shots_off_target": 0.3587,
                "opponent_faced": "Iñigo Vicente",
                "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.9152,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3302,
                "fifa_rank": 1985.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 0.9642,
                "tackles": 1.8261,
                "tackles_won": 1.155,
                "clearances": 2.0982,
                "aerial_won": 0.6969,
                "total_shots": 0.3935,
                "rating": 6.6269,
                "minutes": 88.44,
                "total_pass": 28.2682,
                "accurate_pass": 23.0453,
                "duels_won": 3.8769,
                "total_long_balls": 4.3366,
                "accurate_long_balls": 1.5888,
                "total_own_half_passes": 12.508,
                "accurate_own_half_passes": 10.7305,
                "total_opp_half_passes": 15.7603,
                "accurate_opp_half_passes": 12.3148,
                "crosses_total": 1.8671,
                "crosses_accurate": 0.5131,
                "touches": 50.5146,
                "possession_lost": 11.6409,
                "dispossessed": 0.5926,
                "duels_lost": 4.3207,
                "aerial_lost": 0.7746,
                "total_contest": 1.8661,
                "won_contest": 0.7332,
                "ball_recovery": 4.2952,
                "challenges_lost": 0.7538,
                "fouls": 1.1429,
                "fouls_drawn": 0.8253,
                "blocks": 0.1859,
                "goal_rate": 0.0104,
                "goals": 0,
                "assist_rate": 0.0484,
                "assists": 0,
                "expected_goals": 0.0234,
                "expected_assists": 0.1132,
                "shots_on_target": 0.03,
                "big_chances_created": 0.1176,
                "xgot": 0.0132,
                "ball_carries": 12.8821,
                "total_progression": 54.7784,
                "progressive_carries": 1.6593,
                "key_pass": 0.4172,
                "shots_off_target": 0.3587,
                "opponent_faced": "Iñigo Vicente",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0231,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9152,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0231,
                "goal_rate": 0.0104,
                "scorer_weight": 0.0214,
                "squad_weight_total": 1.3652,
                "weight_share": 0.0157,
                "finishing_factor": 0.9152,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.9642,
                "tackles": 1.8261,
                "tackles_won": 1.155,
                "clearances": 2.0982,
                "aerial_won": 0.6969,
                "total_shots": 0.3935,
                "rating": 6.6269,
                "minutes": 88.44,
                "total_pass": 28.2682,
                "accurate_pass": 23.0453,
                "duels_won": 3.8769,
                "total_long_balls": 4.3366,
                "accurate_long_balls": 1.5888,
                "total_own_half_passes": 12.508,
                "accurate_own_half_passes": 10.7305,
                "total_opp_half_passes": 15.7603,
                "accurate_opp_half_passes": 12.3148,
                "crosses_total": 1.8671,
                "crosses_accurate": 0.5131,
                "touches": 50.5146,
                "possession_lost": 11.6409,
                "dispossessed": 0.5926,
                "duels_lost": 4.3207,
                "aerial_lost": 0.7746,
                "total_contest": 1.8661,
                "won_contest": 0.7332,
                "ball_recovery": 4.2952,
                "challenges_lost": 0.7538,
                "fouls": 1.1429,
                "fouls_drawn": 0.8253,
                "blocks": 0.1859,
                "goal_rate": 0.0104,
                "goals": 0,
                "assist_rate": 0.0484,
                "assists": 0,
                "expected_goals": 0.0234,
                "expected_assists": 0.1132,
                "shots_on_target": 0.03,
                "big_chances_created": 0.1176,
                "xgot": 0.0132,
                "ball_carries": 12.8821,
                "total_progression": 54.7784,
                "progressive_carries": 1.6593,
                "key_pass": 0.4172,
                "shots_off_target": 0.3587,
                "opponent_faced": "Iñigo Vicente",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0231,
                "projected_assists": 0,
                "assist_probability": 0.107,
                "finishing_factor": 0.9152,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.107,
                "assist_rate": 0.0484,
                "provider_weight": 0.0906,
                "squad_weight_total": 0.9792,
                "weight_share": 0.0925,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Enzo Boyomo": {
          "player_id": 1067582,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 22,
          "height": 181,
          "market_value": 14600000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 2,
            "total_shots": 0,
            "rating": 6.7598,
            "minutes": 85,
            "total_pass": 45,
            "accurate_pass": 41,
            "duels_won": 3,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 30,
            "accurate_own_half_passes": 29,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 12,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 56,
            "possession_lost": 5.2739,
            "dispossessed": 0.2576,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0096,
            "goals": 0,
            "assist_rate": 0.0927,
            "assists": 0,
            "expected_goals": 0.0536,
            "expected_assists": 0.017,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0351,
            "ball_carries": 15,
            "total_progression": 40,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.9,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.77,
            "opponent_faced": "Yassir Zabiri",
            "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.0522,
            "projected_assists": 0,
            "assist_probability": 0.0169,
            "finishing_factor": 0.8,
            "creation_factor": 1.25,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16416335,
              "match_date": "2026-09-16",
              "home_team": "Atlético Madrid",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0041,
                "total_shots": 0,
                "total_pass": 48,
                "accurate_pass": 43,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 7,
                "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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 60,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0033,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 26,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 51,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 8,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 3,
                "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": 14083723,
              "match_date": "2026-05-23",
              "home_team": "Getafe",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0035,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 16,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 9,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.2174,
                "expected_assists": 0.0095,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 73,
                "accurate_pass": 67,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 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"
            },
            {
              "match_id": 14083634,
              "match_date": "2026-05-12",
              "home_team": "Osasuna",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0211,
                "total_shots": 0,
                "total_pass": 53,
                "accurate_pass": 50,
                "clearances": 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": 14083568,
              "match_date": "2026-05-08",
              "home_team": "Levante UD",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.007,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 26,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 7,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083495,
              "match_date": "2026-05-02",
              "home_team": "Osasuna",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0183,
                "expected_assists": 0.0013,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 28,
                "accurate_pass": 22,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083231,
              "match_date": "2026-04-26",
              "home_team": "Osasuna",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0638,
                "total_shots": 0,
                "total_pass": 75,
                "accurate_pass": 73,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083258,
              "match_date": "2026-04-21",
              "home_team": "Athletic Club",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1131,
                "expected_assists": 0.0086,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 97,
                "accurate_pass": 88,
                "clearances": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 1828,
            "combined_rank_score": 705.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 966.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7598,
            "source_file": "data/player_rankings.csv",
            "player_name": "Enzo Boyomo",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Benjamin André",
                  "ranking": 1823
                },
                {
                  "player_name": "Konstantinos Mavropanos",
                  "ranking": 1824
                },
                {
                  "player_name": "Nicolás Tagliafico",
                  "ranking": 1825
                },
                {
                  "player_name": "Joaquín Soto",
                  "ranking": 1826
                },
                {
                  "player_name": "Jeon Seong-jin",
                  "ranking": 1827
                }
              ],
              "lower": [
                {
                  "player_name": "Yasin Ayari",
                  "ranking": 1829
                },
                {
                  "player_name": "Fernando Ovelar",
                  "ranking": 1830
                },
                {
                  "player_name": "Diego Sanhueza",
                  "ranking": 1831
                },
                {
                  "player_name": "Aaron Astudillo",
                  "ranking": 1832
                },
                {
                  "player_name": "Valentin Rongier",
                  "ranking": 1833
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.756,
          "history_matches": 33,
          "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": 33,
            "data_confidence": 0.756,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0028,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 0.0,
              "minutes": 52.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.04
            },
            "rationale": "XGBoost regressor (D_service) evaluated 33 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Osasuna, rel: 0.04, 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.9067,
                "tackles": 1.4435,
                "tackles_won": 0.8888,
                "clearances": 5.0979,
                "aerial_won": 1.6582,
                "total_shots": 0.4474,
                "rating": 6.7598,
                "minutes": 85.04,
                "total_pass": 45.1653,
                "accurate_pass": 40.9745,
                "duels_won": 2.6297,
                "total_long_balls": 4.1386,
                "accurate_long_balls": 2.2675,
                "total_own_half_passes": 29.6323,
                "accurate_own_half_passes": 28.6683,
                "total_opp_half_passes": 15.533,
                "accurate_opp_half_passes": 12.3062,
                "crosses_total": 0.1864,
                "crosses_accurate": 0.0047,
                "touches": 56.2189,
                "possession_lost": 5.2592,
                "dispossessed": 0.2569,
                "duels_lost": 2.8916,
                "aerial_lost": 1.2365,
                "total_contest": 0.2445,
                "won_contest": 0.1392,
                "ball_recovery": 3.3925,
                "challenges_lost": 0.1449,
                "fouls": 1.1781,
                "fouls_drawn": 0.1021,
                "blocks": 0.4138,
                "goals": 0.0096,
                "goal_rate": 0.0096,
                "assists": 0.0927,
                "assist_rate": 0.0927,
                "expected_goals": 0.0365,
                "expected_assists": 0.0116,
                "shots_on_target": 0.1731,
                "big_chances_created": 0.0016,
                "xgot": 0.0239,
                "ball_carries": 14.8015,
                "total_progression": 39.8215,
                "progressive_carries": 0.4031,
                "key_pass": 0.3091,
                "shots_off_target": 0.2743
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:05:00.533351+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-16",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1507,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Deportivo Alavés",
                    "minutes": 60.0,
                    "is_starting": true,
                    "weight": 0.1281,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 51.0,
                    "is_starting": false,
                    "weight": 0.1089,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0926,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Espanyol",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0787,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0669,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-08",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0483,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 4.5699,
                  "aerialWon": 0.8142,
                  "totalClearance_p90": 5.2285,
                  "totalTackle": 1.5993,
                  "defensive_actions": 2.1812
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.9066658020019531,
                    "model_output": 0.9067,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1131
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0872
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0267
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0201
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0158
                        }
                      ],
                      "others": 0.0107,
                      "total": 0.9067,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.12341
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.093842
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.030608
                        },
                        {
                          "name": "touches",
                          "margin": 0.023064
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.017828
                        }
                      ],
                      "others_margin": 0.011975
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.4435434341430664,
                    "model_output": 1.4435,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1803
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0923
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0594
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.059
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0408
                        }
                      ],
                      "others": -0.1136,
                      "total": 1.4435,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.121833
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.060507
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.039348
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.037645
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.025864
                        }
                      ],
                      "others_margin": -0.075741
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.8888238072395325,
                    "model_output": 0.8888,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1202
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0594
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0563
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0515
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0344
                        }
                      ],
                      "others": -0.0716,
                      "total": 0.8888,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.131643
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.059144
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.056001
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.054116
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.036438
                        }
                      ],
                      "others_margin": -0.077335
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 5.097858905792236,
                    "model_output": 5.0979,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4504
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.4743
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.4163
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2427
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.183
                        }
                      ],
                      "others": -0.1015,
                      "total": 5.0979,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.123295
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.115233
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.091254
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.049582
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.035839
                        }
                      ],
                      "others_margin": -0.019739
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.6582411527633667,
                    "model_output": 1.6582,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.2312
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1744
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.128
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.1262
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0667
                        }
                      ],
                      "others": 0.0168,
                      "total": 1.6582,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.183777
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.141642
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.092532
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.083558
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.041475
                        }
                      ],
                      "others_margin": 0.010192
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.4474015533924103,
                    "model_output": 0.4474,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0561
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0236
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0171
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0149
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0098
                        }
                      ],
                      "others": -0.052,
                      "total": 0.4474,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.056118
                        },
                        {
                          "name": "rating",
                          "margin": -0.023553
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.017148
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.014943
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.009829
                        }
                      ],
                      "others_margin": -0.05204
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.759755611419678,
                    "model_output": 6.7598,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": -0.0168
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.013
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.011
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0105
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0083
                        }
                      ],
                      "others": -0.0029,
                      "total": 6.7598,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.016774
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013011
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.010969
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.010503
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.008257
                        }
                      ],
                      "others_margin": -0.002953
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 33,
                  "role_matches": 31,
                  "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.0028, quality 0.575)",
              "stats": {
                "interceptions": 0.9092,
                "tackles": 1.4476,
                "tackles_won": 0.8913,
                "clearances": 5.1121,
                "aerial_won": 1.6629,
                "total_shots": 0.4487,
                "rating": 6.7598,
                "minutes": 85.04,
                "total_pass": 45.2918,
                "accurate_pass": 41.0892,
                "duels_won": 2.6371,
                "total_long_balls": 4.1502,
                "accurate_long_balls": 2.2738,
                "total_own_half_passes": 29.7153,
                "accurate_own_half_passes": 28.7486,
                "total_opp_half_passes": 15.5765,
                "accurate_opp_half_passes": 12.3407,
                "crosses_total": 0.1869,
                "crosses_accurate": 0.0047,
                "touches": 56.3763,
                "possession_lost": 5.2739,
                "dispossessed": 0.2576,
                "duels_lost": 2.8997,
                "aerial_lost": 1.24,
                "total_contest": 0.2452,
                "won_contest": 0.1396,
                "ball_recovery": 3.402,
                "challenges_lost": 0.1453,
                "fouls": 1.1814,
                "fouls_drawn": 0.1024,
                "blocks": 0.415,
                "goals": 0.0096,
                "goal_rate": 0.0096,
                "assists": 0.093,
                "assist_rate": 0.093,
                "expected_goals": 0.0366,
                "expected_assists": 0.0116,
                "shots_on_target": 0.1736,
                "big_chances_created": 0.0016,
                "xgot": 0.024,
                "ball_carries": 14.8429,
                "total_progression": 39.933,
                "progressive_carries": 0.4042,
                "key_pass": 0.31,
                "shots_off_target": 0.2751
              },
              "params": {
                "market_value_eur": 14600000,
                "quality_factor": 0.5748,
                "boost_factor": 1.0028,
                "reference_quality": 0.505,
                "history_matches": 33,
                "history_shrink": 0.1316,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0034)",
              "stats": {
                "interceptions": 0.9061,
                "tackles": 1.4476,
                "tackles_won": 0.899,
                "clearances": 5.1121,
                "aerial_won": 1.6629,
                "total_shots": 0.4472,
                "rating": 6.7598,
                "minutes": 85.04,
                "total_pass": 45.2918,
                "accurate_pass": 41.0892,
                "duels_won": 2.6371,
                "total_long_balls": 4.1502,
                "accurate_long_balls": 2.2738,
                "total_own_half_passes": 29.7153,
                "accurate_own_half_passes": 28.7486,
                "total_opp_half_passes": 15.5765,
                "accurate_opp_half_passes": 12.3407,
                "crosses_total": 0.1863,
                "crosses_accurate": 0.0047,
                "touches": 56.3763,
                "possession_lost": 5.2739,
                "dispossessed": 0.2576,
                "duels_lost": 2.8997,
                "aerial_lost": 1.24,
                "total_contest": 0.2452,
                "won_contest": 0.1396,
                "ball_recovery": 3.402,
                "challenges_lost": 0.1453,
                "fouls": 1.1881,
                "fouls_drawn": 0.1074,
                "blocks": 0.415,
                "goals": 0.0096,
                "goal_rate": 0.0096,
                "assists": 0.0927,
                "assist_rate": 0.0927,
                "expected_goals": 0.0366,
                "expected_assists": 0.0116,
                "shots_on_target": 0.173,
                "big_chances_created": 0.0016,
                "xgot": 0.024,
                "ball_carries": 14.8429,
                "total_progression": 39.933,
                "progressive_carries": 0.4042,
                "key_pass": 0.31,
                "shots_off_target": 0.2751
              },
              "params": {
                "blend_weight": 0.0034,
                "history_matches": 33,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9449,
                "prior_reliability": 0.04,
                "competition": "La Liga",
                "squad": "Osasuna"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 0.8913,
                  "after": 0.899
                },
                {
                  "stat": "fouls",
                  "before": 1.1814,
                  "after": 1.1881
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.9061,
                "tackles": 1.4476,
                "tackles_won": 0.899,
                "clearances": 5.1121,
                "aerial_won": 1.6629,
                "total_shots": 0.4481,
                "rating": 6.7598,
                "minutes": 85.04,
                "total_pass": 45.2918,
                "accurate_pass": 41.0892,
                "duels_won": 2.6371,
                "total_long_balls": 4.1502,
                "accurate_long_balls": 2.2738,
                "total_own_half_passes": 29.7153,
                "accurate_own_half_passes": 28.7486,
                "total_opp_half_passes": 15.5765,
                "accurate_opp_half_passes": 12.3407,
                "crosses_total": 0.1863,
                "crosses_accurate": 0.0047,
                "touches": 56.3763,
                "possession_lost": 5.2739,
                "dispossessed": 0.2576,
                "duels_lost": 2.8997,
                "aerial_lost": 1.24,
                "total_contest": 0.2452,
                "won_contest": 0.1396,
                "ball_recovery": 3.402,
                "challenges_lost": 0.1453,
                "fouls": 1.1881,
                "fouls_drawn": 0.1074,
                "blocks": 0.415,
                "goals": 0.0096,
                "goal_rate": 0.0096,
                "assists": 0.0927,
                "assist_rate": 0.0927,
                "expected_goals": 0.0366,
                "expected_assists": 0.0116,
                "shots_on_target": 0.173,
                "big_chances_created": 0.0016,
                "xgot": 0.024,
                "ball_carries": 14.8429,
                "total_progression": 39.933,
                "progressive_carries": 0.4042,
                "key_pass": 0.31,
                "shots_off_target": 0.2751
              },
              "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.9061,
                "tackles": 1.4476,
                "tackles_won": 0.899,
                "clearances": 5.1121,
                "aerial_won": 1.6629,
                "total_shots": 0.4481,
                "rating": 6.7598,
                "minutes": 85.04,
                "total_pass": 45.2918,
                "accurate_pass": 41.0892,
                "duels_won": 2.6371,
                "total_long_balls": 4.1502,
                "accurate_long_balls": 2.2738,
                "total_own_half_passes": 29.7153,
                "accurate_own_half_passes": 28.7486,
                "total_opp_half_passes": 15.5765,
                "accurate_opp_half_passes": 12.3407,
                "crosses_total": 0.1863,
                "crosses_accurate": 0.0047,
                "touches": 56.3763,
                "possession_lost": 5.2739,
                "dispossessed": 0.2576,
                "duels_lost": 2.8997,
                "aerial_lost": 1.24,
                "total_contest": 0.2452,
                "won_contest": 0.1396,
                "ball_recovery": 3.402,
                "challenges_lost": 0.1453,
                "fouls": 1.1881,
                "fouls_drawn": 0.1074,
                "blocks": 0.415,
                "goals": 0.0096,
                "goal_rate": 0.0096,
                "assists": 0.0927,
                "assist_rate": 0.0927,
                "expected_goals": 0.0366,
                "expected_assists": 0.0116,
                "shots_on_target": 0.173,
                "big_chances_created": 0.0016,
                "xgot": 0.024,
                "ball_carries": 14.8429,
                "total_progression": 39.933,
                "progressive_carries": 0.4042,
                "key_pass": 0.31,
                "shots_off_target": 0.2751,
                "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.7,
                "defensive_success_rate": 0.77,
                "opponent_faced": "Yassir Zabiri",
                "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": "Yassir Zabiri",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.9061,
                "tackles": 1.4476,
                "tackles_won": 0.899,
                "clearances": 5.1121,
                "aerial_won": 1.6629,
                "total_shots": 0.4481,
                "rating": 6.7598,
                "minutes": 85.04,
                "total_pass": 45.2918,
                "accurate_pass": 41.0892,
                "duels_won": 2.6371,
                "total_long_balls": 4.1502,
                "accurate_long_balls": 2.2738,
                "total_own_half_passes": 29.7153,
                "accurate_own_half_passes": 28.7486,
                "total_opp_half_passes": 15.5765,
                "accurate_opp_half_passes": 12.3407,
                "crosses_total": 0.1863,
                "crosses_accurate": 0.0047,
                "touches": 56.3763,
                "possession_lost": 5.2739,
                "dispossessed": 0.2576,
                "duels_lost": 2.8997,
                "aerial_lost": 1.24,
                "total_contest": 0.2452,
                "won_contest": 0.1396,
                "ball_recovery": 3.402,
                "challenges_lost": 0.1453,
                "fouls": 1.1881,
                "fouls_drawn": 0.1074,
                "blocks": 0.415,
                "goal_rate": 0.0096,
                "goals": 0,
                "assist_rate": 0.0927,
                "assists": 0,
                "expected_goals": 0.0366,
                "expected_assists": 0.0116,
                "shots_on_target": 0.173,
                "big_chances_created": 0.0016,
                "xgot": 0.024,
                "ball_carries": 14.8429,
                "total_progression": 39.933,
                "progressive_carries": 0.4042,
                "key_pass": 0.31,
                "shots_off_target": 0.2751,
                "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.7,
                "defensive_success_rate": 0.77,
                "opponent_faced": "Yassir Zabiri",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "interceptions": 0.9061,
                "tackles": 1.4476,
                "tackles_won": 0.899,
                "clearances": 5.1121,
                "aerial_won": 1.6629,
                "total_shots": 0.4481,
                "rating": 6.7598,
                "minutes": 85.04,
                "total_pass": 45.2918,
                "accurate_pass": 41.0892,
                "duels_won": 2.6371,
                "total_long_balls": 4.1502,
                "accurate_long_balls": 2.2738,
                "total_own_half_passes": 29.7153,
                "accurate_own_half_passes": 28.7486,
                "total_opp_half_passes": 15.5765,
                "accurate_opp_half_passes": 12.3407,
                "crosses_total": 0.1863,
                "crosses_accurate": 0.0047,
                "touches": 56.3763,
                "possession_lost": 5.2739,
                "dispossessed": 0.2576,
                "duels_lost": 2.8997,
                "aerial_lost": 1.24,
                "total_contest": 0.2452,
                "won_contest": 0.1396,
                "ball_recovery": 3.402,
                "challenges_lost": 0.1453,
                "fouls": 1.1881,
                "fouls_drawn": 0.1074,
                "blocks": 0.415,
                "goal_rate": 0.0096,
                "goals": 0,
                "assist_rate": 0.0927,
                "assists": 0,
                "expected_goals": 0.0536,
                "expected_assists": 0.017,
                "shots_on_target": 0.173,
                "big_chances_created": 0.0016,
                "xgot": 0.0351,
                "ball_carries": 14.8429,
                "total_progression": 39.933,
                "progressive_carries": 0.4042,
                "key_pass": 0.31,
                "shots_off_target": 0.2751,
                "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.7,
                "defensive_success_rate": 0.77,
                "opponent_faced": "Yassir Zabiri",
                "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.25
              },
              "params": {
                "team_lambda": 1.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0366,
                  "after": 0.0536
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0116,
                  "after": 0.017
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 10 by projected rating, fifa_overall 79.0)",
              "stats": {
                "interceptions": 0.9061,
                "tackles": 1.4476,
                "tackles_won": 0.899,
                "clearances": 5.1121,
                "aerial_won": 1.6629,
                "total_shots": 0.4481,
                "rating": 6.7598,
                "minutes": 85.04,
                "total_pass": 45.2918,
                "accurate_pass": 41.0892,
                "duels_won": 2.6371,
                "total_long_balls": 4.1502,
                "accurate_long_balls": 2.2738,
                "total_own_half_passes": 29.7153,
                "accurate_own_half_passes": 28.7486,
                "total_opp_half_passes": 15.5765,
                "accurate_opp_half_passes": 12.3407,
                "crosses_total": 0.1863,
                "crosses_accurate": 0.0047,
                "touches": 56.3763,
                "possession_lost": 5.2739,
                "dispossessed": 0.2576,
                "duels_lost": 2.8997,
                "aerial_lost": 1.24,
                "total_contest": 0.2452,
                "won_contest": 0.1396,
                "ball_recovery": 3.402,
                "challenges_lost": 0.1453,
                "fouls": 1.1881,
                "fouls_drawn": 0.1074,
                "blocks": 0.415,
                "goal_rate": 0.0096,
                "goals": 0,
                "assist_rate": 0.0927,
                "assists": 0,
                "expected_goals": 0.0536,
                "expected_assists": 0.017,
                "shots_on_target": 0.173,
                "big_chances_created": 0.0016,
                "xgot": 0.0351,
                "ball_carries": 14.8429,
                "total_progression": 39.933,
                "progressive_carries": 0.4042,
                "key_pass": 0.31,
                "shots_off_target": 0.2751,
                "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.7,
                "defensive_success_rate": 0.77,
                "opponent_faced": "Yassir Zabiri",
                "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.25,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 10,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1828,
                "fifa_rank": 966.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.9061,
                "tackles": 1.4476,
                "tackles_won": 0.899,
                "clearances": 5.1121,
                "aerial_won": 1.6629,
                "total_shots": 0.4481,
                "rating": 6.7598,
                "minutes": 85.04,
                "total_pass": 45.2918,
                "accurate_pass": 41.0892,
                "duels_won": 2.6371,
                "total_long_balls": 4.1502,
                "accurate_long_balls": 2.2738,
                "total_own_half_passes": 29.7153,
                "accurate_own_half_passes": 28.7486,
                "total_opp_half_passes": 15.5765,
                "accurate_opp_half_passes": 12.3407,
                "crosses_total": 0.1863,
                "crosses_accurate": 0.0047,
                "touches": 56.3763,
                "possession_lost": 5.2739,
                "dispossessed": 0.2576,
                "duels_lost": 2.8997,
                "aerial_lost": 1.24,
                "total_contest": 0.2452,
                "won_contest": 0.1396,
                "ball_recovery": 3.402,
                "challenges_lost": 0.1453,
                "fouls": 1.1881,
                "fouls_drawn": 0.1074,
                "blocks": 0.415,
                "goal_rate": 0.0096,
                "goals": 0,
                "assist_rate": 0.0927,
                "assists": 0,
                "expected_goals": 0.0536,
                "expected_assists": 0.017,
                "shots_on_target": 0.173,
                "big_chances_created": 0.0016,
                "xgot": 0.0351,
                "ball_carries": 14.8429,
                "total_progression": 39.933,
                "progressive_carries": 0.4042,
                "key_pass": 0.31,
                "shots_off_target": 0.2751,
                "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.7,
                "defensive_success_rate": 0.77,
                "opponent_faced": "Yassir Zabiri",
                "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.0522,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.25,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0522,
                "goal_rate": 0.0096,
                "scorer_weight": 0.0429,
                "squad_weight_total": 1.3652,
                "weight_share": 0.0314,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.9061,
                "tackles": 1.4476,
                "tackles_won": 0.899,
                "clearances": 5.1121,
                "aerial_won": 1.6629,
                "total_shots": 0.4481,
                "rating": 6.7598,
                "minutes": 85.04,
                "total_pass": 45.2918,
                "accurate_pass": 41.0892,
                "duels_won": 2.6371,
                "total_long_balls": 4.1502,
                "accurate_long_balls": 2.2738,
                "total_own_half_passes": 29.7153,
                "accurate_own_half_passes": 28.7486,
                "total_opp_half_passes": 15.5765,
                "accurate_opp_half_passes": 12.3407,
                "crosses_total": 0.1863,
                "crosses_accurate": 0.0047,
                "touches": 56.3763,
                "possession_lost": 5.2739,
                "dispossessed": 0.2576,
                "duels_lost": 2.8997,
                "aerial_lost": 1.24,
                "total_contest": 0.2452,
                "won_contest": 0.1396,
                "ball_recovery": 3.402,
                "challenges_lost": 0.1453,
                "fouls": 1.1881,
                "fouls_drawn": 0.1074,
                "blocks": 0.415,
                "goal_rate": 0.0096,
                "goals": 0,
                "assist_rate": 0.0927,
                "assists": 0,
                "expected_goals": 0.0536,
                "expected_assists": 0.017,
                "shots_on_target": 0.173,
                "big_chances_created": 0.0016,
                "xgot": 0.0351,
                "ball_carries": 14.8429,
                "total_progression": 39.933,
                "progressive_carries": 0.4042,
                "key_pass": 0.31,
                "shots_off_target": 0.2751,
                "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.7,
                "defensive_success_rate": 0.77,
                "opponent_faced": "Yassir Zabiri",
                "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.0522,
                "projected_assists": 0,
                "assist_probability": 0.0169,
                "finishing_factor": 0.8,
                "creation_factor": 1.25,
                "fifa_overall": 79.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0169,
                "assist_rate": 0.0927,
                "provider_weight": 0.0213,
                "squad_weight_total": 0.9792,
                "weight_share": 0.0217,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Alejandro Catena": {
          "player_id": 900792,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 24,
          "height": 194,
          "market_value": 2700000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 2,
            "total_shots": 0,
            "rating": 6.8857,
            "minutes": 89,
            "total_pass": 57,
            "accurate_pass": 49,
            "duels_won": 4,
            "total_long_balls": 11,
            "accurate_long_balls": 6,
            "total_own_half_passes": 33,
            "accurate_own_half_passes": 32,
            "total_opp_half_passes": 24,
            "accurate_opp_half_passes": 17,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 71,
            "possession_lost": 8.8306,
            "dispossessed": 0.2415,
            "duels_lost": 3,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0248,
            "goals": 0,
            "assist_rate": 0.1552,
            "assists": 1,
            "expected_goals": 0.0243,
            "expected_assists": 0.1917,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0269,
            "ball_carries": 22,
            "total_progression": 81,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.9,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.77,
            "opponent_faced": "Yassir Zabiri",
            "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.024,
            "projected_assists": 1,
            "assist_probability": 0.1744,
            "finishing_factor": 1.1231,
            "creation_factor": 1.1343,
            "fifa_overall": 85.0
          },
          "latest_10_games": [
            {
              "match_id": 16421054,
              "match_date": "2026-10-11",
              "home_team": "Real Betis",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.7608,
                "total_shots": 0,
                "total_pass": 62,
                "accurate_pass": 58,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 14,
                "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": 16416305,
              "match_date": "2026-09-19",
              "home_team": "Osasuna",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0243,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 27,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0137,
                "total_shots": 0,
                "total_pass": 77,
                "accurate_pass": 65,
                "tackles": 5,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 4,
                "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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 5.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0184,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 44,
                "clearances": 6,
                "aerial_won": 4,
                "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": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0095,
                "total_shots": 0,
                "total_pass": 58,
                "accurate_pass": 46,
                "tackles": 2,
                "tackles_won": 2,
                "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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0225,
                "total_shots": 0,
                "total_pass": 90,
                "accurate_pass": 83,
                "interceptions": 3,
                "clearances": 5,
                "duels_won": 1,
                "ball_recovery": 10
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416296,
              "match_date": "2026-08-24",
              "home_team": "Osasuna",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0324,
                "total_shots": 0,
                "total_pass": 59,
                "accurate_pass": 48,
                "key_pass": 1,
                "clearances": 9,
                "aerial_won": 4,
                "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": 14083723,
              "match_date": "2026-05-23",
              "home_team": "Getafe",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0058,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 15,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 8,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0178,
                "total_shots": 0,
                "total_pass": 93,
                "accurate_pass": 81,
                "key_pass": 1,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 3,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083634,
              "match_date": "2026-05-12",
              "home_team": "Osasuna",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1778,
                "expected_assists": 0.0341,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 56,
                "accurate_pass": 54,
                "key_pass": 1,
                "tackles": 2,
                "interceptions": 1,
                "clearances": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 145,
            "combined_rank_score": 147.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 132.0,
            "sofascore_rating": 7.3667,
            "sofascore_appearances": 3.0,
            "fifa_rank": 162.0,
            "fifa_overall": 85.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8857,
            "source_file": "data/player_rankings.csv",
            "player_name": "Alejandro Catena",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Sang-Min Koo",
                  "ranking": 140
                },
                {
                  "player_name": "Gianluigi Donnarumma",
                  "ranking": 141
                },
                {
                  "player_name": "Samuel Lino",
                  "ranking": 142
                },
                {
                  "player_name": "Joško Gvardiol",
                  "ranking": 143
                },
                {
                  "player_name": "Victor Osimhen",
                  "ranking": 144
                }
              ],
              "lower": [
                {
                  "player_name": "Mashkhur Mukhammadzhonov",
                  "ranking": 146
                },
                {
                  "player_name": "Esteban Kirkman",
                  "ranking": 147
                },
                {
                  "player_name": "Kipras Kazukolovas",
                  "ranking": 148
                },
                {
                  "player_name": "Fabián Mina",
                  "ranking": 149
                },
                {
                  "player_name": "Jonathan Tah",
                  "ranking": 150
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "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.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9978,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 42 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.9354,
                "tackles": 1.4478,
                "tackles_won": 0.8185,
                "clearances": 6.0963,
                "aerial_won": 2.2985,
                "total_shots": 0.4683,
                "rating": 6.8857,
                "minutes": 89.48,
                "total_pass": 57.0271,
                "accurate_pass": 49.0635,
                "duels_won": 4.3988,
                "total_long_balls": 11.1731,
                "accurate_long_balls": 5.8752,
                "total_own_half_passes": 32.8366,
                "accurate_own_half_passes": 31.8396,
                "total_opp_half_passes": 24.1905,
                "accurate_opp_half_passes": 17.2239,
                "crosses_total": 0.061,
                "crosses_accurate": 0.0566,
                "touches": 71.0071,
                "possession_lost": 8.8501,
                "dispossessed": 0.242,
                "duels_lost": 3.2648,
                "aerial_lost": 1.7446,
                "total_contest": 0.403,
                "won_contest": 0.202,
                "ball_recovery": 3.635,
                "challenges_lost": 0.1004,
                "fouls": 1.101,
                "fouls_drawn": 0.668,
                "blocks": 1.0657,
                "goals": 0.0249,
                "goal_rate": 0.0249,
                "assists": 0.1555,
                "assist_rate": 0.1555,
                "expected_goals": 0.0166,
                "expected_assists": 0.1312,
                "shots_on_target": 0.0529,
                "big_chances_created": 0.1691,
                "xgot": 0.0184,
                "ball_carries": 21.7662,
                "total_progression": 80.9177,
                "progressive_carries": 0.5301,
                "key_pass": 0.4575,
                "shots_off_target": 0.4154
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:05:00.533351+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Espanyol",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 5.3
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Espanyol",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 6.784,
                  "aerialWon": 2.1003,
                  "totalClearance_p90": 6.8274,
                  "totalTackle": 1.4289,
                  "defensive_actions": 2.0763
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.9353592991828918,
                    "model_output": 0.9354,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1002
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0832
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0294
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0267
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0189
                        }
                      ],
                      "others": 0.0413,
                      "total": 0.9354,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.110137
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.090584
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.034041
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.030956
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.021411
                        }
                      ],
                      "others_margin": 0.045104
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.4477859735488892,
                    "model_output": 1.4478,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1777
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0603
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0553
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0461
                        },
                        {
                          "name": "errorLeadToAGoal",
                          "contribution": 0.0429
                        }
                      ],
                      "others": -0.1132,
                      "total": 1.4478,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.120184
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.039185
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.035988
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.029898
                        },
                        {
                          "name": "errorLeadToAGoal",
                          "margin": 0.02788
                        }
                      ],
                      "others_margin": -0.075321
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.8185109496116638,
                    "model_output": 0.8185,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1031
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.044
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.033
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0272
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0229
                        }
                      ],
                      "others": -0.0661,
                      "total": 0.8185,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.113987
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.047077
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.036793
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.030397
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.025585
                        }
                      ],
                      "others_margin": -0.077569
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 6.096348762512207,
                    "model_output": 6.0963,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.8892
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5713
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.4513
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.3468
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.1732
                        }
                      ],
                      "others": 0.2318,
                      "total": 6.0963,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": 0.230335
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.124153
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.088217
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.062876
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.029984
                        }
                      ],
                      "others_margin": 0.038769
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.298537492752075,
                    "model_output": 2.2985,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.2886
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1904
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1949
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.1702
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.1334
                        }
                      ],
                      "others": -0.0563,
                      "total": 2.2985,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.190223
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.108207
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.099848
                        },
                        {
                          "name": "aerialLost",
                          "margin": 0.079727
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.058314
                        }
                      ],
                      "others_margin": -0.02418
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.46830153465270996,
                    "model_output": 0.4683,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1226
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0525
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0273
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0225
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0117
                        }
                      ],
                      "others": 0.0024,
                      "total": 0.4683,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.122616
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.05248
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.027326
                        },
                        {
                          "name": "rating",
                          "margin": 0.02247
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.011659
                        }
                      ],
                      "others_margin": 0.002483
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.885733127593994,
                    "model_output": 6.8857,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": 0.023
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.022
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0198
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0138
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0127
                        }
                      ],
                      "others": 0.0097,
                      "total": 6.8857,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": 0.023018
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.021994
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.019768
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.013757
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.012712
                        }
                      ],
                      "others_margin": 0.009781
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 42,
                  "role_matches": 42,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9978, quality 0.437)",
              "stats": {
                "interceptions": 0.9333,
                "tackles": 1.4446,
                "tackles_won": 0.8167,
                "clearances": 6.0829,
                "aerial_won": 2.2935,
                "total_shots": 0.4673,
                "rating": 6.8857,
                "minutes": 89.48,
                "total_pass": 56.9016,
                "accurate_pass": 48.9556,
                "duels_won": 4.3891,
                "total_long_balls": 11.1485,
                "accurate_long_balls": 5.8623,
                "total_own_half_passes": 32.7644,
                "accurate_own_half_passes": 31.7696,
                "total_opp_half_passes": 24.1373,
                "accurate_opp_half_passes": 17.186,
                "crosses_total": 0.0609,
                "crosses_accurate": 0.0565,
                "touches": 70.8509,
                "possession_lost": 8.8306,
                "dispossessed": 0.2415,
                "duels_lost": 3.2576,
                "aerial_lost": 1.7408,
                "total_contest": 0.4021,
                "won_contest": 0.2016,
                "ball_recovery": 3.627,
                "challenges_lost": 0.1002,
                "fouls": 1.0986,
                "fouls_drawn": 0.6665,
                "blocks": 1.0634,
                "goals": 0.0248,
                "goal_rate": 0.0248,
                "assists": 0.1552,
                "assist_rate": 0.1552,
                "expected_goals": 0.0166,
                "expected_assists": 0.1309,
                "shots_on_target": 0.0528,
                "big_chances_created": 0.1687,
                "xgot": 0.0184,
                "ball_carries": 21.7183,
                "total_progression": 80.7397,
                "progressive_carries": 0.5289,
                "key_pass": 0.4565,
                "shots_off_target": 0.4145
              },
              "params": {
                "market_value_eur": 2700000,
                "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": {
                "interceptions": 0.9333,
                "tackles": 1.4446,
                "tackles_won": 0.8167,
                "clearances": 6.0829,
                "aerial_won": 2.2935,
                "total_shots": 0.4673,
                "rating": 6.8857,
                "minutes": 89.48,
                "total_pass": 56.9016,
                "accurate_pass": 48.9556,
                "duels_won": 4.3891,
                "total_long_balls": 11.1485,
                "accurate_long_balls": 5.8623,
                "total_own_half_passes": 32.7644,
                "accurate_own_half_passes": 31.7696,
                "total_opp_half_passes": 24.1373,
                "accurate_opp_half_passes": 17.186,
                "crosses_total": 0.0609,
                "crosses_accurate": 0.0565,
                "touches": 70.8509,
                "possession_lost": 8.8306,
                "dispossessed": 0.2415,
                "duels_lost": 3.2576,
                "aerial_lost": 1.7408,
                "total_contest": 0.4021,
                "won_contest": 0.2016,
                "ball_recovery": 3.627,
                "challenges_lost": 0.1002,
                "fouls": 1.0986,
                "fouls_drawn": 0.6665,
                "blocks": 1.0634,
                "goals": 0.0248,
                "goal_rate": 0.0248,
                "assists": 0.1552,
                "assist_rate": 0.1552,
                "expected_goals": 0.0166,
                "expected_assists": 0.1309,
                "shots_on_target": 0.0528,
                "big_chances_created": 0.1687,
                "xgot": 0.0184,
                "ball_carries": 21.7183,
                "total_progression": 80.7397,
                "progressive_carries": 0.5289,
                "key_pass": 0.4565,
                "shots_off_target": 0.4145
              },
              "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.9333,
                "tackles": 1.4446,
                "tackles_won": 0.8167,
                "clearances": 6.0829,
                "aerial_won": 2.2935,
                "total_shots": 0.4673,
                "rating": 6.8857,
                "minutes": 89.48,
                "total_pass": 56.9016,
                "accurate_pass": 48.9556,
                "duels_won": 4.3891,
                "total_long_balls": 11.1485,
                "accurate_long_balls": 5.8623,
                "total_own_half_passes": 32.7644,
                "accurate_own_half_passes": 31.7696,
                "total_opp_half_passes": 24.1373,
                "accurate_opp_half_passes": 17.186,
                "crosses_total": 0.0609,
                "crosses_accurate": 0.0565,
                "touches": 70.8509,
                "possession_lost": 8.8306,
                "dispossessed": 0.2415,
                "duels_lost": 3.2576,
                "aerial_lost": 1.7408,
                "total_contest": 0.4021,
                "won_contest": 0.2016,
                "ball_recovery": 3.627,
                "challenges_lost": 0.1002,
                "fouls": 1.0986,
                "fouls_drawn": 0.6665,
                "blocks": 1.0634,
                "goals": 0.0248,
                "goal_rate": 0.0248,
                "assists": 0.1552,
                "assist_rate": 0.1552,
                "expected_goals": 0.0166,
                "expected_assists": 0.1309,
                "shots_on_target": 0.0528,
                "big_chances_created": 0.1687,
                "xgot": 0.0184,
                "ball_carries": 21.7183,
                "total_progression": 80.7397,
                "progressive_carries": 0.5289,
                "key_pass": 0.4565,
                "shots_off_target": 0.4145,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.77,
                "opponent_faced": "Yassir Zabiri",
                "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": "Yassir Zabiri",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.9333,
                "tackles": 1.4446,
                "tackles_won": 0.8167,
                "clearances": 6.0829,
                "aerial_won": 2.2935,
                "total_shots": 0.4673,
                "rating": 6.8857,
                "minutes": 89.48,
                "total_pass": 56.9016,
                "accurate_pass": 48.9556,
                "duels_won": 4.3891,
                "total_long_balls": 11.1485,
                "accurate_long_balls": 5.8623,
                "total_own_half_passes": 32.7644,
                "accurate_own_half_passes": 31.7696,
                "total_opp_half_passes": 24.1373,
                "accurate_opp_half_passes": 17.186,
                "crosses_total": 0.0609,
                "crosses_accurate": 0.0565,
                "touches": 70.8509,
                "possession_lost": 8.8306,
                "dispossessed": 0.2415,
                "duels_lost": 3.2576,
                "aerial_lost": 1.7408,
                "total_contest": 0.4021,
                "won_contest": 0.2016,
                "ball_recovery": 3.627,
                "challenges_lost": 0.1002,
                "fouls": 1.0986,
                "fouls_drawn": 0.6665,
                "blocks": 1.0634,
                "goal_rate": 0.0248,
                "goals": 0,
                "assist_rate": 0.1552,
                "assists": 0,
                "expected_goals": 0.0166,
                "expected_assists": 0.1309,
                "shots_on_target": 0.0528,
                "big_chances_created": 0.1687,
                "xgot": 0.0184,
                "ball_carries": 21.7183,
                "total_progression": 80.7397,
                "progressive_carries": 0.5289,
                "key_pass": 0.4565,
                "shots_off_target": 0.4145,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.77,
                "opponent_faced": "Yassir Zabiri",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "interceptions": 0.9333,
                "tackles": 1.4446,
                "tackles_won": 0.8167,
                "clearances": 6.0829,
                "aerial_won": 2.2935,
                "total_shots": 0.4673,
                "rating": 6.8857,
                "minutes": 89.48,
                "total_pass": 56.9016,
                "accurate_pass": 48.9556,
                "duels_won": 4.3891,
                "total_long_balls": 11.1485,
                "accurate_long_balls": 5.8623,
                "total_own_half_passes": 32.7644,
                "accurate_own_half_passes": 31.7696,
                "total_opp_half_passes": 24.1373,
                "accurate_opp_half_passes": 17.186,
                "crosses_total": 0.0609,
                "crosses_accurate": 0.0565,
                "touches": 70.8509,
                "possession_lost": 8.8306,
                "dispossessed": 0.2415,
                "duels_lost": 3.2576,
                "aerial_lost": 1.7408,
                "total_contest": 0.4021,
                "won_contest": 0.2016,
                "ball_recovery": 3.627,
                "challenges_lost": 0.1002,
                "fouls": 1.0986,
                "fouls_drawn": 0.6665,
                "blocks": 1.0634,
                "goal_rate": 0.0248,
                "goals": 0,
                "assist_rate": 0.1552,
                "assists": 0,
                "expected_goals": 0.0243,
                "expected_assists": 0.1917,
                "shots_on_target": 0.0528,
                "big_chances_created": 0.1687,
                "xgot": 0.0269,
                "ball_carries": 21.7183,
                "total_progression": 80.7397,
                "progressive_carries": 0.5289,
                "key_pass": 0.4565,
                "shots_off_target": 0.4145,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.77,
                "opponent_faced": "Yassir Zabiri",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1231,
                "creation_factor": 1.1343
              },
              "params": {
                "team_lambda": 1.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0166,
                  "after": 0.0243
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1309,
                  "after": 0.1917
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 85.0)",
              "stats": {
                "interceptions": 0.9333,
                "tackles": 1.4446,
                "tackles_won": 0.8167,
                "clearances": 6.0829,
                "aerial_won": 2.2935,
                "total_shots": 0.4673,
                "rating": 6.8857,
                "minutes": 89.48,
                "total_pass": 56.9016,
                "accurate_pass": 48.9556,
                "duels_won": 4.3891,
                "total_long_balls": 11.1485,
                "accurate_long_balls": 5.8623,
                "total_own_half_passes": 32.7644,
                "accurate_own_half_passes": 31.7696,
                "total_opp_half_passes": 24.1373,
                "accurate_opp_half_passes": 17.186,
                "crosses_total": 0.0609,
                "crosses_accurate": 0.0565,
                "touches": 70.8509,
                "possession_lost": 8.8306,
                "dispossessed": 0.2415,
                "duels_lost": 3.2576,
                "aerial_lost": 1.7408,
                "total_contest": 0.4021,
                "won_contest": 0.2016,
                "ball_recovery": 3.627,
                "challenges_lost": 0.1002,
                "fouls": 1.0986,
                "fouls_drawn": 0.6665,
                "blocks": 1.0634,
                "goal_rate": 0.0248,
                "goals": 0,
                "assist_rate": 0.1552,
                "assists": 0,
                "expected_goals": 0.0243,
                "expected_assists": 0.1917,
                "shots_on_target": 0.0528,
                "big_chances_created": 0.1687,
                "xgot": 0.0269,
                "ball_carries": 21.7183,
                "total_progression": 80.7397,
                "progressive_carries": 0.5289,
                "key_pass": 0.4565,
                "shots_off_target": 0.4145,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.77,
                "opponent_faced": "Yassir Zabiri",
                "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1231,
                "creation_factor": 1.1343,
                "fifa_overall": 85.0
              },
              "params": {
                "match_squad_rank": 4,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 145,
                "fifa_rank": 162.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 85.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 0.9333,
                "tackles": 1.4446,
                "tackles_won": 0.8167,
                "clearances": 6.0829,
                "aerial_won": 2.2935,
                "total_shots": 0.4673,
                "rating": 6.8857,
                "minutes": 89.48,
                "total_pass": 56.9016,
                "accurate_pass": 48.9556,
                "duels_won": 4.3891,
                "total_long_balls": 11.1485,
                "accurate_long_balls": 5.8623,
                "total_own_half_passes": 32.7644,
                "accurate_own_half_passes": 31.7696,
                "total_opp_half_passes": 24.1373,
                "accurate_opp_half_passes": 17.186,
                "crosses_total": 0.0609,
                "crosses_accurate": 0.0565,
                "touches": 70.8509,
                "possession_lost": 8.8306,
                "dispossessed": 0.2415,
                "duels_lost": 3.2576,
                "aerial_lost": 1.7408,
                "total_contest": 0.4021,
                "won_contest": 0.2016,
                "ball_recovery": 3.627,
                "challenges_lost": 0.1002,
                "fouls": 1.0986,
                "fouls_drawn": 0.6665,
                "blocks": 1.0634,
                "goal_rate": 0.0248,
                "goals": 0,
                "assist_rate": 0.1552,
                "assists": 0,
                "expected_goals": 0.0243,
                "expected_assists": 0.1917,
                "shots_on_target": 0.0528,
                "big_chances_created": 0.1687,
                "xgot": 0.0269,
                "ball_carries": 21.7183,
                "total_progression": 80.7397,
                "progressive_carries": 0.5289,
                "key_pass": 0.4565,
                "shots_off_target": 0.4145,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.77,
                "opponent_faced": "Yassir Zabiri",
                "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.024,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1231,
                "creation_factor": 1.1343,
                "fifa_overall": 85.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.024,
                "goal_rate": 0.0248,
                "scorer_weight": 0.0273,
                "squad_weight_total": 1.3652,
                "weight_share": 0.02,
                "finishing_factor": 1.1231,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.9333,
                "tackles": 1.4446,
                "tackles_won": 0.8167,
                "clearances": 6.0829,
                "aerial_won": 2.2935,
                "total_shots": 0.4673,
                "rating": 6.8857,
                "minutes": 89.48,
                "total_pass": 56.9016,
                "accurate_pass": 48.9556,
                "duels_won": 4.3891,
                "total_long_balls": 11.1485,
                "accurate_long_balls": 5.8623,
                "total_own_half_passes": 32.7644,
                "accurate_own_half_passes": 31.7696,
                "total_opp_half_passes": 24.1373,
                "accurate_opp_half_passes": 17.186,
                "crosses_total": 0.0609,
                "crosses_accurate": 0.0565,
                "touches": 70.8509,
                "possession_lost": 8.8306,
                "dispossessed": 0.2415,
                "duels_lost": 3.2576,
                "aerial_lost": 1.7408,
                "total_contest": 0.4021,
                "won_contest": 0.2016,
                "ball_recovery": 3.627,
                "challenges_lost": 0.1002,
                "fouls": 1.0986,
                "fouls_drawn": 0.6665,
                "blocks": 1.0634,
                "goal_rate": 0.0248,
                "goals": 0,
                "assist_rate": 0.1552,
                "assists": 1,
                "expected_goals": 0.0243,
                "expected_assists": 0.1917,
                "shots_on_target": 0.0528,
                "big_chances_created": 0.1687,
                "xgot": 0.0269,
                "ball_carries": 21.7183,
                "total_progression": 80.7397,
                "progressive_carries": 0.5289,
                "key_pass": 0.4565,
                "shots_off_target": 0.4145,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.7,
                "defensive_success_rate": 0.77,
                "opponent_faced": "Yassir Zabiri",
                "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.024,
                "projected_assists": 1,
                "assist_probability": 0.1744,
                "finishing_factor": 1.1231,
                "creation_factor": 1.1343,
                "fifa_overall": 85.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 1,
                "assist_probability": 0.1744,
                "assist_rate": 0.1552,
                "provider_weight": 0.2174,
                "squad_weight_total": 0.9792,
                "weight_share": 0.2221,
                "creation_factor": 1.1343,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Iñigo Arguibide": {
          "player_id": 1495856,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 27,
          "height": 178,
          "market_value": 2700000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.5594,
            "minutes": 78,
            "total_pass": 18,
            "accurate_pass": 14,
            "duels_won": 3,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 9,
            "accurate_own_half_passes": 8,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 6,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 38,
            "possession_lost": 10.0833,
            "dispossessed": 0.503,
            "duels_lost": 4,
            "aerial_lost": 0,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 2,
            "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.0179,
            "expected_assists": 0.0354,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 8,
            "total_progression": 38,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "opponent_faced": "Sergio Canales",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0177,
            "projected_assists": 0,
            "assist_probability": 0.0348,
            "finishing_factor": 0.8039,
            "creation_factor": 0.8,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16421054,
              "match_date": "2026-10-11",
              "home_team": "Real Betis",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 63,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0097,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 16,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "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": 16416305,
              "match_date": "2026-09-19",
              "home_team": "Osasuna",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0717,
                "expected_assists": 0.0058,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 10,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416335,
              "match_date": "2026-09-16",
              "home_team": "Atlético Madrid",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 71,
                "rating": 5.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0017,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 5,
                "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": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 59,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0049,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 16,
                "tackles": 1,
                "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": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 85,
                "rating": 5.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0839,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 17,
                "key_pass": 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": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.011,
                "expected_assists": 0.1051,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 25,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 2,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0104,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 29,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 3,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416296,
              "match_date": "2026-08-24",
              "home_team": "Osasuna",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 81,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0428,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 8,
                "tackles": 1,
                "tackles_won": 1,
                "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": 14081794,
              "match_date": "2026-02-21",
              "home_team": "Osasuna",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 13,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "clearances": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083200,
              "match_date": "2026-01-03",
              "home_team": "Osasuna",
              "away_team": "Athletic Club",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 8,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 1360,
            "combined_rank_score": 577.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 578.0,
            "sofascore_rating": 6.8,
            "sofascore_appearances": 3.0,
            "fifa_rank": 577.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.5594,
            "source_file": "data/player_rankings.csv",
            "player_name": "Iñigo Arguibide",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ji-sol Lee",
                  "ranking": 1355
                },
                {
                  "player_name": "Marko Bakić",
                  "ranking": 1356
                },
                {
                  "player_name": "Nika Gagnidze",
                  "ranking": 1357
                },
                {
                  "player_name": "Francisco Geraldes",
                  "ranking": 1358
                },
                {
                  "player_name": "Fernando Niño",
                  "ranking": 1359
                }
              ],
              "lower": [
                {
                  "player_name": "David Larrubia",
                  "ranking": 1361
                },
                {
                  "player_name": "John Edwin Montaño",
                  "ranking": 1362
                },
                {
                  "player_name": "Samuel Xavier",
                  "ranking": 1363
                },
                {
                  "player_name": "Laziz Mirzaev",
                  "ranking": 1364
                },
                {
                  "player_name": "Shamar Nicholson",
                  "ranking": 1365
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.779,
          "history_matches": 14,
          "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": 14,
            "data_confidence": 0.779,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9947,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 260.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.35,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1933
            },
            "rationale": "XGBoost regressor (D_service) evaluated 14 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Osasuna, rel: 0.19, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.6147,
                "tackles": 1.4181,
                "tackles_won": 0.9639,
                "clearances": 1.9712,
                "aerial_won": 0.4927,
                "total_shots": 0.4609,
                "rating": 6.5594,
                "minutes": 78.2,
                "total_pass": 17.602,
                "accurate_pass": 14.0518,
                "duels_won": 3.3834,
                "total_long_balls": 2.2356,
                "accurate_long_balls": 0.553,
                "total_own_half_passes": 9.4144,
                "accurate_own_half_passes": 8.136,
                "total_opp_half_passes": 8.1876,
                "accurate_opp_half_passes": 5.9158,
                "crosses_total": 2.2809,
                "crosses_accurate": 0.3656,
                "touches": 38.4001,
                "possession_lost": 10.137,
                "dispossessed": 0.5057,
                "duels_lost": 4.2131,
                "aerial_lost": 0.3393,
                "total_contest": 2.3797,
                "won_contest": 0.7491,
                "ball_recovery": 2.2616,
                "challenges_lost": 0.4593,
                "fouls": 1.2782,
                "fouls_drawn": 1.0836,
                "blocks": 0.4793,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0123,
                "expected_assists": 0.0243,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0829,
                "xgot": 0.0,
                "ball_carries": 8.5116,
                "total_progression": 38.6985,
                "progressive_carries": 0.989,
                "key_pass": 0.418,
                "shots_off_target": 0.4609
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:05:00.533351+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Betis",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1672,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1421,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "Atlético Madrid",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.1208,
                    "rating": 5.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Espanyol",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.1027,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Deportivo Alavés",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.0873,
                    "rating": 5.7
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0742,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0631,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Levante UD",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.0536,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-02-21",
                    "opponent": "Real Madrid",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.0456,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-01-03",
                    "opponent": "Athletic Club",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.0387,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 14.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 1.1357,
                  "aerialWon": 0.1672,
                  "totalClearance_p90": 1.8519,
                  "totalTackle": 1.1708,
                  "defensive_actions": 1.4771
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.6146964430809021,
                    "model_output": 0.6147,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "interceptionWon",
                          "contribution": -0.1111
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0948
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0483
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0387
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0278
                        }
                      ],
                      "others": -0.1151,
                      "total": 0.6147,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "interceptionWon",
                          "margin": -0.138239
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.119088
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.058939
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.049764
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.037414
                        }
                      ],
                      "others_margin": -0.171551
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.4181064367294312,
                    "model_output": 1.4181,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1866
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0927
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.053
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.04
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0365
                        }
                      ],
                      "others": -0.0108,
                      "total": 1.4181,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.125807
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.06053
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.036326
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.0283
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.025881
                        }
                      ],
                      "others_margin": -0.007597
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.9639208316802979,
                    "model_output": 0.9639,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1186
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0391
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0349
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0313
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0283
                        }
                      ],
                      "others": 0.0055,
                      "total": 0.9639,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.130005
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.041051
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.038143
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.034224
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.029973
                        }
                      ],
                      "others_margin": 0.005875
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.9712107181549072,
                    "model_output": 1.9712,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": -0.8873
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3747
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.3049
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.2626
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.189
                        }
                      ],
                      "others": -0.1924,
                      "total": 1.9712,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "totalClearance",
                          "margin": -0.299065
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.137337
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.110289
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.105801
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.083726
                        }
                      ],
                      "others_margin": -0.093164
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.49266356229782104,
                    "model_output": 0.4927,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.5175
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1123
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0962
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0791
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0414
                        }
                      ],
                      "others": -0.1963,
                      "total": 0.4927,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": -0.471151
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.139977
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.137812
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.114666
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.058349
                        }
                      ],
                      "others_margin": -0.335439
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.46091213822364807,
                    "model_output": 0.4609,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0574
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0329
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0174
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0137
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0116
                        }
                      ],
                      "others": -0.0302,
                      "total": 0.4609,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.057368
                        },
                        {
                          "name": "rating",
                          "margin": -0.032921
                        },
                        {
                          "name": "aerialWon",
                          "margin": 0.017444
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.013717
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.011551
                        }
                      ],
                      "others_margin": -0.030211
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.559388160705566,
                    "model_output": 6.5594,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0431
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0401
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0253
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0191
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.0134
                        }
                      ],
                      "others": -0.0843,
                      "total": 6.5594,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.043084
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.040051
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.025288
                        },
                        {
                          "name": "rating",
                          "margin": -0.019103
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": -0.013427
                        }
                      ],
                      "others_margin": -0.084361
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 14,
                  "role_matches": 10,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9947, quality 0.437)",
              "stats": {
                "interceptions": 0.6114,
                "tackles": 1.4106,
                "tackles_won": 0.9588,
                "clearances": 1.9608,
                "aerial_won": 0.4901,
                "total_shots": 0.4585,
                "rating": 6.5594,
                "minutes": 78.2,
                "total_pass": 17.5087,
                "accurate_pass": 13.9773,
                "duels_won": 3.3655,
                "total_long_balls": 2.2238,
                "accurate_long_balls": 0.5501,
                "total_own_half_passes": 9.3645,
                "accurate_own_half_passes": 8.0929,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 5.8844,
                "crosses_total": 2.2688,
                "crosses_accurate": 0.3637,
                "touches": 38.1966,
                "possession_lost": 10.0833,
                "dispossessed": 0.503,
                "duels_lost": 4.1908,
                "aerial_lost": 0.3375,
                "total_contest": 2.3671,
                "won_contest": 0.7451,
                "ball_recovery": 2.2496,
                "challenges_lost": 0.4569,
                "fouls": 1.2714,
                "fouls_drawn": 1.0779,
                "blocks": 0.4768,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0122,
                "expected_assists": 0.0242,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0825,
                "xgot": 0.0,
                "ball_carries": 8.4665,
                "total_progression": 38.4934,
                "progressive_carries": 0.9838,
                "key_pass": 0.4158,
                "shots_off_target": 0.4585
              },
              "params": {
                "market_value_eur": 2700000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9947,
                "reference_quality": 0.505,
                "history_matches": 14,
                "history_shrink": 0.2632,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0331)",
              "stats": {
                "interceptions": 0.611,
                "tackles": 1.4106,
                "tackles_won": 0.9865,
                "clearances": 1.9608,
                "aerial_won": 0.4901,
                "total_shots": 0.4534,
                "rating": 6.5594,
                "minutes": 78.2,
                "total_pass": 17.5087,
                "accurate_pass": 13.9773,
                "duels_won": 3.3655,
                "total_long_balls": 2.2238,
                "accurate_long_balls": 0.5501,
                "total_own_half_passes": 9.3645,
                "accurate_own_half_passes": 8.0929,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 5.8844,
                "crosses_total": 2.3028,
                "crosses_accurate": 0.3637,
                "touches": 38.1966,
                "possession_lost": 10.0833,
                "dispossessed": 0.503,
                "duels_lost": 4.1908,
                "aerial_lost": 0.3375,
                "total_contest": 2.3671,
                "won_contest": 0.7451,
                "ball_recovery": 2.2496,
                "challenges_lost": 0.4569,
                "fouls": 1.2492,
                "fouls_drawn": 1.0522,
                "blocks": 0.4768,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0122,
                "expected_assists": 0.0242,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0825,
                "xgot": 0.0,
                "ball_carries": 8.4665,
                "total_progression": 38.4934,
                "progressive_carries": 0.9838,
                "key_pass": 0.4158,
                "shots_off_target": 0.4585
              },
              "params": {
                "blend_weight": 0.0331,
                "history_matches": 14,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8689,
                "prior_reliability": 0.1933,
                "competition": "La Liga",
                "squad": "Osasuna"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 2.2688,
                  "after": 2.3028
                },
                {
                  "stat": "wonTackle",
                  "before": 0.9588,
                  "after": 0.9865
                },
                {
                  "stat": "wasFouled",
                  "before": 1.0779,
                  "after": 1.0522
                },
                {
                  "stat": "fouls",
                  "before": 1.2714,
                  "after": 1.2492
                },
                {
                  "stat": "totalShots",
                  "before": 0.4585,
                  "after": 0.4534
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.611,
                "tackles": 1.4106,
                "tackles_won": 0.9865,
                "clearances": 1.9608,
                "aerial_won": 0.4901,
                "total_shots": 0.4585,
                "rating": 6.5594,
                "minutes": 78.2,
                "total_pass": 17.5087,
                "accurate_pass": 13.9773,
                "duels_won": 3.3655,
                "total_long_balls": 2.2238,
                "accurate_long_balls": 0.5501,
                "total_own_half_passes": 9.3645,
                "accurate_own_half_passes": 8.0929,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 5.8844,
                "crosses_total": 2.3028,
                "crosses_accurate": 0.3637,
                "touches": 38.1966,
                "possession_lost": 10.0833,
                "dispossessed": 0.503,
                "duels_lost": 4.1908,
                "aerial_lost": 0.3375,
                "total_contest": 2.3671,
                "won_contest": 0.7451,
                "ball_recovery": 2.2496,
                "challenges_lost": 0.4569,
                "fouls": 1.2492,
                "fouls_drawn": 1.0522,
                "blocks": 0.4768,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0122,
                "expected_assists": 0.0242,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0825,
                "xgot": 0.0,
                "ball_carries": 8.4665,
                "total_progression": 38.4934,
                "progressive_carries": 0.9838,
                "key_pass": 0.4158,
                "shots_off_target": 0.4585
              },
              "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.611,
                "tackles": 1.4106,
                "tackles_won": 0.9865,
                "clearances": 1.9608,
                "aerial_won": 0.4901,
                "total_shots": 0.4585,
                "rating": 6.5594,
                "minutes": 78.2,
                "total_pass": 17.5087,
                "accurate_pass": 13.9773,
                "duels_won": 3.3655,
                "total_long_balls": 2.2238,
                "accurate_long_balls": 0.5501,
                "total_own_half_passes": 9.3645,
                "accurate_own_half_passes": 8.0929,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 5.8844,
                "crosses_total": 2.3028,
                "crosses_accurate": 0.3637,
                "touches": 38.1966,
                "possession_lost": 10.0833,
                "dispossessed": 0.503,
                "duels_lost": 4.1908,
                "aerial_lost": 0.3375,
                "total_contest": 2.3671,
                "won_contest": 0.7451,
                "ball_recovery": 2.2496,
                "challenges_lost": 0.4569,
                "fouls": 1.2492,
                "fouls_drawn": 1.0522,
                "blocks": 0.4768,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0122,
                "expected_assists": 0.0242,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0825,
                "xgot": 0.0,
                "ball_carries": 8.4665,
                "total_progression": 38.4934,
                "progressive_carries": 0.9838,
                "key_pass": 0.4158,
                "shots_off_target": 0.4585,
                "opponent_faced": "Sergio Canales",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Sergio Canales",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 0.611,
                "tackles": 1.4106,
                "tackles_won": 0.9865,
                "clearances": 1.9608,
                "aerial_won": 0.4901,
                "total_shots": 0.4585,
                "rating": 6.5594,
                "minutes": 78.2,
                "total_pass": 17.5087,
                "accurate_pass": 13.9773,
                "duels_won": 3.3655,
                "total_long_balls": 2.2238,
                "accurate_long_balls": 0.5501,
                "total_own_half_passes": 9.3645,
                "accurate_own_half_passes": 8.0929,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 5.8844,
                "crosses_total": 2.3028,
                "crosses_accurate": 0.3637,
                "touches": 38.1966,
                "possession_lost": 10.0833,
                "dispossessed": 0.503,
                "duels_lost": 4.1908,
                "aerial_lost": 0.3375,
                "total_contest": 2.3671,
                "won_contest": 0.7451,
                "ball_recovery": 2.2496,
                "challenges_lost": 0.4569,
                "fouls": 1.2492,
                "fouls_drawn": 1.0522,
                "blocks": 0.4768,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0122,
                "expected_assists": 0.0242,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0825,
                "xgot": 0.0,
                "ball_carries": 8.4665,
                "total_progression": 38.4934,
                "progressive_carries": 0.9838,
                "key_pass": 0.4158,
                "shots_off_target": 0.4585,
                "opponent_faced": "Sergio Canales",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "interceptions": 0.611,
                "tackles": 1.4106,
                "tackles_won": 0.9865,
                "clearances": 1.9608,
                "aerial_won": 0.4901,
                "total_shots": 0.4585,
                "rating": 6.5594,
                "minutes": 78.2,
                "total_pass": 17.5087,
                "accurate_pass": 13.9773,
                "duels_won": 3.3655,
                "total_long_balls": 2.2238,
                "accurate_long_balls": 0.5501,
                "total_own_half_passes": 9.3645,
                "accurate_own_half_passes": 8.0929,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 5.8844,
                "crosses_total": 2.3028,
                "crosses_accurate": 0.3637,
                "touches": 38.1966,
                "possession_lost": 10.0833,
                "dispossessed": 0.503,
                "duels_lost": 4.1908,
                "aerial_lost": 0.3375,
                "total_contest": 2.3671,
                "won_contest": 0.7451,
                "ball_recovery": 2.2496,
                "challenges_lost": 0.4569,
                "fouls": 1.2492,
                "fouls_drawn": 1.0522,
                "blocks": 0.4768,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0179,
                "expected_assists": 0.0354,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0825,
                "xgot": 0.0,
                "ball_carries": 8.4665,
                "total_progression": 38.4934,
                "progressive_carries": 0.9838,
                "key_pass": 0.4158,
                "shots_off_target": 0.4585,
                "opponent_faced": "Sergio Canales",
                "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.8039,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0122,
                  "after": 0.0179
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0242,
                  "after": 0.0354
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 81.0)",
              "stats": {
                "interceptions": 0.611,
                "tackles": 1.4106,
                "tackles_won": 0.9865,
                "clearances": 1.9608,
                "aerial_won": 0.4901,
                "total_shots": 0.4585,
                "rating": 6.5594,
                "minutes": 78.2,
                "total_pass": 17.5087,
                "accurate_pass": 13.9773,
                "duels_won": 3.3655,
                "total_long_balls": 2.2238,
                "accurate_long_balls": 0.5501,
                "total_own_half_passes": 9.3645,
                "accurate_own_half_passes": 8.0929,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 5.8844,
                "crosses_total": 2.3028,
                "crosses_accurate": 0.3637,
                "touches": 38.1966,
                "possession_lost": 10.0833,
                "dispossessed": 0.503,
                "duels_lost": 4.1908,
                "aerial_lost": 0.3375,
                "total_contest": 2.3671,
                "won_contest": 0.7451,
                "ball_recovery": 2.2496,
                "challenges_lost": 0.4569,
                "fouls": 1.2492,
                "fouls_drawn": 1.0522,
                "blocks": 0.4768,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0179,
                "expected_assists": 0.0354,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0825,
                "xgot": 0.0,
                "ball_carries": 8.4665,
                "total_progression": 38.4934,
                "progressive_carries": 0.9838,
                "key_pass": 0.4158,
                "shots_off_target": 0.4585,
                "opponent_faced": "Sergio Canales",
                "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.8039,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 1360,
                "fifa_rank": 577.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": 0.611,
                "tackles": 1.4106,
                "tackles_won": 0.9865,
                "clearances": 1.9608,
                "aerial_won": 0.4901,
                "total_shots": 0.4585,
                "rating": 6.5594,
                "minutes": 78.2,
                "total_pass": 17.5087,
                "accurate_pass": 13.9773,
                "duels_won": 3.3655,
                "total_long_balls": 2.2238,
                "accurate_long_balls": 0.5501,
                "total_own_half_passes": 9.3645,
                "accurate_own_half_passes": 8.0929,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 5.8844,
                "crosses_total": 2.3028,
                "crosses_accurate": 0.3637,
                "touches": 38.1966,
                "possession_lost": 10.0833,
                "dispossessed": 0.503,
                "duels_lost": 4.1908,
                "aerial_lost": 0.3375,
                "total_contest": 2.3671,
                "won_contest": 0.7451,
                "ball_recovery": 2.2496,
                "challenges_lost": 0.4569,
                "fouls": 1.2492,
                "fouls_drawn": 1.0522,
                "blocks": 0.4768,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0179,
                "expected_assists": 0.0354,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0825,
                "xgot": 0.0,
                "ball_carries": 8.4665,
                "total_progression": 38.4934,
                "progressive_carries": 0.9838,
                "key_pass": 0.4158,
                "shots_off_target": 0.4585,
                "opponent_faced": "Sergio Canales",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0177,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8039,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0177,
                "goal_rate": 0.0,
                "scorer_weight": 0.0144,
                "squad_weight_total": 1.3652,
                "weight_share": 0.0105,
                "finishing_factor": 0.8039,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.611,
                "tackles": 1.4106,
                "tackles_won": 0.9865,
                "clearances": 1.9608,
                "aerial_won": 0.4901,
                "total_shots": 0.4585,
                "rating": 6.5594,
                "minutes": 78.2,
                "total_pass": 17.5087,
                "accurate_pass": 13.9773,
                "duels_won": 3.3655,
                "total_long_balls": 2.2238,
                "accurate_long_balls": 0.5501,
                "total_own_half_passes": 9.3645,
                "accurate_own_half_passes": 8.0929,
                "total_opp_half_passes": 8.1442,
                "accurate_opp_half_passes": 5.8844,
                "crosses_total": 2.3028,
                "crosses_accurate": 0.3637,
                "touches": 38.1966,
                "possession_lost": 10.0833,
                "dispossessed": 0.503,
                "duels_lost": 4.1908,
                "aerial_lost": 0.3375,
                "total_contest": 2.3671,
                "won_contest": 0.7451,
                "ball_recovery": 2.2496,
                "challenges_lost": 0.4569,
                "fouls": 1.2492,
                "fouls_drawn": 1.0522,
                "blocks": 0.4768,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0179,
                "expected_assists": 0.0354,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0825,
                "xgot": 0.0,
                "ball_carries": 8.4665,
                "total_progression": 38.4934,
                "progressive_carries": 0.9838,
                "key_pass": 0.4158,
                "shots_off_target": 0.4585,
                "opponent_faced": "Sergio Canales",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0177,
                "projected_assists": 0,
                "assist_probability": 0.0348,
                "finishing_factor": 0.8039,
                "creation_factor": 0.8,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0348,
                "assist_rate": 0.0,
                "provider_weight": 0.0283,
                "squad_weight_total": 0.9792,
                "weight_share": 0.0289,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "bench_players": {
        "Sergio Herrera": {
          "player_id": 294377,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 1,
          "height": 192,
          "market_value": 2600000,
          "stats": {
            "saves": 0,
            "goals_prevented": -0.0098,
            "rating": 7.0371,
            "minutes": 4,
            "total_pass": 4,
            "accurate_pass": 3,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "touches": 5,
            "clearances": 0,
            "ball_recovery": 1,
            "high_claims": 0,
            "punches": 0.1139,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 1.1283,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "bench_appearance_probability": 0.131,
            "bench_expected_minutes": 4.39,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.395,
            "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": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 17,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 7,
                "saves": 1,
                "goals_prevented": -0.3437
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 14,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 8,
                "saves": 2,
                "goals_prevented": -1.6289
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0053,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 15,
                "key_pass": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 8,
                "saves": 1,
                "goals_prevented": 0.2211
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 12,
                "ball_recovery": 5,
                "saves": 1,
                "goals_prevented": -0.6964
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416296,
              "match_date": "2026-08-24",
              "home_team": "Osasuna",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.007,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 20,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 11,
                "saves": 1,
                "goals_prevented": 0.1729
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083723,
              "match_date": "2026-05-23",
              "home_team": "Getafe",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0034,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 9,
                "duels_won": 1,
                "ball_recovery": 5,
                "saves": 2,
                "goals_prevented": -0.7671
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0017,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 28,
                "clearances": 2,
                "ball_recovery": 13,
                "saves": 1,
                "goals_prevented": -0.6195
              },
              "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": 14083568,
              "match_date": "2026-05-08",
              "home_team": "Levante UD",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 45,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 15,
                "clearances": 1,
                "ball_recovery": 5,
                "saves": 2,
                "goals_prevented": 0.5435
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083495,
              "match_date": "2026-05-02",
              "home_team": "Osasuna",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 17,
                "clearances": 1,
                "ball_recovery": 5,
                "saves": 2,
                "goals_prevented": -0.321
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083231,
              "match_date": "2026-04-26",
              "home_team": "Osasuna",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 23,
                "clearances": 2,
                "ball_recovery": 13,
                "saves": 1,
                "goals_prevented": -0.8273
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 1581,
            "combined_rank_score": 645.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 336.0,
            "sofascore_rating": 7.0,
            "sofascore_appearances": 3.0,
            "fifa_rank": 954.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0371,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sergio Herrera",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jardel",
                  "ranking": 1576
                },
                {
                  "player_name": "Kim Dong-wook",
                  "ranking": 1577
                },
                {
                  "player_name": "Viktor Đukanović",
                  "ranking": 1578
                },
                {
                  "player_name": "Daniel Hall",
                  "ranking": 1579
                },
                {
                  "player_name": "Daniel Ballard",
                  "ranking": 1580
                }
              ],
              "lower": [
                {
                  "player_name": "Maximiliano Romero",
                  "ranking": 1582
                },
                {
                  "player_name": "Lucas Digne",
                  "ranking": 1583
                },
                {
                  "player_name": "Nico Elvedi",
                  "ranking": 1584
                },
                {
                  "player_name": "Augusto Batalla",
                  "ranking": 1585
                },
                {
                  "player_name": "Pavel Šulc",
                  "ranking": 1586
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 42,
          "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": 42,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 4.392222187561249,
            "bench_appearance_prob": 0.131,
            "market_value_adjustment": 0.9978,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.2
            },
            "rationale": "Bench projection scaled from XGBoost G_service (42 historical appearances) to 4.4 expected mins (appearance prob 0.13); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 2.6201,
                "goals_prevented": -0.0637,
                "rating": 7.0371,
                "minutes": 28.5,
                "total_pass": 24.4357,
                "accurate_pass": 17.2261,
                "total_long_balls": 13.4559,
                "accurate_long_balls": 6.4239,
                "touches": 33.2462,
                "clearances": 0.9724,
                "ball_recovery": 7.7986,
                "high_claims": 0.5837,
                "punches": 0.7406,
                "aerial_won": 0.159,
                "sweeper_actions": 0.7422,
                "sweeper_accurate": 0.6845,
                "saves_inside_box": 0.8303,
                "possession_lost": 7.3371,
                "duels_won": 0.6943,
                "duels_lost": 0.0226,
                "total_contest": 0.1276,
                "won_contest": 0.1276,
                "fouls": 0.1488,
                "fouls_drawn": 0.2575,
                "total_own_half_passes": 15.1387,
                "accurate_own_half_passes": 13.0755
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-17T10:04:09.876591+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 200,
                    "rows": 7041
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Espanyol",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1276,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0666,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Espanyol",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-08",
                    "opponent": "Levante UD",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0348,
                    "rating": 6.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "accurateLongBalls": 6.4239,
                  "save_contribution": 1.1667,
                  "distribution_accuracy": 0.8431,
                  "accurateOwnHalfPasses": 13.0755,
                  "passValueNormalized": 0.0646,
                  "totalOwnHalfPasses": 15.1387
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.620051383972168,
                    "model_output": 2.6201,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "save_contribution",
                        "importance": 0.0393
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.039
                      },
                      {
                        "name": "saves",
                        "importance": 0.0355
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0354
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 2.941,
                      "items": [
                        {
                          "name": "saves",
                          "contribution": -0.1473
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1376
                        },
                        {
                          "name": "save_contribution",
                          "contribution": -0.0389
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.0319
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0206
                        }
                      ],
                      "others": -0.0084,
                      "total": 2.6201,
                      "log_link": true,
                      "margin_base": 1.078763,
                      "item_margins": [
                        {
                          "name": "saves",
                          "margin": -0.051384
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.050498
                        },
                        {
                          "name": "save_contribution",
                          "margin": -0.014768
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.012123
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.007808
                        }
                      ],
                      "others_margin": -0.003235
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.06374244391918182,
                    "model_output": -0.0637,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.0405
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.0401
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0394
                      },
                      {
                        "name": "totalOwnHalfPasses",
                        "importance": 0.0381
                      },
                      {
                        "name": "punches",
                        "importance": 0.0363
                      }
                    ],
                    "decomposition": {
                      "base": -0.0281,
                      "items": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.0523
                        },
                        {
                          "name": "savedShotsFromInsideTheBox",
                          "contribution": -0.0467
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "contribution": -0.0259
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": -0.0145
                        },
                        {
                          "name": "sweeper_accuracy",
                          "contribution": -0.0127
                        }
                      ],
                      "others": 0.0119,
                      "total": -0.0637,
                      "log_link": false,
                      "margin_base": -0.028113,
                      "item_margins": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.052274
                        },
                        {
                          "name": "savedShotsFromInsideTheBox",
                          "margin": -0.04665
                        },
                        {
                          "name": "accurateKeeperSweeper",
                          "margin": -0.025864
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "margin": -0.014464
                        },
                        {
                          "name": "sweeper_accuracy",
                          "margin": -0.012705
                        }
                      ],
                      "others_margin": 0.01178
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.037093162536621,
                    "model_output": 7.0371,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0379
                      },
                      {
                        "name": "commanding_index",
                        "importance": 0.0375
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.037
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0354
                      },
                      {
                        "name": "sweeper_accuracy",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 6.9974,
                      "items": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": 0.085
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0411
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": -0.0175
                        },
                        {
                          "name": "totalKeeperSweeper",
                          "contribution": -0.0129
                        },
                        {
                          "name": "save_contribution",
                          "contribution": 0.0127
                        }
                      ],
                      "others": 0.0135,
                      "total": 7.0371,
                      "log_link": false,
                      "margin_base": 6.997403,
                      "item_margins": [
                        {
                          "name": "goalkeeperValueNormalized",
                          "margin": 0.084993
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": -0.041052
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "margin": -0.017499
                        },
                        {
                          "name": "totalKeeperSweeper",
                          "margin": -0.012888
                        },
                        {
                          "name": "save_contribution",
                          "margin": 0.01267
                        }
                      ],
                      "others_margin": 0.013464
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 42,
                  "role_matches": 0,
                  "minutes_source": "position_median",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9978, quality 0.437)",
              "stats": {
                "saves": 2.6143,
                "goals_prevented": -0.0636,
                "rating": 7.0371,
                "minutes": 28.5,
                "total_pass": 24.3819,
                "accurate_pass": 17.1882,
                "total_long_balls": 13.4263,
                "accurate_long_balls": 6.4098,
                "touches": 33.1731,
                "clearances": 0.9703,
                "ball_recovery": 7.7814,
                "high_claims": 0.5824,
                "punches": 0.739,
                "aerial_won": 0.1587,
                "sweeper_actions": 0.7406,
                "sweeper_accurate": 0.683,
                "saves_inside_box": 0.8285,
                "possession_lost": 7.321,
                "duels_won": 0.6928,
                "duels_lost": 0.0226,
                "total_contest": 0.1273,
                "won_contest": 0.1273,
                "fouls": 0.1485,
                "fouls_drawn": 0.2569,
                "total_own_half_passes": 15.1054,
                "accurate_own_half_passes": 13.0467
              },
              "params": {
                "market_value_eur": 2600000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9978,
                "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": {
                "saves": 2.5825,
                "goals_prevented": -0.0636,
                "rating": 7.0371,
                "minutes": 28.5,
                "total_pass": 24.3819,
                "accurate_pass": 17.1882,
                "total_long_balls": 13.4263,
                "accurate_long_balls": 6.4098,
                "touches": 33.1731,
                "clearances": 0.9703,
                "ball_recovery": 7.7814,
                "high_claims": 0.5824,
                "punches": 0.739,
                "aerial_won": 0.1587,
                "sweeper_actions": 0.7406,
                "sweeper_accurate": 0.683,
                "saves_inside_box": 0.8285,
                "possession_lost": 7.321,
                "duels_won": 0.6928,
                "duels_lost": 0.0226,
                "total_contest": 0.1273,
                "won_contest": 0.1273,
                "fouls": 0.1479,
                "fouls_drawn": 0.2563,
                "total_own_half_passes": 15.1054,
                "accurate_own_half_passes": 13.0467
              },
              "params": {
                "blend_weight": 0.0138,
                "history_matches": 42,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.3167,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Osasuna"
              },
              "changes": [
                {
                  "stat": "saves",
                  "before": 2.6143,
                  "after": 2.5825
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 28.5 to 4.4 expected minutes (appearance prob 0.13)",
              "stats": {
                "saves": 0.398,
                "goals_prevented": -0.0098,
                "rating": 7.0371,
                "minutes": 4.39,
                "total_pass": 3.7576,
                "accurate_pass": 2.6489,
                "total_long_balls": 2.0692,
                "accurate_long_balls": 0.9878,
                "touches": 5.1124,
                "clearances": 0.1495,
                "ball_recovery": 1.1992,
                "high_claims": 0.0898,
                "punches": 0.1139,
                "aerial_won": 0.0245,
                "sweeper_actions": 0.1141,
                "sweeper_accurate": 0.1053,
                "saves_inside_box": 0.1277,
                "possession_lost": 1.1283,
                "duels_won": 0.1068,
                "duels_lost": 0.0035,
                "total_contest": 0.0196,
                "won_contest": 0.0196,
                "fouls": 0.0228,
                "fouls_drawn": 0.0395,
                "total_own_half_passes": 2.3279,
                "accurate_own_half_passes": 2.0107,
                "bench_appearance_probability": 0.131,
                "bench_expected_minutes": 4.39
              },
              "params": {
                "expected_minutes": 4.39,
                "projection_minutes": 28.5,
                "minutes_scale": 0.1541,
                "appearance_probability": 0.131
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.398,
                "goals_prevented": -0.0098,
                "rating": 7.0371,
                "minutes": 4.39,
                "total_pass": 3.7576,
                "accurate_pass": 2.6489,
                "total_long_balls": 2.0692,
                "accurate_long_balls": 0.9878,
                "touches": 5.1124,
                "clearances": 0.1495,
                "ball_recovery": 1.1992,
                "high_claims": 0.0898,
                "punches": 0.1139,
                "aerial_won": 0.0245,
                "sweeper_actions": 0.1141,
                "sweeper_accurate": 0.1053,
                "saves_inside_box": 0.1277,
                "possession_lost": 1.1283,
                "duels_won": 0.1068,
                "duels_lost": 0.0035,
                "total_contest": 0.0196,
                "won_contest": 0.0196,
                "fouls": 0.0228,
                "fouls_drawn": 0.0395,
                "total_own_half_passes": 2.3279,
                "accurate_own_half_passes": 2.0107,
                "bench_appearance_probability": 0.131,
                "bench_expected_minutes": 4.39
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "saves": 0.398,
                "goals_prevented": -0.0098,
                "rating": 7.0371,
                "minutes": 4.39,
                "total_pass": 3.7576,
                "accurate_pass": 2.6489,
                "total_long_balls": 2.0692,
                "accurate_long_balls": 0.9878,
                "touches": 5.1124,
                "clearances": 0.1495,
                "ball_recovery": 1.1992,
                "high_claims": 0.0898,
                "punches": 0.1139,
                "aerial_won": 0.0245,
                "sweeper_actions": 0.1141,
                "sweeper_accurate": 0.1053,
                "saves_inside_box": 0.1277,
                "possession_lost": 1.1283,
                "duels_won": 0.1068,
                "duels_lost": 0.0035,
                "total_contest": 0.0196,
                "won_contest": 0.0196,
                "fouls": 0.0228,
                "fouls_drawn": 0.0395,
                "total_own_half_passes": 2.3279,
                "accurate_own_half_passes": 2.0107,
                "bench_appearance_probability": 0.131,
                "bench_expected_minutes": 4.39,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "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.131,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 79.0)",
              "stats": {
                "saves": 0.398,
                "goals_prevented": -0.0098,
                "rating": 7.0371,
                "minutes": 4.39,
                "total_pass": 3.7576,
                "accurate_pass": 2.6489,
                "total_long_balls": 2.0692,
                "accurate_long_balls": 0.9878,
                "touches": 5.1124,
                "clearances": 0.1495,
                "ball_recovery": 1.1992,
                "high_claims": 0.0898,
                "punches": 0.1139,
                "aerial_won": 0.0245,
                "sweeper_actions": 0.1141,
                "sweeper_accurate": 0.1053,
                "saves_inside_box": 0.1277,
                "possession_lost": 1.1283,
                "duels_won": 0.1068,
                "duels_lost": 0.0035,
                "total_contest": 0.0196,
                "won_contest": 0.0196,
                "fouls": 0.0228,
                "fouls_drawn": 0.0395,
                "total_own_half_passes": 2.3279,
                "accurate_own_half_passes": 2.0107,
                "bench_appearance_probability": 0.131,
                "bench_expected_minutes": 4.39,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "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": 79.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": 1581,
                "fifa_rank": 954.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 79.0
              }
            }
          ]
        },
        "Jorge Herrando": {
          "player_id": 944225,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 5,
          "height": 192,
          "market_value": 3200000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.7396,
            "minutes": 14,
            "total_pass": 6,
            "accurate_pass": 5,
            "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": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 1.1384,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0017,
            "expected_assists": 0.0012,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 1,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.217,
            "bench_expected_minutes": 13.58,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.395,
            "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": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 39,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0027,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 27,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 58,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0048,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 34,
                "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": 16416296,
              "match_date": "2026-08-24",
              "home_team": "Osasuna",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.202,
                "expected_assists": 0.003,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 42,
                "accurate_pass": 33,
                "interceptions": 3,
                "clearances": 7,
                "aerial_won": 4,
                "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": 14083723,
              "match_date": "2026-05-23",
              "home_team": "Getafe",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 68,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.002,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 6,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 8,
                "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": 14083258,
              "match_date": "2026-04-21",
              "home_team": "Athletic Club",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 84,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0029,
                "total_shots": 0,
                "total_pass": 88,
                "accurate_pass": 82,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083172,
              "match_date": "2026-04-12",
              "home_team": "Osasuna",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 45,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0067,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 34,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081809,
              "match_date": "2026-04-05",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 12,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083652,
              "match_date": "2026-03-15",
              "home_team": "Real Sociedad",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 32,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.008,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 18,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081805,
              "match_date": "2026-03-07",
              "home_team": "Osasuna",
              "away_team": "Mallorca",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 77,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0033,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 31,
                "tackles": 4,
                "tackles_won": 2,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083591,
              "match_date": "2026-03-01",
              "home_team": "Valencia",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Valencia",
              "stats": {
                "minutes": 81,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "total_pass": 51,
                "accurate_pass": 47,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 6
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 1616,
            "combined_rank_score": 887.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 657.0,
            "sofascore_rating": 6.7333,
            "sofascore_appearances": 3.0,
            "fifa_rank": 1117.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.7396,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jorge Herrando",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Piotr Parzyszek",
                  "ranking": 1611
                },
                {
                  "player_name": "Khumoyunmirzo Iminov",
                  "ranking": 1612
                },
                {
                  "player_name": "Shakhboz Juraev",
                  "ranking": 1613
                },
                {
                  "player_name": "Nika Kacharava",
                  "ranking": 1614
                },
                {
                  "player_name": "Andrej Stojchevski",
                  "ranking": 1615
                }
              ],
              "lower": [
                {
                  "player_name": "Giorgi Tsitaishvili",
                  "ranking": 1617
                },
                {
                  "player_name": "Rustambek Fomin",
                  "ranking": 1618
                },
                {
                  "player_name": "Khamidullo Abdunabiev",
                  "ranking": 1619
                },
                {
                  "player_name": "Jovani Welch",
                  "ranking": 1620
                },
                {
                  "player_name": "Orlando Galo",
                  "ranking": 1621
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.771,
          "history_matches": 31,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 31,
            "data_confidence": 0.771,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 13.58206294284004,
            "bench_appearance_prob": 0.217,
            "market_value_adjustment": 0.9973,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.14
            },
            "rationale": "Bench projection scaled from XGBoost D_service (31 historical appearances) to 13.6 expected mins (appearance prob 0.22); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 0.3512,
                "tackles": 0.4639,
                "tackles_won": 0.2431,
                "clearances": 1.8118,
                "aerial_won": 0.5373,
                "total_shots": 0.1168,
                "rating": 6.7396,
                "minutes": 24.44,
                "total_pass": 10.9264,
                "accurate_pass": 9.1122,
                "duels_won": 1.681,
                "total_long_balls": 1.1563,
                "accurate_long_balls": 0.5,
                "total_own_half_passes": 5.8748,
                "accurate_own_half_passes": 5.0002,
                "total_opp_half_passes": 5.0516,
                "accurate_opp_half_passes": 4.112,
                "crosses_total": 0.0679,
                "crosses_accurate": 0.0,
                "touches": 15.6342,
                "possession_lost": 2.054,
                "dispossessed": 0.0,
                "duels_lost": 1.4063,
                "aerial_lost": 0.3263,
                "total_contest": 0.094,
                "won_contest": 0.094,
                "ball_recovery": 0.5843,
                "challenges_lost": 0.382,
                "fouls": 0.698,
                "fouls_drawn": 0.2419,
                "blocks": 0.3458,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0031,
                "expected_assists": 0.0021,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.3205,
                "total_progression": 1.04,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1168
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:05:00.533351+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 39.0,
                    "is_starting": true,
                    "weight": 0.151,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Celta Vigo",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.1283,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1091,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Getafe",
                    "minutes": 68.0,
                    "is_starting": true,
                    "weight": 0.0927,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Athletic Club",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.0788,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Real Betis",
                    "minutes": 45.0,
                    "is_starting": true,
                    "weight": 0.067,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-05",
                    "opponent": "Deportivo Alavés",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.0569,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-03-15",
                    "opponent": "Real Sociedad",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.0484,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-03-07",
                    "opponent": "Mallorca",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-03-01",
                    "opponent": "Valencia",
                    "minutes": 81.0,
                    "is_starting": true,
                    "weight": 0.035,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 3.6231,
                  "aerialWon": 1.0444,
                  "totalClearance_p90": 5.3846,
                  "totalTackle": 0.76,
                  "defensive_actions": 1.5053
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.3511580228805542,
                    "model_output": 0.3512,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4758
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0099
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0087
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0076
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0063
                        }
                      ],
                      "others": -0.0166,
                      "total": 0.3512,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.804623
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.025955
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.023545
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.020639
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.017092
                        }
                      ],
                      "others_margin": -0.046136
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.4639323353767395,
                    "model_output": 0.4639,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7568
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0292
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.023
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0213
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0158
                        }
                      ],
                      "others": -0.0815,
                      "total": 0.4639,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.785038
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.047161
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.038776
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.03719
                        },
                        {
                          "name": "defensive_actions",
                          "margin": -0.028536
                        }
                      ],
                      "others_margin": -0.161703
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.2431032359600067,
                    "model_output": 0.2431,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4785
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.02
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0172
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0116
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0104
                        }
                      ],
                      "others": -0.0734,
                      "total": 0.2431,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.821315
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.054819
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.04948
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.034748
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.032464
                        }
                      ],
                      "others_margin": -0.263813
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.8118245601654053,
                    "model_output": 1.8118,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.1138
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1307
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0874
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0844
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0676
                        }
                      ],
                      "others": 0.1228,
                      "total": 1.8118,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.956497
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.094489
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.058516
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.053469
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.040831
                        }
                      ],
                      "others_margin": 0.07017
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.5373141765594482,
                    "model_output": 0.5373,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.8156
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.081
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0293
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0257
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0214
                        }
                      ],
                      "others": 0.0316,
                      "total": 0.5373,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.896975
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.155674
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.059143
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.051689
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.0433
                        }
                      ],
                      "others_margin": 0.060589
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.11675670742988586,
                    "model_output": 0.1168,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1932
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0817
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0134
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0104
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0094
                        }
                      ],
                      "others": -0.0496,
                      "total": 0.1168,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.19319
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.081731
                        },
                        {
                          "name": "rating",
                          "margin": -0.013444
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.010377
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.009418
                        }
                      ],
                      "others_margin": -0.049585
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.7395830154418945,
                    "model_output": 6.7396,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": -0.0217
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0172
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0126
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.011
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0065
                        }
                      ],
                      "others": -0.0143,
                      "total": 6.7396,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.021742
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.017212
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.012572
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.010972
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.006465
                        }
                      ],
                      "others_margin": -0.014229
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 31,
                  "role_matches": 11,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9973, quality 0.440)",
              "stats": {
                "interceptions": 0.3502,
                "tackles": 0.4627,
                "tackles_won": 0.2424,
                "clearances": 1.8069,
                "aerial_won": 0.5359,
                "total_shots": 0.1165,
                "rating": 6.7396,
                "minutes": 24.44,
                "total_pass": 10.8969,
                "accurate_pass": 9.0876,
                "duels_won": 1.6765,
                "total_long_balls": 1.1532,
                "accurate_long_balls": 0.4986,
                "total_own_half_passes": 5.8589,
                "accurate_own_half_passes": 4.9867,
                "total_opp_half_passes": 5.038,
                "accurate_opp_half_passes": 4.1009,
                "crosses_total": 0.0677,
                "crosses_accurate": 0.0,
                "touches": 15.592,
                "possession_lost": 2.0485,
                "dispossessed": 0.0,
                "duels_lost": 1.4025,
                "aerial_lost": 0.3254,
                "total_contest": 0.0937,
                "won_contest": 0.0937,
                "ball_recovery": 0.5827,
                "challenges_lost": 0.381,
                "fouls": 0.6961,
                "fouls_drawn": 0.2412,
                "blocks": 0.3449,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0031,
                "expected_assists": 0.0021,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.3115,
                "total_progression": 1.0372,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1165
              },
              "params": {
                "market_value_eur": 3200000,
                "quality_factor": 0.4399,
                "boost_factor": 0.9973,
                "reference_quality": 0.505,
                "history_matches": 31,
                "history_shrink": 0.1389,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0126)",
              "stats": {
                "interceptions": 0.3507,
                "tackles": 0.4627,
                "tackles_won": 0.241,
                "clearances": 1.8069,
                "aerial_won": 0.5359,
                "total_shots": 0.1184,
                "rating": 6.7396,
                "minutes": 24.44,
                "total_pass": 10.8969,
                "accurate_pass": 9.0876,
                "duels_won": 1.6765,
                "total_long_balls": 1.1532,
                "accurate_long_balls": 0.4986,
                "total_own_half_passes": 5.8589,
                "accurate_own_half_passes": 4.9867,
                "total_opp_half_passes": 5.038,
                "accurate_opp_half_passes": 4.1009,
                "crosses_total": 0.0668,
                "crosses_accurate": 0.0,
                "touches": 15.592,
                "possession_lost": 2.0485,
                "dispossessed": 0.0,
                "duels_lost": 1.4025,
                "aerial_lost": 0.3254,
                "total_contest": 0.0937,
                "won_contest": 0.0937,
                "ball_recovery": 0.5827,
                "challenges_lost": 0.381,
                "fouls": 0.6922,
                "fouls_drawn": 0.2414,
                "blocks": 0.3449,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0031,
                "expected_assists": 0.0021,
                "shots_on_target": 0.0033,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.3115,
                "total_progression": 1.0372,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1165
              },
              "params": {
                "blend_weight": 0.0126,
                "history_matches": 31,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2716,
                "prior_reliability": 0.14,
                "competition": "La Liga",
                "squad": "Osasuna"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 24.4 to 13.6 expected minutes (appearance prob 0.22)",
              "stats": {
                "interceptions": 0.1949,
                "tackles": 0.2571,
                "tackles_won": 0.1339,
                "clearances": 1.0042,
                "aerial_won": 0.2978,
                "total_shots": 0.0666,
                "rating": 6.7396,
                "minutes": 13.58,
                "total_pass": 6.0557,
                "accurate_pass": 5.0503,
                "duels_won": 0.9317,
                "total_long_balls": 0.6409,
                "accurate_long_balls": 0.2771,
                "total_own_half_passes": 3.256,
                "accurate_own_half_passes": 2.7713,
                "total_opp_half_passes": 2.7998,
                "accurate_opp_half_passes": 2.279,
                "crosses_total": 0.0371,
                "crosses_accurate": 0.0,
                "touches": 8.665,
                "possession_lost": 1.1384,
                "dispossessed": 0.0,
                "duels_lost": 0.7794,
                "aerial_lost": 0.3254,
                "total_contest": 0.0521,
                "won_contest": 0.0521,
                "ball_recovery": 0.3238,
                "challenges_lost": 0.381,
                "fouls": 0.3847,
                "fouls_drawn": 0.1342,
                "blocks": 0.1917,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0017,
                "expected_assists": 0.0012,
                "shots_on_target": 0.0018,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8403,
                "total_progression": 0.5764,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0647,
                "bench_appearance_probability": 0.217,
                "bench_expected_minutes": 13.58
              },
              "params": {
                "expected_minutes": 13.58,
                "projection_minutes": 24.44,
                "minutes_scale": 0.5557,
                "appearance_probability": 0.217
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.1949,
                "tackles": 0.2571,
                "tackles_won": 0.1339,
                "clearances": 1.0042,
                "aerial_won": 0.2978,
                "total_shots": 0.0666,
                "rating": 6.7396,
                "minutes": 13.58,
                "total_pass": 6.0557,
                "accurate_pass": 5.0503,
                "duels_won": 0.9317,
                "total_long_balls": 0.6409,
                "accurate_long_balls": 0.2771,
                "total_own_half_passes": 3.256,
                "accurate_own_half_passes": 2.7713,
                "total_opp_half_passes": 2.7998,
                "accurate_opp_half_passes": 2.279,
                "crosses_total": 0.0371,
                "crosses_accurate": 0.0,
                "touches": 8.665,
                "possession_lost": 1.1384,
                "dispossessed": 0.0,
                "duels_lost": 0.7794,
                "aerial_lost": 0.3254,
                "total_contest": 0.0521,
                "won_contest": 0.0521,
                "ball_recovery": 0.3238,
                "challenges_lost": 0.381,
                "fouls": 0.3847,
                "fouls_drawn": 0.1342,
                "blocks": 0.1917,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0017,
                "expected_assists": 0.0012,
                "shots_on_target": 0.0018,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8403,
                "total_progression": 0.5764,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0647,
                "bench_appearance_probability": 0.217,
                "bench_expected_minutes": 13.58
              },
              "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.1949,
                "tackles": 0.2571,
                "tackles_won": 0.1339,
                "clearances": 1.0042,
                "aerial_won": 0.2978,
                "total_shots": 0.0666,
                "rating": 6.7396,
                "minutes": 13.58,
                "total_pass": 6.0557,
                "accurate_pass": 5.0503,
                "duels_won": 0.9317,
                "total_long_balls": 0.6409,
                "accurate_long_balls": 0.2771,
                "total_own_half_passes": 3.256,
                "accurate_own_half_passes": 2.7713,
                "total_opp_half_passes": 2.7998,
                "accurate_opp_half_passes": 2.279,
                "crosses_total": 0.0371,
                "crosses_accurate": 0.0,
                "touches": 8.665,
                "possession_lost": 1.1384,
                "dispossessed": 0.0,
                "duels_lost": 0.7794,
                "aerial_lost": 0.3254,
                "total_contest": 0.0521,
                "won_contest": 0.0521,
                "ball_recovery": 0.3238,
                "challenges_lost": 0.381,
                "fouls": 0.3847,
                "fouls_drawn": 0.1342,
                "blocks": 0.1917,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0017,
                "expected_assists": 0.0012,
                "shots_on_target": 0.0018,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8403,
                "total_progression": 0.5764,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0647,
                "bench_appearance_probability": 0.217,
                "bench_expected_minutes": 13.58,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "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.217,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 78.0)",
              "stats": {
                "interceptions": 0.1949,
                "tackles": 0.2571,
                "tackles_won": 0.1339,
                "clearances": 1.0042,
                "aerial_won": 0.2978,
                "total_shots": 0.0666,
                "rating": 6.7396,
                "minutes": 13.58,
                "total_pass": 6.0557,
                "accurate_pass": 5.0503,
                "duels_won": 0.9317,
                "total_long_balls": 0.6409,
                "accurate_long_balls": 0.2771,
                "total_own_half_passes": 3.256,
                "accurate_own_half_passes": 2.7713,
                "total_opp_half_passes": 2.7998,
                "accurate_opp_half_passes": 2.279,
                "crosses_total": 0.0371,
                "crosses_accurate": 0.0,
                "touches": 8.665,
                "possession_lost": 1.1384,
                "dispossessed": 0.0,
                "duels_lost": 0.7794,
                "aerial_lost": 0.3254,
                "total_contest": 0.0521,
                "won_contest": 0.0521,
                "ball_recovery": 0.3238,
                "challenges_lost": 0.381,
                "fouls": 0.3847,
                "fouls_drawn": 0.1342,
                "blocks": 0.1917,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0017,
                "expected_assists": 0.0012,
                "shots_on_target": 0.0018,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 1.8403,
                "total_progression": 0.5764,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.0647,
                "bench_appearance_probability": 0.217,
                "bench_expected_minutes": 13.58,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "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_filled",
                "ranking_status": "combined",
                "global_player_rank": 1616,
                "fifa_rank": 1117.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            }
          ]
        },
        "Valentin Rosier": {
          "player_id": 842419,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 19,
          "height": 175,
          "market_value": 3100000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.7494,
            "minutes": 14,
            "total_pass": 21,
            "accurate_pass": 17,
            "duels_won": 2,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 9,
            "accurate_own_half_passes": 8,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 9,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 35,
            "possession_lost": 6.1305,
            "dispossessed": 0.7848,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0227,
            "goals": 0,
            "assist_rate": 0.0008,
            "assists": 0,
            "expected_goals": 0.0204,
            "expected_assists": 0.0431,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0122,
            "ball_carries": 9,
            "total_progression": 39,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.299,
            "bench_expected_minutes": 13.58,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.395,
            "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": 16421054,
              "match_date": "2026-10-11",
              "home_team": "Real Betis",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 27,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0271,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 14,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083723,
              "match_date": "2026-05-23",
              "home_team": "Getafe",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0256,
                "expected_assists": 0.0372,
                "total_shots": 1,
                "total_pass": 22,
                "accurate_pass": 17,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 78,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0488,
                "expected_assists": 0.2823,
                "total_shots": 1,
                "total_pass": 38,
                "accurate_pass": 34,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083634,
              "match_date": "2026-05-12",
              "home_team": "Osasuna",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1105,
                "expected_assists": 0.0625,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 58,
                "accurate_pass": 52,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083568,
              "match_date": "2026-05-08",
              "home_team": "Levante UD",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0025,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 22,
                "tackles": 3,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083495,
              "match_date": "2026-05-02",
              "home_team": "Osasuna",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0039,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 11,
                "interceptions": 3,
                "clearances": 9,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083231,
              "match_date": "2026-04-26",
              "home_team": "Osasuna",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0196,
                "expected_assists": 0.0716,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 38,
                "accurate_pass": 29,
                "tackles": 4,
                "tackles_won": 4,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 9,
                "ball_recovery": 5
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083258,
              "match_date": "2026-04-21",
              "home_team": "Athletic Club",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0347,
                "expected_assists": 0.0462,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 53,
                "accurate_pass": 47,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 6
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083172,
              "match_date": "2026-04-12",
              "home_team": "Osasuna",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.021,
                "expected_assists": 0.0594,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 40,
                "accurate_pass": 31,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081809,
              "match_date": "2026-04-05",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1836,
                "expected_assists": 0.0215,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 28,
                "accurate_pass": 26,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 2941,
            "combined_rank_score": 980.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 726.0,
            "sofascore_rating": 6.6774,
            "sofascore_appearances": 31.0,
            "fifa_rank": 1235.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7494,
            "source_file": "data/player_rankings.csv",
            "player_name": "Valentin Rosier",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Tomáš Souček",
                  "ranking": 2936
                },
                {
                  "player_name": "Jean-Mattéo Bahoya",
                  "ranking": 2937
                },
                {
                  "player_name": "Íñigo Lekue",
                  "ranking": 2938
                },
                {
                  "player_name": "Fabio Luque Notaro",
                  "ranking": 2939
                },
                {
                  "player_name": "Stefan Aškovski",
                  "ranking": 2940
                }
              ],
              "lower": [
                {
                  "player_name": "Jefferson Lerma",
                  "ranking": 2942
                },
                {
                  "player_name": "Lorenzo Capicchioni",
                  "ranking": 2943
                },
                {
                  "player_name": "Gustav Isaksen",
                  "ranking": 2944
                },
                {
                  "player_name": "Sandro Wolfinger",
                  "ranking": 2945
                },
                {
                  "player_name": "Léyser Chaverra",
                  "ranking": 2946
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 32,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 32,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 13.577143516617772,
            "bench_appearance_prob": 0.29896106893717145,
            "market_value_adjustment": 0.9973,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost D_service (32 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.5343,
                "tackles": 0.7152,
                "tackles_won": 0.4043,
                "clearances": 1.1268,
                "aerial_won": 0.3111,
                "total_shots": 0.3966,
                "rating": 6.7494,
                "minutes": 21.12,
                "total_pass": 32.4802,
                "accurate_pass": 27.1319,
                "duels_won": 3.7943,
                "total_long_balls": 3.8195,
                "accurate_long_balls": 1.4784,
                "total_own_half_passes": 14.1497,
                "accurate_own_half_passes": 12.9439,
                "total_opp_half_passes": 18.3305,
                "accurate_opp_half_passes": 14.188,
                "crosses_total": 1.4232,
                "crosses_accurate": 0.4258,
                "touches": 53.9259,
                "possession_lost": 9.5622,
                "dispossessed": 0.7869,
                "duels_lost": 3.0216,
                "aerial_lost": 0.4823,
                "total_contest": 1.2556,
                "won_contest": 1.014,
                "ball_recovery": 4.26,
                "challenges_lost": 0.6047,
                "fouls": 0.9077,
                "fouls_drawn": 0.5887,
                "blocks": 0.2137,
                "goals": 0.0354,
                "goal_rate": 0.0354,
                "assists": 0.0012,
                "assist_rate": 0.0012,
                "expected_goals": 0.0319,
                "expected_assists": 0.0672,
                "shots_on_target": 0.0899,
                "big_chances_created": 0.1241,
                "xgot": 0.0191,
                "ball_carries": 13.2727,
                "total_progression": 60.3367,
                "progressive_carries": 1.5443,
                "key_pass": 0.503,
                "shots_off_target": 0.3067
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:05:00.533351+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Betis",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.1508,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1282,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Espanyol",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.109,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0926,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-05-08",
                    "opponent": "Levante UD",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0787,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0669,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Sevilla",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0569,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Athletic Club",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0484,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-04-12",
                    "opponent": "Real Betis",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0411,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-05",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 3.2337,
                  "aerialWon": 0.697,
                  "totalClearance_p90": 4.03,
                  "totalTackle": 1.4945,
                  "defensive_actions": 2.9665
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.5342589020729065,
                    "model_output": 0.5343,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4616
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0599
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0265
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0149
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0125
                        }
                      ],
                      "others": 0.0212,
                      "total": 0.5343,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.768374
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.139835
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.056171
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.030168
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.02474
                        }
                      ],
                      "others_margin": 0.040392
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.7151890397071838,
                    "model_output": 0.7152,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7735
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.025
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0231
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0184
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0182
                        }
                      ],
                      "others": 0.0125,
                      "total": 0.7152,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.811668
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.039704
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.035327
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.027311
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.026191
                        }
                      ],
                      "others_margin": 0.01754
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.40431541204452515,
                    "model_output": 0.4043,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4997
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0201
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0126
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0125
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": -0.0101
                        }
                      ],
                      "others": 0.0399,
                      "total": 0.4043,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.879579
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.055062
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.034302
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.034068
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": -0.027382
                        }
                      ],
                      "others_margin": 0.104201
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.1267880201339722,
                    "model_output": 1.1268,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.0176
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.1048
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0538
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.044
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0403
                        }
                      ],
                      "others": -0.153,
                      "total": 1.1268,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.886112
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.076969
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": 0.040252
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.032789
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.031009
                        }
                      ],
                      "others_margin": -0.12736
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.31105732917785645,
                    "model_output": 0.3111,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7981
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1496
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0257
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0181
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.017
                        }
                      ],
                      "others": -0.0577,
                      "total": 0.3111,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.866255
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.298709
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.061802
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.045754
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.04514
                        }
                      ],
                      "others_margin": -0.170252
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.396564245223999,
                    "model_output": 0.3966,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2567
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1435
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0193
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0153
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0149
                        }
                      ],
                      "others": 0.0156,
                      "total": 0.3966,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.256732
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.143491
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.019325
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.015326
                        },
                        {
                          "name": "rating",
                          "margin": -0.014932
                        }
                      ],
                      "others_margin": 0.015586
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.749391078948975,
                    "model_output": 6.7494,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0235
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0178
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0171
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0109
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0106
                        }
                      ],
                      "others": -0.0024,
                      "total": 6.7494,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": 0.023509
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.017757
                        },
                        {
                          "name": "rating",
                          "margin": -0.017096
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.01095
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.010611
                        }
                      ],
                      "others_margin": -0.002407
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 32,
                  "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.9973, quality 0.439)",
              "stats": {
                "interceptions": 0.5328,
                "tackles": 0.7133,
                "tackles_won": 0.4032,
                "clearances": 1.1237,
                "aerial_won": 0.3102,
                "total_shots": 0.3956,
                "rating": 6.7494,
                "minutes": 21.12,
                "total_pass": 32.3925,
                "accurate_pass": 27.0586,
                "duels_won": 3.7841,
                "total_long_balls": 3.8092,
                "accurate_long_balls": 1.4744,
                "total_own_half_passes": 14.1115,
                "accurate_own_half_passes": 12.909,
                "total_opp_half_passes": 18.281,
                "accurate_opp_half_passes": 14.1497,
                "crosses_total": 1.4194,
                "crosses_accurate": 0.4247,
                "touches": 53.7803,
                "possession_lost": 9.5364,
                "dispossessed": 0.7848,
                "duels_lost": 3.0134,
                "aerial_lost": 0.481,
                "total_contest": 1.2522,
                "won_contest": 1.0113,
                "ball_recovery": 4.2485,
                "challenges_lost": 0.6031,
                "fouls": 0.9052,
                "fouls_drawn": 0.5871,
                "blocks": 0.2131,
                "goals": 0.0353,
                "goal_rate": 0.0353,
                "assists": 0.0012,
                "assist_rate": 0.0012,
                "expected_goals": 0.0318,
                "expected_assists": 0.067,
                "shots_on_target": 0.0897,
                "big_chances_created": 0.1238,
                "xgot": 0.019,
                "ball_carries": 13.2369,
                "total_progression": 60.1738,
                "progressive_carries": 1.5401,
                "key_pass": 0.5016,
                "shots_off_target": 0.3059
              },
              "params": {
                "market_value_eur": 3100000,
                "quality_factor": 0.4387,
                "boost_factor": 0.9973,
                "reference_quality": 0.505,
                "history_matches": 32,
                "history_shrink": 0.1351,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 21.1 to 13.6 expected minutes (appearance prob 0.30)",
              "stats": {
                "interceptions": 0.3425,
                "tackles": 0.4586,
                "tackles_won": 0.2592,
                "clearances": 0.7224,
                "aerial_won": 0.1994,
                "total_shots": 0.2544,
                "rating": 6.7494,
                "minutes": 13.58,
                "total_pass": 20.8238,
                "accurate_pass": 17.3948,
                "duels_won": 2.4326,
                "total_long_balls": 2.4488,
                "accurate_long_balls": 0.9478,
                "total_own_half_passes": 9.0717,
                "accurate_own_half_passes": 8.2986,
                "total_opp_half_passes": 11.7521,
                "accurate_opp_half_passes": 9.0962,
                "crosses_total": 0.9125,
                "crosses_accurate": 0.273,
                "touches": 34.5731,
                "possession_lost": 6.1305,
                "dispossessed": 0.7848,
                "duels_lost": 1.9372,
                "aerial_lost": 0.481,
                "total_contest": 0.805,
                "won_contest": 0.6501,
                "ball_recovery": 2.7312,
                "challenges_lost": 0.6031,
                "fouls": 0.5819,
                "fouls_drawn": 0.3774,
                "blocks": 0.137,
                "goals": 0.0227,
                "goal_rate": 0.0227,
                "assists": 0.0008,
                "assist_rate": 0.0008,
                "expected_goals": 0.0204,
                "expected_assists": 0.0431,
                "shots_on_target": 0.0577,
                "big_chances_created": 0.0796,
                "xgot": 0.0122,
                "ball_carries": 8.5094,
                "total_progression": 38.6832,
                "progressive_carries": 0.9901,
                "key_pass": 0.3225,
                "shots_off_target": 0.1967,
                "bench_appearance_probability": 0.299,
                "bench_expected_minutes": 13.58
              },
              "params": {
                "expected_minutes": 13.58,
                "projection_minutes": 21.12,
                "minutes_scale": 0.6429,
                "appearance_probability": 0.299
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.3425,
                "tackles": 0.4586,
                "tackles_won": 0.2592,
                "clearances": 0.7224,
                "aerial_won": 0.1994,
                "total_shots": 0.2544,
                "rating": 6.7494,
                "minutes": 13.58,
                "total_pass": 20.8238,
                "accurate_pass": 17.3948,
                "duels_won": 2.4326,
                "total_long_balls": 2.4488,
                "accurate_long_balls": 0.9478,
                "total_own_half_passes": 9.0717,
                "accurate_own_half_passes": 8.2986,
                "total_opp_half_passes": 11.7521,
                "accurate_opp_half_passes": 9.0962,
                "crosses_total": 0.9125,
                "crosses_accurate": 0.273,
                "touches": 34.5731,
                "possession_lost": 6.1305,
                "dispossessed": 0.7848,
                "duels_lost": 1.9372,
                "aerial_lost": 0.481,
                "total_contest": 0.805,
                "won_contest": 0.6501,
                "ball_recovery": 2.7312,
                "challenges_lost": 0.6031,
                "fouls": 0.5819,
                "fouls_drawn": 0.3774,
                "blocks": 0.137,
                "goals": 0.0227,
                "goal_rate": 0.0227,
                "assists": 0.0008,
                "assist_rate": 0.0008,
                "expected_goals": 0.0204,
                "expected_assists": 0.0431,
                "shots_on_target": 0.0577,
                "big_chances_created": 0.0796,
                "xgot": 0.0122,
                "ball_carries": 8.5094,
                "total_progression": 38.6832,
                "progressive_carries": 0.9901,
                "key_pass": 0.3225,
                "shots_off_target": 0.1967,
                "bench_appearance_probability": 0.299,
                "bench_expected_minutes": 13.58
              },
              "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.3425,
                "tackles": 0.4586,
                "tackles_won": 0.2592,
                "clearances": 0.7224,
                "aerial_won": 0.1994,
                "total_shots": 0.2544,
                "rating": 6.7494,
                "minutes": 13.58,
                "total_pass": 20.8238,
                "accurate_pass": 17.3948,
                "duels_won": 2.4326,
                "total_long_balls": 2.4488,
                "accurate_long_balls": 0.9478,
                "total_own_half_passes": 9.0717,
                "accurate_own_half_passes": 8.2986,
                "total_opp_half_passes": 11.7521,
                "accurate_opp_half_passes": 9.0962,
                "crosses_total": 0.9125,
                "crosses_accurate": 0.273,
                "touches": 34.5731,
                "possession_lost": 6.1305,
                "dispossessed": 0.7848,
                "duels_lost": 1.9372,
                "aerial_lost": 0.481,
                "total_contest": 0.805,
                "won_contest": 0.6501,
                "ball_recovery": 2.7312,
                "challenges_lost": 0.6031,
                "fouls": 0.5819,
                "fouls_drawn": 0.3774,
                "blocks": 0.137,
                "goal_rate": 0.0227,
                "goals": 0,
                "assist_rate": 0.0008,
                "assists": 0,
                "expected_goals": 0.0204,
                "expected_assists": 0.0431,
                "shots_on_target": 0.0577,
                "big_chances_created": 0.0796,
                "xgot": 0.0122,
                "ball_carries": 8.5094,
                "total_progression": 38.6832,
                "progressive_carries": 0.9901,
                "key_pass": 0.3225,
                "shots_off_target": 0.1967,
                "bench_appearance_probability": 0.299,
                "bench_expected_minutes": 13.58,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "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.299,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 78.0)",
              "stats": {
                "interceptions": 0.3425,
                "tackles": 0.4586,
                "tackles_won": 0.2592,
                "clearances": 0.7224,
                "aerial_won": 0.1994,
                "total_shots": 0.2544,
                "rating": 6.7494,
                "minutes": 13.58,
                "total_pass": 20.8238,
                "accurate_pass": 17.3948,
                "duels_won": 2.4326,
                "total_long_balls": 2.4488,
                "accurate_long_balls": 0.9478,
                "total_own_half_passes": 9.0717,
                "accurate_own_half_passes": 8.2986,
                "total_opp_half_passes": 11.7521,
                "accurate_opp_half_passes": 9.0962,
                "crosses_total": 0.9125,
                "crosses_accurate": 0.273,
                "touches": 34.5731,
                "possession_lost": 6.1305,
                "dispossessed": 0.7848,
                "duels_lost": 1.9372,
                "aerial_lost": 0.481,
                "total_contest": 0.805,
                "won_contest": 0.6501,
                "ball_recovery": 2.7312,
                "challenges_lost": 0.6031,
                "fouls": 0.5819,
                "fouls_drawn": 0.3774,
                "blocks": 0.137,
                "goal_rate": 0.0227,
                "goals": 0,
                "assist_rate": 0.0008,
                "assists": 0,
                "expected_goals": 0.0204,
                "expected_assists": 0.0431,
                "shots_on_target": 0.0577,
                "big_chances_created": 0.0796,
                "xgot": 0.0122,
                "ball_carries": 8.5094,
                "total_progression": 38.6832,
                "progressive_carries": 0.9901,
                "key_pass": 0.3225,
                "shots_off_target": 0.1967,
                "bench_appearance_probability": 0.299,
                "bench_expected_minutes": 13.58,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "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": 11,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2941,
                "fifa_rank": 1235.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            }
          ]
        },
        "Aimar Oroz": {
          "player_id": 985329,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 10,
          "height": 177,
          "market_value": 6900000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0375,
            "assist_rate": 0.043,
            "assists": 0,
            "expected_goals": 0.0318,
            "goal_rate": 0.0325,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.7016,
            "minutes": 15,
            "total_pass": 7,
            "accurate_pass": 6,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 2.5931,
            "dispossessed": 0.6518,
            "duels_lost": 2,
            "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": 3,
            "total_progression": 14,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.439,
            "bench_expected_minutes": 14.92,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.395,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 71,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0876,
                "expected_assists": 0.0044,
                "total_shots": 1,
                "total_pass": 24,
                "accurate_pass": 18,
                "key_pass": 1,
                "tackles": 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": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.003,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416296,
              "match_date": "2026-08-24",
              "home_team": "Osasuna",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 72,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0231,
                "expected_assists": 0.1317,
                "total_shots": 1,
                "total_pass": 19,
                "accurate_pass": 15,
                "key_pass": 3,
                "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": 14083723,
              "match_date": "2026-05-23",
              "home_team": "Getafe",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 82,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0735,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 10,
                "key_pass": 2,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 10,
                "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": 14083696,
              "match_date": "2026-05-17",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 58,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.158,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 19,
                "key_pass": 1,
                "aerial_won": 4,
                "duels_won": 7,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083634,
              "match_date": "2026-05-12",
              "home_team": "Osasuna",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 18,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0449,
                "expected_assists": 0.0141,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 10,
                "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": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083568,
              "match_date": "2026-05-08",
              "home_team": "Levante UD",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 44,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0182,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 15,
                "clearances": 1,
                "duels_won": 6
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083495,
              "match_date": "2026-05-02",
              "home_team": "Osasuna",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 20,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0342,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 7,
                "key_pass": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083231,
              "match_date": "2026-04-26",
              "home_team": "Osasuna",
              "away_team": "Sevilla",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 62,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0869,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 19,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083258,
              "match_date": "2026-04-21",
              "home_team": "Athletic Club",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 78,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1069,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 23,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3320,
            "combined_rank_score": 1277.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 578.0,
            "sofascore_rating": 6.8,
            "sofascore_appearances": 31.0,
            "fifa_rank": 1976.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7016,
            "source_file": "data/player_rankings.csv",
            "player_name": "Aimar Oroz",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Rio Ngumoha",
                  "ranking": 3315
                },
                {
                  "player_name": "Kyle Walker-Peters",
                  "ranking": 3316
                },
                {
                  "player_name": "Alberto Costa",
                  "ranking": 3317
                },
                {
                  "player_name": "Tajon Buchanan",
                  "ranking": 3318
                },
                {
                  "player_name": "Dion Drena Beljo",
                  "ranking": 3319
                }
              ],
              "lower": [
                {
                  "player_name": "Konstantinos Koulierakis",
                  "ranking": 3321
                },
                {
                  "player_name": "Óliver Torres",
                  "ranking": 3322
                },
                {
                  "player_name": "Daley Blind",
                  "ranking": 3323
                },
                {
                  "player_name": "Williot Swedberg",
                  "ranking": 3324
                },
                {
                  "player_name": "Leandro Cabrera",
                  "ranking": 3325
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.767,
          "history_matches": 34,
          "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": 34,
            "data_confidence": 0.767,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 14.92,
            "bench_appearance_prob": 0.439,
            "market_value_adjustment": 0.9992,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 2.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 9.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.1133
            },
            "rationale": "Bench projection scaled from XGBoost M_service (34 historical appearances) to 14.9 expected mins (appearance prob 0.44); FBref playing time empirical prior: 1.0 sub appearances, 9.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.561,
                "expected_assists": 0.0495,
                "assists": 0.0572,
                "assist_rate": 0.0572,
                "expected_goals": 0.042,
                "goals": 0.0434,
                "goal_rate": 0.0434,
                "shots_on_target": 0.1913,
                "total_shots": 0.4053,
                "rating": 6.7016,
                "minutes": 19.67,
                "total_pass": 9.4978,
                "accurate_pass": 7.6098,
                "duels_won": 1.5178,
                "total_long_balls": 0.4066,
                "accurate_long_balls": 0.2326,
                "total_own_half_passes": 2.6763,
                "accurate_own_half_passes": 2.1397,
                "total_opp_half_passes": 6.8215,
                "accurate_opp_half_passes": 5.4701,
                "crosses_total": 0.2997,
                "crosses_accurate": 0.174,
                "touches": 13.7675,
                "possession_lost": 3.4213,
                "dispossessed": 0.6523,
                "duels_lost": 2.5555,
                "aerial_won": 0.0,
                "aerial_lost": 0.4148,
                "interceptions": 0.0,
                "tackles_won": 0.1479,
                "tackles": 0.2958,
                "clearances": 0.0,
                "total_contest": 0.2408,
                "won_contest": 0.2408,
                "challenges_lost": 0.7881,
                "fouls": 0.7003,
                "fouls_drawn": 0.9812,
                "blocks": 0.0,
                "big_chances_created": 0.1257,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7322,
                "total_progression": 18.6315,
                "progressive_carries": 0.6993,
                "shots_off_target": 0.214
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-17T10:05:52.581708+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.1506,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Celta Vigo",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.128,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Levante UD",
                    "minutes": 72.0,
                    "is_starting": true,
                    "weight": 0.1088,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Getafe",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.0925,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Espanyol",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.0786,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-05-12",
                    "opponent": "Atlético Madrid",
                    "minutes": 18.0,
                    "is_starting": false,
                    "weight": 0.0668,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-05-08",
                    "opponent": "Levante UD",
                    "minutes": 44.0,
                    "is_starting": true,
                    "weight": 0.0568,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-05-02",
                    "opponent": "FC Barcelona",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.0483,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-04-26",
                    "opponent": "Sevilla",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.041,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-04-21",
                    "opponent": "Athletic Club",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.0349,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.5785,
                  "creative_index": 0.4815,
                  "expectedGoals": 0.0335,
                  "expectedAssists": 0.0682,
                  "onTargetScoringAttempt": 0.0348
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5610253810882568,
                    "model_output": 0.561,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3883
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.016
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.016
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0154
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0141
                        }
                      ],
                      "others": 0.0268,
                      "total": 0.561,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.570696
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.03119
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.031147
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": 0.030152
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": 0.026698
                        }
                      ],
                      "others_margin": 0.049004
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.049489591270685196,
                    "model_output": 0.0495,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0373
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0033
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0023
                        },
                        {
                          "name": "duelWon",
                          "contribution": -0.0022
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0012
                        }
                      ],
                      "others": -0.001,
                      "total": 0.0495,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.572203
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": 0.066307
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.042713
                        },
                        {
                          "name": "duelWon",
                          "margin": -0.042582
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.024212
                        }
                      ],
                      "others_margin": -0.018414
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.057222429662942886,
                    "model_output": 0.0572,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0215
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0054
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0054
                        },
                        {
                          "name": "totalCross",
                          "contribution": 0.0046
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0038
                        }
                      ],
                      "others": -0.0093,
                      "total": 0.0572,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.282368
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.078976
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.078467
                        },
                        {
                          "name": "totalCross",
                          "margin": 0.067261
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.054851
                        }
                      ],
                      "others_margin": -0.152288
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04197456315159798,
                    "model_output": 0.042,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0417
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0049
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0027
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0021
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0013
                        }
                      ],
                      "others": 0.0004,
                      "total": 0.042,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.58382
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.098565
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.058213
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.048211
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.029733
                        }
                      ],
                      "others_margin": 0.009178
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.04335824400186539,
                    "model_output": 0.0434,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0406
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0084
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.004
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0039
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": 0.0021
                        }
                      ],
                      "others": -0.0076,
                      "total": 0.0434,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.537251
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.159972
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.079199
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.077496
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "margin": 0.041485
                        }
                      ],
                      "others_margin": -0.159277
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.19129498302936554,
                    "model_output": 0.1913,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1314
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0373
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0076
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0072
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0062
                        }
                      ],
                      "others": 0.0257,
                      "total": 0.1913,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.51643
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.213223
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.047092
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.042821
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.036925
                        }
                      ],
                      "others_margin": 0.144415
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.40530556440353394,
                    "model_output": 0.4053,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3613
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2271
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0295
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0278
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0211
                        }
                      ],
                      "others": 0.0344,
                      "total": 0.4053,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.361346
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.227112
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.029546
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.027848
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.021074
                        }
                      ],
                      "others_margin": 0.034548
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.701625347137451,
                    "model_output": 6.7016,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0786
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0288
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0233
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0154
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0048
                        }
                      ],
                      "others": -0.0006,
                      "total": 6.7016,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.078602
                        },
                        {
                          "name": "rating",
                          "margin": -0.028815
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.02335
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.015432
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.004755
                        }
                      ],
                      "others_margin": -0.000477
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 34,
                  "role_matches": 6,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9992, quality 0.485)",
              "stats": {
                "key_pass": 0.5606,
                "expected_assists": 0.0494,
                "assists": 0.0572,
                "assist_rate": 0.0572,
                "expected_goals": 0.0419,
                "goals": 0.0433,
                "goal_rate": 0.0433,
                "shots_on_target": 0.1911,
                "total_shots": 0.405,
                "rating": 6.7016,
                "minutes": 19.67,
                "total_pass": 9.4902,
                "accurate_pass": 7.6037,
                "duels_won": 1.5166,
                "total_long_balls": 0.4063,
                "accurate_long_balls": 0.2324,
                "total_own_half_passes": 2.6742,
                "accurate_own_half_passes": 2.138,
                "total_opp_half_passes": 6.816,
                "accurate_opp_half_passes": 5.4657,
                "crosses_total": 0.2995,
                "crosses_accurate": 0.1739,
                "touches": 13.7565,
                "possession_lost": 3.4186,
                "dispossessed": 0.6518,
                "duels_lost": 2.5535,
                "aerial_won": 0.0,
                "aerial_lost": 0.4145,
                "interceptions": 0.0,
                "tackles_won": 0.1478,
                "tackles": 0.2956,
                "clearances": 0.0,
                "total_contest": 0.2406,
                "won_contest": 0.2406,
                "challenges_lost": 0.7875,
                "fouls": 0.6997,
                "fouls_drawn": 0.9804,
                "blocks": 0.0,
                "big_chances_created": 0.1256,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7292,
                "total_progression": 18.6166,
                "progressive_carries": 0.6987,
                "shots_off_target": 0.2138
              },
              "params": {
                "market_value_eur": 6900000,
                "quality_factor": 0.4854,
                "boost_factor": 0.9992,
                "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.0094)",
              "stats": {
                "key_pass": 0.5606,
                "expected_assists": 0.0494,
                "assists": 0.0567,
                "assist_rate": 0.0567,
                "expected_goals": 0.0419,
                "goals": 0.0429,
                "goal_rate": 0.0429,
                "shots_on_target": 0.1893,
                "total_shots": 0.4037,
                "rating": 6.7016,
                "minutes": 19.67,
                "total_pass": 9.4902,
                "accurate_pass": 7.6037,
                "duels_won": 1.5166,
                "total_long_balls": 0.4063,
                "accurate_long_balls": 0.2324,
                "total_own_half_passes": 2.6742,
                "accurate_own_half_passes": 2.138,
                "total_opp_half_passes": 6.816,
                "accurate_opp_half_passes": 5.4657,
                "crosses_total": 0.3003,
                "crosses_accurate": 0.1739,
                "touches": 13.7565,
                "possession_lost": 3.4186,
                "dispossessed": 0.6518,
                "duels_lost": 2.5535,
                "aerial_won": 0.0,
                "aerial_lost": 0.4145,
                "interceptions": 0.0,
                "tackles_won": 0.1464,
                "tackles": 0.2956,
                "clearances": 0.0,
                "total_contest": 0.2406,
                "won_contest": 0.2406,
                "challenges_lost": 0.7875,
                "fouls": 0.6955,
                "fouls_drawn": 0.9784,
                "blocks": 0.0,
                "big_chances_created": 0.1256,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 3.7292,
                "total_progression": 18.6166,
                "progressive_carries": 0.6987,
                "shots_off_target": 0.2138
              },
              "params": {
                "blend_weight": 0.0094,
                "history_matches": 34,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2186,
                "prior_reliability": 0.1133,
                "competition": "La Liga",
                "squad": "Osasuna"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 19.7 to 14.9 expected minutes (appearance prob 0.44)",
              "stats": {
                "key_pass": 0.4252,
                "expected_assists": 0.0375,
                "assists": 0.043,
                "assist_rate": 0.043,
                "expected_goals": 0.0318,
                "goals": 0.0325,
                "goal_rate": 0.0325,
                "shots_on_target": 0.1436,
                "total_shots": 0.3062,
                "rating": 6.7016,
                "minutes": 14.92,
                "total_pass": 7.1985,
                "accurate_pass": 5.7675,
                "duels_won": 1.1504,
                "total_long_balls": 0.3082,
                "accurate_long_balls": 0.1763,
                "total_own_half_passes": 2.0284,
                "accurate_own_half_passes": 1.6217,
                "total_opp_half_passes": 5.17,
                "accurate_opp_half_passes": 4.1458,
                "crosses_total": 0.2278,
                "crosses_accurate": 0.1319,
                "touches": 10.4345,
                "possession_lost": 2.5931,
                "dispossessed": 0.6518,
                "duels_lost": 1.9369,
                "aerial_won": 0.0,
                "aerial_lost": 0.4145,
                "interceptions": 0.0,
                "tackles_won": 0.111,
                "tackles": 0.2242,
                "clearances": 0.0,
                "total_contest": 0.1825,
                "won_contest": 0.1825,
                "challenges_lost": 0.7875,
                "fouls": 0.5275,
                "fouls_drawn": 0.7421,
                "blocks": 0.0,
                "big_chances_created": 0.0953,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.8287,
                "total_progression": 14.121,
                "progressive_carries": 0.53,
                "shots_off_target": 0.1622,
                "bench_appearance_probability": 0.439,
                "bench_expected_minutes": 14.92
              },
              "params": {
                "expected_minutes": 14.92,
                "projection_minutes": 19.67,
                "minutes_scale": 0.7585,
                "appearance_probability": 0.439
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.4252,
                "expected_assists": 0.0375,
                "assists": 0.043,
                "assist_rate": 0.043,
                "expected_goals": 0.0318,
                "goals": 0.0325,
                "goal_rate": 0.0325,
                "shots_on_target": 0.1436,
                "total_shots": 0.3062,
                "rating": 6.7016,
                "minutes": 14.92,
                "total_pass": 7.1985,
                "accurate_pass": 5.7675,
                "duels_won": 1.1504,
                "total_long_balls": 0.3082,
                "accurate_long_balls": 0.1763,
                "total_own_half_passes": 2.0284,
                "accurate_own_half_passes": 1.6217,
                "total_opp_half_passes": 5.17,
                "accurate_opp_half_passes": 4.1458,
                "crosses_total": 0.2278,
                "crosses_accurate": 0.1319,
                "touches": 10.4345,
                "possession_lost": 2.5931,
                "dispossessed": 0.6518,
                "duels_lost": 1.9369,
                "aerial_won": 0.0,
                "aerial_lost": 0.4145,
                "interceptions": 0.0,
                "tackles_won": 0.111,
                "tackles": 0.2242,
                "clearances": 0.0,
                "total_contest": 0.1825,
                "won_contest": 0.1825,
                "challenges_lost": 0.7875,
                "fouls": 0.5275,
                "fouls_drawn": 0.7421,
                "blocks": 0.0,
                "big_chances_created": 0.0953,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.8287,
                "total_progression": 14.121,
                "progressive_carries": 0.53,
                "shots_off_target": 0.1622,
                "bench_appearance_probability": 0.439,
                "bench_expected_minutes": 14.92
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "key_pass": 0.4252,
                "expected_assists": 0.0375,
                "assist_rate": 0.043,
                "assists": 0,
                "expected_goals": 0.0318,
                "goal_rate": 0.0325,
                "goals": 0,
                "shots_on_target": 0.1436,
                "total_shots": 0.3062,
                "rating": 6.7016,
                "minutes": 14.92,
                "total_pass": 7.1985,
                "accurate_pass": 5.7675,
                "duels_won": 1.1504,
                "total_long_balls": 0.3082,
                "accurate_long_balls": 0.1763,
                "total_own_half_passes": 2.0284,
                "accurate_own_half_passes": 1.6217,
                "total_opp_half_passes": 5.17,
                "accurate_opp_half_passes": 4.1458,
                "crosses_total": 0.2278,
                "crosses_accurate": 0.1319,
                "touches": 10.4345,
                "possession_lost": 2.5931,
                "dispossessed": 0.6518,
                "duels_lost": 1.9369,
                "aerial_won": 0.0,
                "aerial_lost": 0.4145,
                "interceptions": 0.0,
                "tackles_won": 0.111,
                "tackles": 0.2242,
                "clearances": 0.0,
                "total_contest": 0.1825,
                "won_contest": 0.1825,
                "challenges_lost": 0.7875,
                "fouls": 0.5275,
                "fouls_drawn": 0.7421,
                "blocks": 0.0,
                "big_chances_created": 0.0953,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.8287,
                "total_progression": 14.121,
                "progressive_carries": 0.53,
                "shots_off_target": 0.1622,
                "bench_appearance_probability": 0.439,
                "bench_expected_minutes": 14.92,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "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.439,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 76.0)",
              "stats": {
                "key_pass": 0.4252,
                "expected_assists": 0.0375,
                "assist_rate": 0.043,
                "assists": 0,
                "expected_goals": 0.0318,
                "goal_rate": 0.0325,
                "goals": 0,
                "shots_on_target": 0.1436,
                "total_shots": 0.3062,
                "rating": 6.7016,
                "minutes": 14.92,
                "total_pass": 7.1985,
                "accurate_pass": 5.7675,
                "duels_won": 1.1504,
                "total_long_balls": 0.3082,
                "accurate_long_balls": 0.1763,
                "total_own_half_passes": 2.0284,
                "accurate_own_half_passes": 1.6217,
                "total_opp_half_passes": 5.17,
                "accurate_opp_half_passes": 4.1458,
                "crosses_total": 0.2278,
                "crosses_accurate": 0.1319,
                "touches": 10.4345,
                "possession_lost": 2.5931,
                "dispossessed": 0.6518,
                "duels_lost": 1.9369,
                "aerial_won": 0.0,
                "aerial_lost": 0.4145,
                "interceptions": 0.0,
                "tackles_won": 0.111,
                "tackles": 0.2242,
                "clearances": 0.0,
                "total_contest": 0.1825,
                "won_contest": 0.1825,
                "challenges_lost": 0.7875,
                "fouls": 0.5275,
                "fouls_drawn": 0.7421,
                "blocks": 0.0,
                "big_chances_created": 0.0953,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.8287,
                "total_progression": 14.121,
                "progressive_carries": 0.53,
                "shots_off_target": 0.1622,
                "bench_appearance_probability": 0.439,
                "bench_expected_minutes": 14.92,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 14,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3320,
                "fifa_rank": 1976.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            }
          ]
        },
        "Mauro Echegoyen": {
          "player_id": 1512107,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 26,
          "height": 177,
          "market_value": 215000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0266,
            "assist_rate": 0.0505,
            "assists": 0,
            "expected_goals": 0.0549,
            "goal_rate": 0.0717,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7297,
            "minutes": 22,
            "total_pass": 19,
            "accurate_pass": 16,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 7,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 9,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 28,
            "possession_lost": 5.9809,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 1,
            "big_chances_created": 0,
            "xgot": 0.0599,
            "ball_carries": 9,
            "total_progression": 28,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.499,
            "bench_expected_minutes": 21.97,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.395,
            "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": 63.0
          },
          "latest_10_games": [
            {
              "match_id": 16421054,
              "match_date": "2026-10-11",
              "home_team": "Real Betis",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 27,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0414,
                "expected_assists": 0.0105,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 19,
                "accurate_pass": 16,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 8677,
            "combined_rank_score": 7189.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 14095.0,
            "fifa_overall": 63.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7297,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mauro Echegoyen",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ahmed Kendouci",
                  "ranking": 8672
                },
                {
                  "player_name": "Rubén Gómez",
                  "ranking": 8673
                },
                {
                  "player_name": "Joël Mall",
                  "ranking": 8674
                },
                {
                  "player_name": "Willian Vargas",
                  "ranking": 8675
                },
                {
                  "player_name": "Pius Dorn",
                  "ranking": 8676
                }
              ],
              "lower": [
                {
                  "player_name": "Ali Kabacalman",
                  "ranking": 8678
                },
                {
                  "player_name": "Lamine Fomba",
                  "ranking": 8679
                },
                {
                  "player_name": "Hannes Delcroix",
                  "ranking": 8680
                },
                {
                  "player_name": "Xanet Olaiz",
                  "ranking": 8681
                },
                {
                  "player_name": "Ablie Jallow",
                  "ranking": 8682
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.312,
          "history_matches": 1,
          "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": 1,
            "data_confidence": 0.312,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 21.97222218756125,
            "bench_appearance_prob": 0.4987373721618749,
            "market_value_adjustment": 0.9831,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "sub_appearances": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "Bench projection scaled from XGBoost M_service (1 historical appearances) to 22.0 expected mins (appearance prob 0.50); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.4426,
                "expected_assists": 0.0267,
                "assists": 0.0506,
                "assist_rate": 0.0506,
                "expected_goals": 0.055,
                "goals": 0.072,
                "goal_rate": 0.072,
                "shots_on_target": 0.2346,
                "total_shots": 0.8209,
                "rating": 6.7297,
                "minutes": 21.67,
                "total_pass": 19.0,
                "accurate_pass": 16.0,
                "duels_won": 2.0,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 7.0,
                "accurate_own_half_passes": 7.0,
                "total_opp_half_passes": 12.0,
                "accurate_opp_half_passes": 9.0,
                "crosses_total": 1.0,
                "crosses_accurate": 0.0,
                "touches": 28.0,
                "possession_lost": 6.0,
                "dispossessed": 0.0,
                "duels_lost": 1.0,
                "aerial_won": 0.0,
                "aerial_lost": 1.0,
                "interceptions": 0.0,
                "tackles_won": 1.0,
                "tackles": 2.0,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 1.0,
                "big_chances_created": 0.0,
                "xgot": 0.0601,
                "ball_carries": 9.0,
                "total_progression": 28.3264,
                "progressive_carries": 1.0,
                "shots_off_target": 0.5863
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-17T10:05:52.581708+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Betis",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 1.0,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 1.0,
                  "is_starting_11": 0.0,
                  "totalShots": 2.0,
                  "creative_index": 0.0063,
                  "expectedGoals": 0.0414,
                  "expectedAssists": 0.0105,
                  "onTargetScoringAttempt": 1.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.44256842136383057,
                    "model_output": 0.4426,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3968
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0634
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0424
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0269
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.025
                        }
                      ],
                      "others": 0.0003,
                      "total": 0.4426,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.587575
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.136675
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.103122
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.066548
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": 0.058116
                        }
                      ],
                      "others_margin": 0.000738
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.026656685397028923,
                    "model_output": 0.0267,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0401
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.01
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": -0.0028
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0021
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0017
                        }
                      ],
                      "others": -0.0022,
                      "total": 0.0267,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.632265
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.24853
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": -0.083467
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.064936
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.05691
                        }
                      ],
                      "others_margin": -0.081006
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.05060715228319168,
                    "model_output": 0.0506,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0205
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.008
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0076
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0065
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0057
                        }
                      ],
                      "others": -0.0043,
                      "total": 0.0506,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.267647
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.112831
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.106792
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.102422
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.099441
                        }
                      ],
                      "others_margin": -0.081118
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.05501403287053108,
                    "model_output": 0.055,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0393
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0096
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0066
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0058
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0034
                        }
                      ],
                      "others": -0.0138,
                      "total": 0.055,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.539363
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.161246
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.097472
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.085264
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.050264
                        }
                      ],
                      "others_margin": -0.223196
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.07195577025413513,
                    "model_output": 0.072,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0391
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0124
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0083
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0079
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0039
                        }
                      ],
                      "others": -0.0114,
                      "total": 0.072,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.510106
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.190933
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.110073
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.095448
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.045702
                        }
                      ],
                      "others_margin": -0.147403
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.23457539081573486,
                    "model_output": 0.2346,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1482
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0504
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0168
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0171
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0131
                        }
                      ],
                      "others": -0.0403,
                      "total": 0.2346,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.606689
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.249662
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.071021
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.067367
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.048702
                        }
                      ],
                      "others_margin": -0.158353
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.820862352848053,
                    "model_output": 0.8209,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5361
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.3641
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.0693
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0613
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0575
                        }
                      ],
                      "others": -0.0521,
                      "total": 0.8209,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.536052
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.364122
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.069266
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.061304
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.057486
                        }
                      ],
                      "others_margin": -0.052267
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.729747295379639,
                    "model_output": 6.7297,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0935
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0353
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0352
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0202
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0165
                        }
                      ],
                      "others": -0.0261,
                      "total": 6.7297,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.093465
                        },
                        {
                          "name": "rating",
                          "margin": -0.035258
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.035204
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.02023
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.01648
                        }
                      ],
                      "others_margin": -0.026043
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 1,
                  "role_matches": 1,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9831, quality 0.437)",
              "stats": {
                "key_pass": 0.4351,
                "expected_assists": 0.0262,
                "assists": 0.0498,
                "assist_rate": 0.0498,
                "expected_goals": 0.0541,
                "goals": 0.0707,
                "goal_rate": 0.0707,
                "shots_on_target": 0.2306,
                "total_shots": 0.807,
                "rating": 6.7297,
                "minutes": 21.67,
                "total_pass": 18.6789,
                "accurate_pass": 15.7296,
                "duels_won": 1.9662,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 6.8817,
                "accurate_own_half_passes": 6.8817,
                "total_opp_half_passes": 11.7972,
                "accurate_opp_half_passes": 8.8479,
                "crosses_total": 0.9831,
                "crosses_accurate": 0.0,
                "touches": 27.5268,
                "possession_lost": 5.8986,
                "dispossessed": 0.0,
                "duels_lost": 0.9831,
                "aerial_won": 0.0,
                "aerial_lost": 0.9831,
                "interceptions": 0.0,
                "tackles_won": 0.9831,
                "tackles": 1.9662,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.9831,
                "big_chances_created": 0.0,
                "xgot": 0.0591,
                "ball_carries": 8.8479,
                "total_progression": 27.8477,
                "progressive_carries": 0.9831,
                "shots_off_target": 0.5764
              },
              "params": {
                "market_value_eur": 215000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9831,
                "reference_quality": 0.505,
                "history_matches": 1,
                "history_shrink": 0.8333,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 21.7 to 22.0 expected minutes (appearance prob 0.50)",
              "stats": {
                "key_pass": 0.4412,
                "expected_assists": 0.0266,
                "assists": 0.0505,
                "assist_rate": 0.0505,
                "expected_goals": 0.0549,
                "goals": 0.0717,
                "goal_rate": 0.0717,
                "shots_on_target": 0.2338,
                "total_shots": 0.8183,
                "rating": 6.7297,
                "minutes": 21.97,
                "total_pass": 18.9394,
                "accurate_pass": 15.949,
                "duels_won": 1.9936,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 6.9777,
                "accurate_own_half_passes": 6.9777,
                "total_opp_half_passes": 11.9617,
                "accurate_opp_half_passes": 8.9713,
                "crosses_total": 0.9968,
                "crosses_accurate": 0.0,
                "touches": 27.9107,
                "possession_lost": 5.9809,
                "dispossessed": 0.0,
                "duels_lost": 0.9968,
                "aerial_won": 0.0,
                "aerial_lost": 0.9831,
                "interceptions": 0.0,
                "tackles_won": 0.9968,
                "tackles": 1.9936,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.9968,
                "big_chances_created": 0.0,
                "xgot": 0.0599,
                "ball_carries": 8.9713,
                "total_progression": 28.2361,
                "progressive_carries": 0.9968,
                "shots_off_target": 0.5844,
                "bench_appearance_probability": 0.499,
                "bench_expected_minutes": 21.97
              },
              "params": {
                "expected_minutes": 21.97,
                "projection_minutes": 21.67,
                "minutes_scale": 1.0139,
                "appearance_probability": 0.499
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.4412,
                "expected_assists": 0.0266,
                "assists": 0.0505,
                "assist_rate": 0.0505,
                "expected_goals": 0.0549,
                "goals": 0.0717,
                "goal_rate": 0.0717,
                "shots_on_target": 0.2338,
                "total_shots": 0.8183,
                "rating": 6.7297,
                "minutes": 21.97,
                "total_pass": 18.9394,
                "accurate_pass": 15.949,
                "duels_won": 1.9936,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 6.9777,
                "accurate_own_half_passes": 6.9777,
                "total_opp_half_passes": 11.9617,
                "accurate_opp_half_passes": 8.9713,
                "crosses_total": 0.9968,
                "crosses_accurate": 0.0,
                "touches": 27.9107,
                "possession_lost": 5.9809,
                "dispossessed": 0.0,
                "duels_lost": 0.9968,
                "aerial_won": 0.0,
                "aerial_lost": 0.9831,
                "interceptions": 0.0,
                "tackles_won": 0.9968,
                "tackles": 1.9936,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.9968,
                "big_chances_created": 0.0,
                "xgot": 0.0599,
                "ball_carries": 8.9713,
                "total_progression": 28.2361,
                "progressive_carries": 0.9968,
                "shots_off_target": 0.5844,
                "bench_appearance_probability": 0.499,
                "bench_expected_minutes": 21.97
              },
              "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.4412,
                "expected_assists": 0.0266,
                "assist_rate": 0.0505,
                "assists": 0,
                "expected_goals": 0.0549,
                "goal_rate": 0.0717,
                "goals": 0,
                "shots_on_target": 0.2338,
                "total_shots": 0.8183,
                "rating": 6.7297,
                "minutes": 21.97,
                "total_pass": 18.9394,
                "accurate_pass": 15.949,
                "duels_won": 1.9936,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 6.9777,
                "accurate_own_half_passes": 6.9777,
                "total_opp_half_passes": 11.9617,
                "accurate_opp_half_passes": 8.9713,
                "crosses_total": 0.9968,
                "crosses_accurate": 0.0,
                "touches": 27.9107,
                "possession_lost": 5.9809,
                "dispossessed": 0.0,
                "duels_lost": 0.9968,
                "aerial_won": 0.0,
                "aerial_lost": 0.9831,
                "interceptions": 0.0,
                "tackles_won": 0.9968,
                "tackles": 1.9936,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.9968,
                "big_chances_created": 0.0,
                "xgot": 0.0599,
                "ball_carries": 8.9713,
                "total_progression": 28.2361,
                "progressive_carries": 0.9968,
                "shots_off_target": 0.5844,
                "bench_appearance_probability": 0.499,
                "bench_expected_minutes": 21.97,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "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.499,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 63.0)",
              "stats": {
                "key_pass": 0.4412,
                "expected_assists": 0.0266,
                "assist_rate": 0.0505,
                "assists": 0,
                "expected_goals": 0.0549,
                "goal_rate": 0.0717,
                "goals": 0,
                "shots_on_target": 0.2338,
                "total_shots": 0.8183,
                "rating": 6.7297,
                "minutes": 21.97,
                "total_pass": 18.9394,
                "accurate_pass": 15.949,
                "duels_won": 1.9936,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 6.9777,
                "accurate_own_half_passes": 6.9777,
                "total_opp_half_passes": 11.9617,
                "accurate_opp_half_passes": 8.9713,
                "crosses_total": 0.9968,
                "crosses_accurate": 0.0,
                "touches": 27.9107,
                "possession_lost": 5.9809,
                "dispossessed": 0.0,
                "duels_lost": 0.9968,
                "aerial_won": 0.0,
                "aerial_lost": 0.9831,
                "interceptions": 0.0,
                "tackles_won": 0.9968,
                "tackles": 1.9936,
                "clearances": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.0,
                "blocks": 0.9968,
                "big_chances_created": 0.0,
                "xgot": 0.0599,
                "ball_carries": 8.9713,
                "total_progression": 28.2361,
                "progressive_carries": 0.9968,
                "shots_off_target": 0.5844,
                "bench_appearance_probability": 0.499,
                "bench_expected_minutes": 21.97,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "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": 63.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": 8677,
                "fifa_rank": 14095.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 63.0
              }
            }
          ]
        },
        "Romain Del Castillo": {
          "player_id": 825681,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 20,
          "height": 172,
          "market_value": 6400000,
          "stats": {
            "expected_goals": 0.0801,
            "goal_rate": 0.078,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0295,
            "key_pass": 0,
            "rating": 6.5749,
            "minutes": 25,
            "total_pass": 9,
            "accurate_pass": 9,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 7,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 14,
            "possession_lost": 1.9771,
            "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": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 3,
            "total_progression": 6,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.566,
            "bench_expected_minutes": 25.46,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.395,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0747,
            "projected_assists": 0,
            "assist_probability": 0.0287,
            "finishing_factor": 0.8731,
            "creation_factor": 0.8,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16416335,
              "match_date": "2026-09-16",
              "home_team": "Atlético Madrid",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 16,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 6,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 19,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.028,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 8,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3024,
            "combined_rank_score": 1002.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 1827.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.5749,
            "source_file": "data/player_rankings.csv",
            "player_name": "Romain Del Castillo",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Antonee Burke-Gilroy",
                  "ranking": 3019
                },
                {
                  "player_name": "Kim Min-Joon",
                  "ranking": 3020
                },
                {
                  "player_name": "Jasir Asani",
                  "ranking": 3021
                },
                {
                  "player_name": "Robert Andrich",
                  "ranking": 3022
                },
                {
                  "player_name": "Stav Torial",
                  "ranking": 3023
                }
              ],
              "lower": [
                {
                  "player_name": "Alberto Riccardi",
                  "ranking": 3025
                },
                {
                  "player_name": "Dong-geon No",
                  "ranking": 3026
                },
                {
                  "player_name": "Alexander Pastene",
                  "ranking": 3027
                },
                {
                  "player_name": "Dumitru Celeadnic",
                  "ranking": 3028
                },
                {
                  "player_name": "Leo Kapilevich",
                  "ranking": 3029
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.375,
          "history_matches": 2,
          "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": 2,
            "data_confidence": 0.375,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.458124038509048,
            "bench_appearance_prob": 0.5662783653867749,
            "market_value_adjustment": 0.9945,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (2 historical appearances) to 25.5 expected mins (appearance prob 0.57)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0713,
                "goals": 0.0576,
                "goal_rate": 0.0576,
                "shots_on_target": 0.2559,
                "total_shots": 0.6026,
                "expected_assists": 0.0263,
                "key_pass": 0.2695,
                "rating": 6.5749,
                "minutes": 18.69,
                "total_pass": 6.9189,
                "accurate_pass": 6.9189,
                "duels_won": 1.9189,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.2973,
                "accurate_opp_half_passes": 5.2973,
                "crosses_total": 1.4595,
                "crosses_accurate": 0.0,
                "touches": 10.2973,
                "possession_lost": 1.4595,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.5405,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.4595,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.4595,
                "tackles": 0.4595,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.0,
                "total_progression": 4.3298,
                "progressive_carries": 0.0,
                "shots_off_target": 0.3467
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:06:24.593912+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-16",
                    "opponent": "Atlético Madrid",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.5405,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Espanyol",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.4595,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 0.0,
                  "totalOppositionHalfPasses": 5.2973,
                  "expectedGoals": 0.0,
                  "accurateOppositionHalfPasses": 5.2973,
                  "accuratePass": 6.9189,
                  "totalShots": 0.0
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07133576273918152,
                    "model_output": 0.0713,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0859
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0175
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0081
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0054
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0042
                        }
                      ],
                      "others": -0.0051,
                      "total": 0.0713,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.570699
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.170809
                        },
                        {
                          "name": "goals",
                          "margin": -0.08992
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.065119
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.053621
                        }
                      ],
                      "others_margin": -0.068273
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05758912116289139,
                    "model_output": 0.0576,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0768
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0241
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0111
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0063
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0051
                        }
                      ],
                      "others": -0.0224,
                      "total": 0.0576,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.473935
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.211029
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.114943
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.071675
                        },
                        {
                          "name": "goals",
                          "margin": -0.061684
                        }
                      ],
                      "others_margin": -0.328365
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.255876749753952,
                    "model_output": 0.2559,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1897
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0213
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0174
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0138
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0104
                        }
                      ],
                      "others": -0.0291,
                      "total": 0.2559,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.435151
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.0633
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.054639
                        },
                        {
                          "name": "goals",
                          "margin": -0.045629
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.035883
                        }
                      ],
                      "others_margin": -0.107908
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.602555513381958,
                    "model_output": 0.6026,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5046
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1366
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0435
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0432
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0386
                        }
                      ],
                      "others": -0.0819,
                      "total": 0.6026,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.50465
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.136609
                        },
                        {
                          "name": "goals",
                          "margin": -0.043489
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.043239
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": 0.038587
                        }
                      ],
                      "others_margin": -0.081884
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.026286005973815918,
                    "model_output": 0.0263,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0155
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0068
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0053
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0036
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0027
                        }
                      ],
                      "others": -0.004,
                      "total": 0.0263,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.276837
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.150337
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.134129
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.104517
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.08478
                        }
                      ],
                      "others_margin": -0.142609
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.26951083540916443,
                    "model_output": 0.2695,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2494
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0317
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0275
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.025
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0204
                        }
                      ],
                      "others": -0.0499,
                      "total": 0.2695,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.462575
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.07782
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.072674
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.071098
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.061844
                        }
                      ],
                      "others_margin": -0.169674
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.5749287605285645,
                    "model_output": 6.5749,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0455
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0176
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0135
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0128
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0128
                        }
                      ],
                      "others": -0.0899,
                      "total": 6.5749,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.045473
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.017633
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.013466
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.012848
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.012835
                        }
                      ],
                      "others_margin": -0.089821
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 2,
                  "role_matches": 2,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9945, quality 0.479)",
              "stats": {
                "expected_goals": 0.0709,
                "goals": 0.0573,
                "goal_rate": 0.0573,
                "shots_on_target": 0.2545,
                "total_shots": 0.5993,
                "expected_assists": 0.0261,
                "key_pass": 0.268,
                "rating": 6.5749,
                "minutes": 18.69,
                "total_pass": 6.8808,
                "accurate_pass": 6.8808,
                "duels_won": 1.9083,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.2682,
                "accurate_opp_half_passes": 5.2682,
                "crosses_total": 1.4515,
                "crosses_accurate": 0.0,
                "touches": 10.2407,
                "possession_lost": 1.4515,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.5375,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.457,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.457,
                "tackles": 0.457,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.989,
                "total_progression": 4.306,
                "progressive_carries": 0.0,
                "shots_off_target": 0.3448
              },
              "params": {
                "market_value_eur": 6400000,
                "quality_factor": 0.4793,
                "boost_factor": 0.9945,
                "reference_quality": 0.505,
                "history_matches": 2,
                "history_shrink": 0.7143,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.7 to 25.5 expected minutes (appearance prob 0.57)",
              "stats": {
                "expected_goals": 0.0966,
                "goals": 0.078,
                "goal_rate": 0.078,
                "shots_on_target": 0.3467,
                "total_shots": 0.8164,
                "expected_assists": 0.0356,
                "key_pass": 0.365,
                "rating": 6.5749,
                "minutes": 25.46,
                "total_pass": 9.3725,
                "accurate_pass": 9.3725,
                "duels_won": 2.5993,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1759,
                "accurate_opp_half_passes": 7.1759,
                "crosses_total": 1.9771,
                "crosses_accurate": 0.0,
                "touches": 13.9491,
                "possession_lost": 1.9771,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7321,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.6225,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.6225,
                "tackles": 0.6225,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.7093,
                "total_progression": 5.8653,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4697,
                "bench_appearance_probability": 0.566,
                "bench_expected_minutes": 25.46
              },
              "params": {
                "expected_minutes": 25.46,
                "projection_minutes": 18.69,
                "minutes_scale": 1.3621,
                "appearance_probability": 0.566
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0966,
                "goals": 0.078,
                "goal_rate": 0.078,
                "shots_on_target": 0.3467,
                "total_shots": 0.8164,
                "expected_assists": 0.0356,
                "key_pass": 0.365,
                "rating": 6.5749,
                "minutes": 25.46,
                "total_pass": 9.3725,
                "accurate_pass": 9.3725,
                "duels_won": 2.5993,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1759,
                "accurate_opp_half_passes": 7.1759,
                "crosses_total": 1.9771,
                "crosses_accurate": 0.0,
                "touches": 13.9491,
                "possession_lost": 1.9771,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7321,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.6225,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.6225,
                "tackles": 0.6225,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.7093,
                "total_progression": 5.8653,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4697,
                "bench_appearance_probability": 0.566,
                "bench_expected_minutes": 25.46
              },
              "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.0966,
                "goal_rate": 0.078,
                "goals": 0,
                "shots_on_target": 0.3467,
                "total_shots": 0.8164,
                "expected_assists": 0.0356,
                "key_pass": 0.365,
                "rating": 6.5749,
                "minutes": 25.46,
                "total_pass": 9.3725,
                "accurate_pass": 9.3725,
                "duels_won": 2.5993,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1759,
                "accurate_opp_half_passes": 7.1759,
                "crosses_total": 1.9771,
                "crosses_accurate": 0.0,
                "touches": 13.9491,
                "possession_lost": 1.9771,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7321,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.6225,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6225,
                "tackles": 0.6225,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.7093,
                "total_progression": 5.8653,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4697,
                "bench_appearance_probability": 0.566,
                "bench_expected_minutes": 25.46,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.0801,
                "goal_rate": 0.078,
                "goals": 0,
                "shots_on_target": 0.3467,
                "total_shots": 0.8164,
                "expected_assists": 0.0295,
                "key_pass": 0.365,
                "rating": 6.5749,
                "minutes": 25.46,
                "total_pass": 9.3725,
                "accurate_pass": 9.3725,
                "duels_won": 2.5993,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1759,
                "accurate_opp_half_passes": 7.1759,
                "crosses_total": 1.9771,
                "crosses_accurate": 0.0,
                "touches": 13.9491,
                "possession_lost": 1.9771,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7321,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.6225,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6225,
                "tackles": 0.6225,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.7093,
                "total_progression": 5.8653,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4697,
                "bench_appearance_probability": 0.566,
                "bench_expected_minutes": 25.46,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8731,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 0.566
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0966,
                  "after": 0.0801
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0356,
                  "after": 0.0295
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 76.0)",
              "stats": {
                "expected_goals": 0.0801,
                "goal_rate": 0.078,
                "goals": 0,
                "shots_on_target": 0.3467,
                "total_shots": 0.8164,
                "expected_assists": 0.0295,
                "key_pass": 0.365,
                "rating": 6.5749,
                "minutes": 25.46,
                "total_pass": 9.3725,
                "accurate_pass": 9.3725,
                "duels_won": 2.5993,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1759,
                "accurate_opp_half_passes": 7.1759,
                "crosses_total": 1.9771,
                "crosses_accurate": 0.0,
                "touches": 13.9491,
                "possession_lost": 1.9771,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7321,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.6225,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6225,
                "tackles": 0.6225,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.7093,
                "total_progression": 5.8653,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4697,
                "bench_appearance_probability": 0.566,
                "bench_expected_minutes": 25.46,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8731,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3024,
                "fifa_rank": 1827.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0801,
                "goal_rate": 0.078,
                "goals": 0,
                "shots_on_target": 0.3467,
                "total_shots": 0.8164,
                "expected_assists": 0.0295,
                "key_pass": 0.365,
                "rating": 6.5749,
                "minutes": 25.46,
                "total_pass": 9.3725,
                "accurate_pass": 9.3725,
                "duels_won": 2.5993,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1759,
                "accurate_opp_half_passes": 7.1759,
                "crosses_total": 1.9771,
                "crosses_accurate": 0.0,
                "touches": 13.9491,
                "possession_lost": 1.9771,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7321,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.6225,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6225,
                "tackles": 0.6225,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.7093,
                "total_progression": 5.8653,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4697,
                "bench_appearance_probability": 0.566,
                "bench_expected_minutes": 25.46,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0747,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8731,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0747,
                "goal_rate": 0.078,
                "scorer_weight": 0.0699,
                "squad_weight_total": 1.3652,
                "weight_share": 0.0512,
                "finishing_factor": 0.8731,
                "appearance_weight": 0.566,
                "weight_rank": 4,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.0801,
                "goal_rate": 0.078,
                "goals": 0,
                "shots_on_target": 0.3467,
                "total_shots": 0.8164,
                "expected_assists": 0.0295,
                "key_pass": 0.365,
                "rating": 6.5749,
                "minutes": 25.46,
                "total_pass": 9.3725,
                "accurate_pass": 9.3725,
                "duels_won": 2.5993,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1759,
                "accurate_opp_half_passes": 7.1759,
                "crosses_total": 1.9771,
                "crosses_accurate": 0.0,
                "touches": 13.9491,
                "possession_lost": 1.9771,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7321,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.6225,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6225,
                "tackles": 0.6225,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.7093,
                "total_progression": 5.8653,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4697,
                "bench_appearance_probability": 0.566,
                "bench_expected_minutes": 25.46,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0747,
                "projected_assists": 0,
                "assist_probability": 0.0287,
                "finishing_factor": 0.8731,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0287,
                "assist_rate": 0.0,
                "provider_weight": 0.0236,
                "squad_weight_total": 0.9792,
                "weight_share": 0.0241,
                "creation_factor": 0.8,
                "appearance_weight": 0.566,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Jonathan Dubasin": {
          "player_id": 1094517,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 21,
          "height": 180,
          "market_value": 4300000,
          "stats": {
            "expected_goals": 0.0612,
            "goal_rate": 0.0677,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0343,
            "key_pass": 0,
            "rating": 6.6432,
            "minutes": 27,
            "total_pass": 14,
            "accurate_pass": 11,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 8,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 22,
            "possession_lost": 5.7686,
            "dispossessed": 0.7149,
            "duels_lost": 3,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.0811,
            "offsides": 0,
            "ball_carries": 6,
            "total_progression": 30,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.592,
            "bench_expected_minutes": 26.81,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.395,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0581,
            "projected_assists": 0,
            "assist_probability": 0.0333,
            "finishing_factor": 0.976,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421054,
              "match_date": "2026-10-11",
              "home_team": "Real Betis",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 16,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0188,
                "expected_assists": 0.011,
                "total_shots": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "key_pass": 1,
                "tackles": 2,
                "clearances": 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": 16416305,
              "match_date": "2026-09-19",
              "home_team": "Osasuna",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 21,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0051,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 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": 16416335,
              "match_date": "2026-09-16",
              "home_team": "Atlético Madrid",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 59,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0101,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 23,
                "interceptions": 1,
                "clearances": 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": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 30,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5036,
                "expected_assists": 0.0167,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 19,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 30,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0262,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 45,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4988,
                "expected_assists": 0.0232,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 11,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 58,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0913,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 18,
                "key_pass": 2,
                "tackles": 1,
                "interceptions": 2,
                "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": 16416296,
              "match_date": "2026-08-24",
              "home_team": "Osasuna",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "interceptions": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 2777,
            "combined_rank_score": 1181.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 959.0,
            "sofascore_rating": 6.4,
            "sofascore_appearances": 3.0,
            "fifa_rank": 1404.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.6432,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jonathan Dubasin",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Edson Carioca",
                  "ranking": 2772
                },
                {
                  "player_name": "André Luis",
                  "ranking": 2773
                },
                {
                  "player_name": "Antonio Galeano",
                  "ranking": 2774
                },
                {
                  "player_name": "Franco Cáceres",
                  "ranking": 2775
                },
                {
                  "player_name": "Edvin Muratović",
                  "ranking": 2776
                }
              ],
              "lower": [
                {
                  "player_name": "Gorka Carrera Zarranz",
                  "ranking": 2778
                },
                {
                  "player_name": "Germán Cano",
                  "ranking": 2779
                },
                {
                  "player_name": "Javokhir Jorayev",
                  "ranking": 2780
                },
                {
                  "player_name": "Sayfiddin Sodikov",
                  "ranking": 2781
                },
                {
                  "player_name": "Gabriel Sloane-Rodrigues",
                  "ranking": 2782
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.763,
          "history_matches": 8,
          "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": 8,
            "data_confidence": 0.763,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 26.81,
            "bench_appearance_prob": 0.592,
            "market_value_adjustment": 0.9941,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 1.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 28.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0867
            },
            "rationale": "Bench projection scaled from XGBoost F_service (8 historical appearances) to 26.8 expected mins (appearance prob 0.59); FBref playing time empirical prior: 2.0 sub appearances, 28.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0619,
                "goals": 0.0607,
                "goal_rate": 0.0607,
                "shots_on_target": 0.2182,
                "total_shots": 0.658,
                "expected_assists": 0.0348,
                "key_pass": 0.3784,
                "rating": 6.6432,
                "minutes": 23.4,
                "total_pass": 11.8614,
                "accurate_pass": 9.5963,
                "duels_won": 1.6584,
                "total_long_balls": 0.9298,
                "accurate_long_balls": 0.5527,
                "total_opp_half_passes": 9.0038,
                "accurate_opp_half_passes": 7.138,
                "crosses_total": 0.8036,
                "crosses_accurate": 0.0,
                "touches": 19.0689,
                "possession_lost": 5.0648,
                "dispossessed": 0.7191,
                "duels_lost": 2.8459,
                "aerial_lost": 0.2514,
                "total_contest": 0.8965,
                "won_contest": 0.2408,
                "ball_recovery": 1.1466,
                "challenges_lost": 0.5005,
                "fouls": 0.7191,
                "fouls_drawn": 0.3665,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1069,
                "tackles_won": 0.1479,
                "tackles": 0.7775,
                "clearances": 0.2408,
                "blocks": 0.174,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.7673,
                "xgot": 0.0822,
                "offsides": 0.0,
                "ball_carries": 5.2923,
                "total_progression": 26.0667,
                "progressive_carries": 1.0893,
                "shots_off_target": 0.4398
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:06:24.593912+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Betis",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.2062,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Rayo Vallecano",
                    "minutes": 21.0,
                    "is_starting": false,
                    "weight": 0.1753,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "Atlético Madrid",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.149,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Espanyol",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.1266,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Deportivo Alavés",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.1076,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0915,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Celta Vigo",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.0778,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Levante UD",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0661,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 8.0,
                  "is_starting_11": 0.0,
                  "totalOppositionHalfPasses": 10.0,
                  "expectedGoals": 0.1133,
                  "accurateOppositionHalfPasses": 7.9049,
                  "accuratePass": 12.1673,
                  "totalShots": 0.6424
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06192097067832947,
                    "model_output": 0.0619,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0896
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0133
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0094
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0051
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0039
                        }
                      ],
                      "others": -0.0143,
                      "total": 0.0619,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.604071
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.131689
                        },
                        {
                          "name": "goals",
                          "margin": -0.104736
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.061253
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.050075
                        }
                      ],
                      "others_margin": -0.208156
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06073809415102005,
                    "model_output": 0.0607,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.094
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0162
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0093
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0055
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0047
                        }
                      ],
                      "others": -0.013,
                      "total": 0.0607,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.62058
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.159954
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.105051
                        },
                        {
                          "name": "goals",
                          "margin": -0.067353
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.062187
                        }
                      ],
                      "others_margin": -0.19327
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.21817085146903992,
                    "model_output": 0.2182,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2305
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0283
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0192
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0133
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0119
                        }
                      ],
                      "others": -0.0162,
                      "total": 0.2182,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.559746
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.096826
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.07122
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.05271
                        },
                        {
                          "name": "goals",
                          "margin": -0.04965
                        }
                      ],
                      "others_margin": -0.071776
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6579492688179016,
                    "model_output": 0.6579,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5047
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1298
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0451
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0358
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0253
                        }
                      ],
                      "others": -0.0468,
                      "total": 0.6579,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.504723
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.129756
                        },
                        {
                          "name": "goals",
                          "margin": -0.045056
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": 0.035785
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.025277
                        }
                      ],
                      "others_margin": -0.046863
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03476927429437637,
                    "model_output": 0.0348,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0217
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0043
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0031
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0028
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0037,
                      "total": 0.0348,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.411674
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.095845
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.069379
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.066887
                        },
                        {
                          "name": "rating",
                          "margin": -0.061034
                        }
                      ],
                      "others_margin": -0.100384
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3783800005912781,
                    "model_output": 0.3784,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2386
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0255
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0208
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0168
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.013
                        }
                      ],
                      "others": -0.0219,
                      "total": 0.3784,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.437422
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.060472
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.049513
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.03983
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.031956
                        }
                      ],
                      "others_margin": -0.056228
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.643223762512207,
                    "model_output": 6.6432,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.059
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0222
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0135
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0099
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0096
                        }
                      ],
                      "others": -0.0564,
                      "total": 6.6432,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.059007
                        },
                        {
                          "name": "rating",
                          "margin": -0.022151
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.013533
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.009921
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.009617
                        }
                      ],
                      "others_margin": -0.056459
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 8,
                  "role_matches": 6,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9941, quality 0.454)",
              "stats": {
                "expected_goals": 0.0616,
                "goals": 0.0604,
                "goal_rate": 0.0604,
                "shots_on_target": 0.2169,
                "total_shots": 0.6541,
                "expected_assists": 0.0346,
                "key_pass": 0.3761,
                "rating": 6.6432,
                "minutes": 23.4,
                "total_pass": 11.7914,
                "accurate_pass": 9.5397,
                "duels_won": 1.6486,
                "total_long_balls": 0.9243,
                "accurate_long_balls": 0.5494,
                "total_opp_half_passes": 8.9507,
                "accurate_opp_half_passes": 7.0959,
                "crosses_total": 0.7989,
                "crosses_accurate": 0.0,
                "touches": 18.9564,
                "possession_lost": 5.0349,
                "dispossessed": 0.7149,
                "duels_lost": 2.8291,
                "aerial_lost": 0.2499,
                "total_contest": 0.8912,
                "won_contest": 0.2394,
                "ball_recovery": 1.1398,
                "challenges_lost": 0.4975,
                "fouls": 0.7149,
                "fouls_drawn": 0.3643,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1063,
                "tackles_won": 0.147,
                "tackles": 0.7729,
                "clearances": 0.2394,
                "blocks": 0.173,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.7628,
                "xgot": 0.0817,
                "offsides": 0.0,
                "ball_carries": 5.2611,
                "total_progression": 25.9129,
                "progressive_carries": 1.0829,
                "shots_off_target": 0.4372
              },
              "params": {
                "market_value_eur": 4300000,
                "quality_factor": 0.4535,
                "boost_factor": 0.9941,
                "reference_quality": 0.505,
                "history_matches": 8,
                "history_shrink": 0.3846,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0217)",
              "stats": {
                "expected_goals": 0.0616,
                "goals": 0.0591,
                "goal_rate": 0.0591,
                "shots_on_target": 0.2167,
                "total_shots": 0.6489,
                "expected_assists": 0.0346,
                "key_pass": 0.3761,
                "rating": 6.6432,
                "minutes": 23.4,
                "total_pass": 11.7914,
                "accurate_pass": 9.5397,
                "duels_won": 1.6486,
                "total_long_balls": 0.9243,
                "accurate_long_balls": 0.5494,
                "total_opp_half_passes": 8.9507,
                "accurate_opp_half_passes": 7.0959,
                "crosses_total": 0.7859,
                "crosses_accurate": 0.0,
                "touches": 18.9564,
                "possession_lost": 5.0349,
                "dispossessed": 0.7149,
                "duels_lost": 2.8291,
                "aerial_lost": 0.2499,
                "total_contest": 0.8912,
                "won_contest": 0.2394,
                "ball_recovery": 1.1398,
                "challenges_lost": 0.4975,
                "fouls": 0.7081,
                "fouls_drawn": 0.3607,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.117,
                "tackles_won": 0.1438,
                "tackles": 0.7729,
                "clearances": 0.2394,
                "blocks": 0.173,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.7628,
                "xgot": 0.0817,
                "offsides": 0.0,
                "ball_carries": 5.2611,
                "total_progression": 25.9129,
                "progressive_carries": 1.0829,
                "shots_off_target": 0.4372
              },
              "params": {
                "blend_weight": 0.0217,
                "history_matches": 8,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.26,
                "prior_reliability": 0.0867,
                "competition": "La Liga",
                "squad": "Osasuna"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 0.7989,
                  "after": 0.7859
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.1063,
                  "after": 0.117
                },
                {
                  "stat": "fouls",
                  "before": 0.7149,
                  "after": 0.7081
                },
                {
                  "stat": "totalShots",
                  "before": 0.6541,
                  "after": 0.6489
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.4 to 26.8 expected minutes (appearance prob 0.59)",
              "stats": {
                "expected_goals": 0.0706,
                "goals": 0.0677,
                "goal_rate": 0.0677,
                "shots_on_target": 0.2483,
                "total_shots": 0.7492,
                "expected_assists": 0.0396,
                "key_pass": 0.4309,
                "rating": 6.6432,
                "minutes": 26.81,
                "total_pass": 13.5097,
                "accurate_pass": 10.9299,
                "duels_won": 1.8888,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.6295,
                "total_opp_half_passes": 10.2551,
                "accurate_opp_half_passes": 8.13,
                "crosses_total": 0.9004,
                "crosses_accurate": 0.0,
                "touches": 21.7188,
                "possession_lost": 5.7686,
                "dispossessed": 0.7149,
                "duels_lost": 3.2414,
                "aerial_lost": 0.2499,
                "total_contest": 1.0211,
                "won_contest": 0.2743,
                "ball_recovery": 1.3059,
                "challenges_lost": 0.4975,
                "fouls": 0.8113,
                "fouls_drawn": 0.4133,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1341,
                "tackles_won": 0.1648,
                "tackles": 0.8855,
                "clearances": 0.2743,
                "blocks": 0.1982,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.874,
                "xgot": 0.0936,
                "offsides": 0.0,
                "ball_carries": 6.0278,
                "total_progression": 29.6891,
                "progressive_carries": 1.2407,
                "shots_off_target": 0.5009,
                "bench_appearance_probability": 0.592,
                "bench_expected_minutes": 26.81
              },
              "params": {
                "expected_minutes": 26.81,
                "projection_minutes": 23.4,
                "minutes_scale": 1.1457,
                "appearance_probability": 0.592
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0706,
                "goals": 0.0677,
                "goal_rate": 0.0677,
                "shots_on_target": 0.2483,
                "total_shots": 0.7492,
                "expected_assists": 0.0396,
                "key_pass": 0.4309,
                "rating": 6.6432,
                "minutes": 26.81,
                "total_pass": 13.5097,
                "accurate_pass": 10.9299,
                "duels_won": 1.8888,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.6295,
                "total_opp_half_passes": 10.2551,
                "accurate_opp_half_passes": 8.13,
                "crosses_total": 0.9004,
                "crosses_accurate": 0.0,
                "touches": 21.7188,
                "possession_lost": 5.7686,
                "dispossessed": 0.7149,
                "duels_lost": 3.2414,
                "aerial_lost": 0.2499,
                "total_contest": 1.0211,
                "won_contest": 0.2743,
                "ball_recovery": 1.3059,
                "challenges_lost": 0.4975,
                "fouls": 0.8113,
                "fouls_drawn": 0.4133,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1341,
                "tackles_won": 0.1648,
                "tackles": 0.8855,
                "clearances": 0.2743,
                "blocks": 0.1982,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.874,
                "xgot": 0.0936,
                "offsides": 0.0,
                "ball_carries": 6.0278,
                "total_progression": 29.6891,
                "progressive_carries": 1.2407,
                "shots_off_target": 0.5009,
                "bench_appearance_probability": 0.592,
                "bench_expected_minutes": 26.81
              },
              "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.0706,
                "goal_rate": 0.0677,
                "goals": 0,
                "shots_on_target": 0.2483,
                "total_shots": 0.7492,
                "expected_assists": 0.0396,
                "key_pass": 0.4309,
                "rating": 6.6432,
                "minutes": 26.81,
                "total_pass": 13.5097,
                "accurate_pass": 10.9299,
                "duels_won": 1.8888,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.6295,
                "total_opp_half_passes": 10.2551,
                "accurate_opp_half_passes": 8.13,
                "crosses_total": 0.9004,
                "crosses_accurate": 0.0,
                "touches": 21.7188,
                "possession_lost": 5.7686,
                "dispossessed": 0.7149,
                "duels_lost": 3.2414,
                "aerial_lost": 0.2499,
                "total_contest": 1.0211,
                "won_contest": 0.2743,
                "ball_recovery": 1.3059,
                "challenges_lost": 0.4975,
                "fouls": 0.8113,
                "fouls_drawn": 0.4133,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1341,
                "tackles_won": 0.1648,
                "tackles": 0.8855,
                "clearances": 0.2743,
                "blocks": 0.1982,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.874,
                "xgot": 0.0936,
                "offsides": 0.0,
                "ball_carries": 6.0278,
                "total_progression": 29.6891,
                "progressive_carries": 1.2407,
                "shots_off_target": 0.5009,
                "bench_appearance_probability": 0.592,
                "bench_expected_minutes": 26.81,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.0612,
                "goal_rate": 0.0677,
                "goals": 0,
                "shots_on_target": 0.2483,
                "total_shots": 0.7492,
                "expected_assists": 0.0343,
                "key_pass": 0.4309,
                "rating": 6.6432,
                "minutes": 26.81,
                "total_pass": 13.5097,
                "accurate_pass": 10.9299,
                "duels_won": 1.8888,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.6295,
                "total_opp_half_passes": 10.2551,
                "accurate_opp_half_passes": 8.13,
                "crosses_total": 0.9004,
                "crosses_accurate": 0.0,
                "touches": 21.7188,
                "possession_lost": 5.7686,
                "dispossessed": 0.7149,
                "duels_lost": 3.2414,
                "aerial_lost": 0.2499,
                "total_contest": 1.0211,
                "won_contest": 0.2743,
                "ball_recovery": 1.3059,
                "challenges_lost": 0.4975,
                "fouls": 0.8113,
                "fouls_drawn": 0.4133,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1341,
                "tackles_won": 0.1648,
                "tackles": 0.8855,
                "clearances": 0.2743,
                "blocks": 0.1982,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.874,
                "xgot": 0.0811,
                "offsides": 0.0,
                "ball_carries": 6.0278,
                "total_progression": 29.6891,
                "progressive_carries": 1.2407,
                "shots_off_target": 0.5009,
                "bench_appearance_probability": 0.592,
                "bench_expected_minutes": 26.81,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.976,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 0.592
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0706,
                  "after": 0.0612
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0396,
                  "after": 0.0343
                }
              ]
            },
            {
              "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": {
                "expected_goals": 0.0612,
                "goal_rate": 0.0677,
                "goals": 0,
                "shots_on_target": 0.2483,
                "total_shots": 0.7492,
                "expected_assists": 0.0343,
                "key_pass": 0.4309,
                "rating": 6.6432,
                "minutes": 26.81,
                "total_pass": 13.5097,
                "accurate_pass": 10.9299,
                "duels_won": 1.8888,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.6295,
                "total_opp_half_passes": 10.2551,
                "accurate_opp_half_passes": 8.13,
                "crosses_total": 0.9004,
                "crosses_accurate": 0.0,
                "touches": 21.7188,
                "possession_lost": 5.7686,
                "dispossessed": 0.7149,
                "duels_lost": 3.2414,
                "aerial_lost": 0.2499,
                "total_contest": 1.0211,
                "won_contest": 0.2743,
                "ball_recovery": 1.3059,
                "challenges_lost": 0.4975,
                "fouls": 0.8113,
                "fouls_drawn": 0.4133,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1341,
                "tackles_won": 0.1648,
                "tackles": 0.8855,
                "clearances": 0.2743,
                "blocks": 0.1982,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.874,
                "xgot": 0.0811,
                "offsides": 0.0,
                "ball_carries": 6.0278,
                "total_progression": 29.6891,
                "progressive_carries": 1.2407,
                "shots_off_target": 0.5009,
                "bench_appearance_probability": 0.592,
                "bench_expected_minutes": 26.81,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.976,
                "creation_factor": 0.8,
                "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_filled",
                "ranking_status": "combined",
                "global_player_rank": 2777,
                "fifa_rank": 1404.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0612,
                "goal_rate": 0.0677,
                "goals": 0,
                "shots_on_target": 0.2483,
                "total_shots": 0.7492,
                "expected_assists": 0.0343,
                "key_pass": 0.4309,
                "rating": 6.6432,
                "minutes": 26.81,
                "total_pass": 13.5097,
                "accurate_pass": 10.9299,
                "duels_won": 1.8888,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.6295,
                "total_opp_half_passes": 10.2551,
                "accurate_opp_half_passes": 8.13,
                "crosses_total": 0.9004,
                "crosses_accurate": 0.0,
                "touches": 21.7188,
                "possession_lost": 5.7686,
                "dispossessed": 0.7149,
                "duels_lost": 3.2414,
                "aerial_lost": 0.2499,
                "total_contest": 1.0211,
                "won_contest": 0.2743,
                "ball_recovery": 1.3059,
                "challenges_lost": 0.4975,
                "fouls": 0.8113,
                "fouls_drawn": 0.4133,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1341,
                "tackles_won": 0.1648,
                "tackles": 0.8855,
                "clearances": 0.2743,
                "blocks": 0.1982,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.874,
                "xgot": 0.0811,
                "offsides": 0.0,
                "ball_carries": 6.0278,
                "total_progression": 29.6891,
                "progressive_carries": 1.2407,
                "shots_off_target": 0.5009,
                "bench_appearance_probability": 0.592,
                "bench_expected_minutes": 26.81,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0581,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.976,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0581,
                "goal_rate": 0.0677,
                "scorer_weight": 0.0597,
                "squad_weight_total": 1.3652,
                "weight_share": 0.0438,
                "finishing_factor": 0.976,
                "appearance_weight": 0.592,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.0612,
                "goal_rate": 0.0677,
                "goals": 0,
                "shots_on_target": 0.2483,
                "total_shots": 0.7492,
                "expected_assists": 0.0343,
                "key_pass": 0.4309,
                "rating": 6.6432,
                "minutes": 26.81,
                "total_pass": 13.5097,
                "accurate_pass": 10.9299,
                "duels_won": 1.8888,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.6295,
                "total_opp_half_passes": 10.2551,
                "accurate_opp_half_passes": 8.13,
                "crosses_total": 0.9004,
                "crosses_accurate": 0.0,
                "touches": 21.7188,
                "possession_lost": 5.7686,
                "dispossessed": 0.7149,
                "duels_lost": 3.2414,
                "aerial_lost": 0.2499,
                "total_contest": 1.0211,
                "won_contest": 0.2743,
                "ball_recovery": 1.3059,
                "challenges_lost": 0.4975,
                "fouls": 0.8113,
                "fouls_drawn": 0.4133,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1341,
                "tackles_won": 0.1648,
                "tackles": 0.8855,
                "clearances": 0.2743,
                "blocks": 0.1982,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.874,
                "xgot": 0.0811,
                "offsides": 0.0,
                "ball_carries": 6.0278,
                "total_progression": 29.6891,
                "progressive_carries": 1.2407,
                "shots_off_target": 0.5009,
                "bench_appearance_probability": 0.592,
                "bench_expected_minutes": 26.81,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0581,
                "projected_assists": 0,
                "assist_probability": 0.0333,
                "finishing_factor": 0.976,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0333,
                "assist_rate": 0.0,
                "provider_weight": 0.0274,
                "squad_weight_total": 0.9792,
                "weight_share": 0.028,
                "creation_factor": 0.8,
                "appearance_weight": 0.592,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "substitutes": {
        "Jonathan Dubasin": {
          "player_id": 1094517,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 21,
          "height": 180,
          "market_value": 4300000,
          "stats": {
            "expected_goals": 0.0612,
            "goal_rate": 0.0677,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0343,
            "key_pass": 0,
            "rating": 6.6432,
            "minutes": 27,
            "total_pass": 14,
            "accurate_pass": 11,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 8,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 22,
            "possession_lost": 5.7686,
            "dispossessed": 0.7149,
            "duels_lost": 3,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.0811,
            "offsides": 0,
            "ball_carries": 6,
            "total_progression": 30,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.592,
            "bench_expected_minutes": 26.81,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.395,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0581,
            "projected_assists": 0,
            "assist_probability": 0.0333,
            "finishing_factor": 0.976,
            "creation_factor": 0.8,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16421054,
              "match_date": "2026-10-11",
              "home_team": "Real Betis",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 16,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0188,
                "expected_assists": 0.011,
                "total_shots": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "key_pass": 1,
                "tackles": 2,
                "clearances": 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": 16416305,
              "match_date": "2026-09-19",
              "home_team": "Osasuna",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 21,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0051,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 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": 16416335,
              "match_date": "2026-09-16",
              "home_team": "Atlético Madrid",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 59,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0101,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 23,
                "interceptions": 1,
                "clearances": 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": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 30,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.5036,
                "expected_assists": 0.0167,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 19,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416318,
              "match_date": "2026-09-06",
              "home_team": "Deportivo Alavés",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 30,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0262,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416314,
              "match_date": "2026-08-31",
              "home_team": "Osasuna",
              "away_team": "Getafe",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Getafe",
              "stats": {
                "minutes": 45,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4988,
                "expected_assists": 0.0232,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 11,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16815992,
              "match_date": "2026-08-27",
              "home_team": "Celta Vigo",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Osasuna",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 58,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0913,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 18,
                "key_pass": 2,
                "tackles": 1,
                "interceptions": 2,
                "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": 16416296,
              "match_date": "2026-08-24",
              "home_team": "Osasuna",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "interceptions": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 2777,
            "combined_rank_score": 1181.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 959.0,
            "sofascore_rating": 6.4,
            "sofascore_appearances": 3.0,
            "fifa_rank": 1404.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.6432,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jonathan Dubasin",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Edson Carioca",
                  "ranking": 2772
                },
                {
                  "player_name": "André Luis",
                  "ranking": 2773
                },
                {
                  "player_name": "Antonio Galeano",
                  "ranking": 2774
                },
                {
                  "player_name": "Franco Cáceres",
                  "ranking": 2775
                },
                {
                  "player_name": "Edvin Muratović",
                  "ranking": 2776
                }
              ],
              "lower": [
                {
                  "player_name": "Gorka Carrera Zarranz",
                  "ranking": 2778
                },
                {
                  "player_name": "Germán Cano",
                  "ranking": 2779
                },
                {
                  "player_name": "Javokhir Jorayev",
                  "ranking": 2780
                },
                {
                  "player_name": "Sayfiddin Sodikov",
                  "ranking": 2781
                },
                {
                  "player_name": "Gabriel Sloane-Rodrigues",
                  "ranking": 2782
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.763,
          "history_matches": 8,
          "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": 8,
            "data_confidence": 0.763,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 26.81,
            "bench_appearance_prob": 0.592,
            "market_value_adjustment": 0.9941,
            "fbref_prior_metrics": {
              "squad": "Osasuna",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 1.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 28.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0867
            },
            "rationale": "Bench projection scaled from XGBoost F_service (8 historical appearances) to 26.8 expected mins (appearance prob 0.59); FBref playing time empirical prior: 2.0 sub appearances, 28.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0619,
                "goals": 0.0607,
                "goal_rate": 0.0607,
                "shots_on_target": 0.2182,
                "total_shots": 0.658,
                "expected_assists": 0.0348,
                "key_pass": 0.3784,
                "rating": 6.6432,
                "minutes": 23.4,
                "total_pass": 11.8614,
                "accurate_pass": 9.5963,
                "duels_won": 1.6584,
                "total_long_balls": 0.9298,
                "accurate_long_balls": 0.5527,
                "total_opp_half_passes": 9.0038,
                "accurate_opp_half_passes": 7.138,
                "crosses_total": 0.8036,
                "crosses_accurate": 0.0,
                "touches": 19.0689,
                "possession_lost": 5.0648,
                "dispossessed": 0.7191,
                "duels_lost": 2.8459,
                "aerial_lost": 0.2514,
                "total_contest": 0.8965,
                "won_contest": 0.2408,
                "ball_recovery": 1.1466,
                "challenges_lost": 0.5005,
                "fouls": 0.7191,
                "fouls_drawn": 0.3665,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1069,
                "tackles_won": 0.1479,
                "tackles": 0.7775,
                "clearances": 0.2408,
                "blocks": 0.174,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.7673,
                "xgot": 0.0822,
                "offsides": 0.0,
                "ball_carries": 5.2923,
                "total_progression": 26.0667,
                "progressive_carries": 1.0893,
                "shots_off_target": 0.4398
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:06:24.593912+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Real Betis",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.2062,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Rayo Vallecano",
                    "minutes": 21.0,
                    "is_starting": false,
                    "weight": 0.1753,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "Atlético Madrid",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.149,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Espanyol",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.1266,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-06",
                    "opponent": "Deportivo Alavés",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.1076,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-31",
                    "opponent": "Getafe",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0915,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-27",
                    "opponent": "Celta Vigo",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.0778,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-24",
                    "opponent": "Levante UD",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.0661,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 8.0,
                  "is_starting_11": 0.0,
                  "totalOppositionHalfPasses": 10.0,
                  "expectedGoals": 0.1133,
                  "accurateOppositionHalfPasses": 7.9049,
                  "accuratePass": 12.1673,
                  "totalShots": 0.6424
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06192097067832947,
                    "model_output": 0.0619,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0896
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0133
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0094
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0051
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0039
                        }
                      ],
                      "others": -0.0143,
                      "total": 0.0619,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.604071
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.131689
                        },
                        {
                          "name": "goals",
                          "margin": -0.104736
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.061253
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.050075
                        }
                      ],
                      "others_margin": -0.208156
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.06073809415102005,
                    "model_output": 0.0607,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.094
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0162
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0093
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0055
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0047
                        }
                      ],
                      "others": -0.013,
                      "total": 0.0607,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.62058
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.159954
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.105051
                        },
                        {
                          "name": "goals",
                          "margin": -0.067353
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.062187
                        }
                      ],
                      "others_margin": -0.19327
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.21817085146903992,
                    "model_output": 0.2182,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2305
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0283
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0192
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0133
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0119
                        }
                      ],
                      "others": -0.0162,
                      "total": 0.2182,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.559746
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.096826
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.07122
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.05271
                        },
                        {
                          "name": "goals",
                          "margin": -0.04965
                        }
                      ],
                      "others_margin": -0.071776
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6579492688179016,
                    "model_output": 0.6579,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5047
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1298
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0451
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0358
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0253
                        }
                      ],
                      "others": -0.0468,
                      "total": 0.6579,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.504723
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.129756
                        },
                        {
                          "name": "goals",
                          "margin": -0.045056
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": 0.035785
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.025277
                        }
                      ],
                      "others_margin": -0.046863
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03476927429437637,
                    "model_output": 0.0348,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0217
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0043
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0031
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0028
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0037,
                      "total": 0.0348,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.411674
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.095845
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.069379
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.066887
                        },
                        {
                          "name": "rating",
                          "margin": -0.061034
                        }
                      ],
                      "others_margin": -0.100384
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.3783800005912781,
                    "model_output": 0.3784,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2386
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0255
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0208
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0168
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.013
                        }
                      ],
                      "others": -0.0219,
                      "total": 0.3784,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.437422
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.060472
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.049513
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.03983
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.031956
                        }
                      ],
                      "others_margin": -0.056228
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.643223762512207,
                    "model_output": 6.6432,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.059
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0222
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0135
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": 0.0099
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0096
                        }
                      ],
                      "others": -0.0564,
                      "total": 6.6432,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.059007
                        },
                        {
                          "name": "rating",
                          "margin": -0.022151
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.013533
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": 0.009921
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.009617
                        }
                      ],
                      "others_margin": -0.056459
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 8,
                  "role_matches": 6,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9941, quality 0.454)",
              "stats": {
                "expected_goals": 0.0616,
                "goals": 0.0604,
                "goal_rate": 0.0604,
                "shots_on_target": 0.2169,
                "total_shots": 0.6541,
                "expected_assists": 0.0346,
                "key_pass": 0.3761,
                "rating": 6.6432,
                "minutes": 23.4,
                "total_pass": 11.7914,
                "accurate_pass": 9.5397,
                "duels_won": 1.6486,
                "total_long_balls": 0.9243,
                "accurate_long_balls": 0.5494,
                "total_opp_half_passes": 8.9507,
                "accurate_opp_half_passes": 7.0959,
                "crosses_total": 0.7989,
                "crosses_accurate": 0.0,
                "touches": 18.9564,
                "possession_lost": 5.0349,
                "dispossessed": 0.7149,
                "duels_lost": 2.8291,
                "aerial_lost": 0.2499,
                "total_contest": 0.8912,
                "won_contest": 0.2394,
                "ball_recovery": 1.1398,
                "challenges_lost": 0.4975,
                "fouls": 0.7149,
                "fouls_drawn": 0.3643,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1063,
                "tackles_won": 0.147,
                "tackles": 0.7729,
                "clearances": 0.2394,
                "blocks": 0.173,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.7628,
                "xgot": 0.0817,
                "offsides": 0.0,
                "ball_carries": 5.2611,
                "total_progression": 25.9129,
                "progressive_carries": 1.0829,
                "shots_off_target": 0.4372
              },
              "params": {
                "market_value_eur": 4300000,
                "quality_factor": 0.4535,
                "boost_factor": 0.9941,
                "reference_quality": 0.505,
                "history_matches": 8,
                "history_shrink": 0.3846,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0217)",
              "stats": {
                "expected_goals": 0.0616,
                "goals": 0.0591,
                "goal_rate": 0.0591,
                "shots_on_target": 0.2167,
                "total_shots": 0.6489,
                "expected_assists": 0.0346,
                "key_pass": 0.3761,
                "rating": 6.6432,
                "minutes": 23.4,
                "total_pass": 11.7914,
                "accurate_pass": 9.5397,
                "duels_won": 1.6486,
                "total_long_balls": 0.9243,
                "accurate_long_balls": 0.5494,
                "total_opp_half_passes": 8.9507,
                "accurate_opp_half_passes": 7.0959,
                "crosses_total": 0.7859,
                "crosses_accurate": 0.0,
                "touches": 18.9564,
                "possession_lost": 5.0349,
                "dispossessed": 0.7149,
                "duels_lost": 2.8291,
                "aerial_lost": 0.2499,
                "total_contest": 0.8912,
                "won_contest": 0.2394,
                "ball_recovery": 1.1398,
                "challenges_lost": 0.4975,
                "fouls": 0.7081,
                "fouls_drawn": 0.3607,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.117,
                "tackles_won": 0.1438,
                "tackles": 0.7729,
                "clearances": 0.2394,
                "blocks": 0.173,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.7628,
                "xgot": 0.0817,
                "offsides": 0.0,
                "ball_carries": 5.2611,
                "total_progression": 25.9129,
                "progressive_carries": 1.0829,
                "shots_off_target": 0.4372
              },
              "params": {
                "blend_weight": 0.0217,
                "history_matches": 8,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.26,
                "prior_reliability": 0.0867,
                "competition": "La Liga",
                "squad": "Osasuna"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 0.7989,
                  "after": 0.7859
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.1063,
                  "after": 0.117
                },
                {
                  "stat": "fouls",
                  "before": 0.7149,
                  "after": 0.7081
                },
                {
                  "stat": "totalShots",
                  "before": 0.6541,
                  "after": 0.6489
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.4 to 26.8 expected minutes (appearance prob 0.59)",
              "stats": {
                "expected_goals": 0.0706,
                "goals": 0.0677,
                "goal_rate": 0.0677,
                "shots_on_target": 0.2483,
                "total_shots": 0.7492,
                "expected_assists": 0.0396,
                "key_pass": 0.4309,
                "rating": 6.6432,
                "minutes": 26.81,
                "total_pass": 13.5097,
                "accurate_pass": 10.9299,
                "duels_won": 1.8888,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.6295,
                "total_opp_half_passes": 10.2551,
                "accurate_opp_half_passes": 8.13,
                "crosses_total": 0.9004,
                "crosses_accurate": 0.0,
                "touches": 21.7188,
                "possession_lost": 5.7686,
                "dispossessed": 0.7149,
                "duels_lost": 3.2414,
                "aerial_lost": 0.2499,
                "total_contest": 1.0211,
                "won_contest": 0.2743,
                "ball_recovery": 1.3059,
                "challenges_lost": 0.4975,
                "fouls": 0.8113,
                "fouls_drawn": 0.4133,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1341,
                "tackles_won": 0.1648,
                "tackles": 0.8855,
                "clearances": 0.2743,
                "blocks": 0.1982,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.874,
                "xgot": 0.0936,
                "offsides": 0.0,
                "ball_carries": 6.0278,
                "total_progression": 29.6891,
                "progressive_carries": 1.2407,
                "shots_off_target": 0.5009,
                "bench_appearance_probability": 0.592,
                "bench_expected_minutes": 26.81
              },
              "params": {
                "expected_minutes": 26.81,
                "projection_minutes": 23.4,
                "minutes_scale": 1.1457,
                "appearance_probability": 0.592
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0706,
                "goals": 0.0677,
                "goal_rate": 0.0677,
                "shots_on_target": 0.2483,
                "total_shots": 0.7492,
                "expected_assists": 0.0396,
                "key_pass": 0.4309,
                "rating": 6.6432,
                "minutes": 26.81,
                "total_pass": 13.5097,
                "accurate_pass": 10.9299,
                "duels_won": 1.8888,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.6295,
                "total_opp_half_passes": 10.2551,
                "accurate_opp_half_passes": 8.13,
                "crosses_total": 0.9004,
                "crosses_accurate": 0.0,
                "touches": 21.7188,
                "possession_lost": 5.7686,
                "dispossessed": 0.7149,
                "duels_lost": 3.2414,
                "aerial_lost": 0.2499,
                "total_contest": 1.0211,
                "won_contest": 0.2743,
                "ball_recovery": 1.3059,
                "challenges_lost": 0.4975,
                "fouls": 0.8113,
                "fouls_drawn": 0.4133,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.1341,
                "tackles_won": 0.1648,
                "tackles": 0.8855,
                "clearances": 0.2743,
                "blocks": 0.1982,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.874,
                "xgot": 0.0936,
                "offsides": 0.0,
                "ball_carries": 6.0278,
                "total_progression": 29.6891,
                "progressive_carries": 1.2407,
                "shots_off_target": 0.5009,
                "bench_appearance_probability": 0.592,
                "bench_expected_minutes": 26.81
              },
              "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.0706,
                "goal_rate": 0.0677,
                "goals": 0,
                "shots_on_target": 0.2483,
                "total_shots": 0.7492,
                "expected_assists": 0.0396,
                "key_pass": 0.4309,
                "rating": 6.6432,
                "minutes": 26.81,
                "total_pass": 13.5097,
                "accurate_pass": 10.9299,
                "duels_won": 1.8888,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.6295,
                "total_opp_half_passes": 10.2551,
                "accurate_opp_half_passes": 8.13,
                "crosses_total": 0.9004,
                "crosses_accurate": 0.0,
                "touches": 21.7188,
                "possession_lost": 5.7686,
                "dispossessed": 0.7149,
                "duels_lost": 3.2414,
                "aerial_lost": 0.2499,
                "total_contest": 1.0211,
                "won_contest": 0.2743,
                "ball_recovery": 1.3059,
                "challenges_lost": 0.4975,
                "fouls": 0.8113,
                "fouls_drawn": 0.4133,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1341,
                "tackles_won": 0.1648,
                "tackles": 0.8855,
                "clearances": 0.2743,
                "blocks": 0.1982,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.874,
                "xgot": 0.0936,
                "offsides": 0.0,
                "ball_carries": 6.0278,
                "total_progression": 29.6891,
                "progressive_carries": 1.2407,
                "shots_off_target": 0.5009,
                "bench_appearance_probability": 0.592,
                "bench_expected_minutes": 26.81,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.0612,
                "goal_rate": 0.0677,
                "goals": 0,
                "shots_on_target": 0.2483,
                "total_shots": 0.7492,
                "expected_assists": 0.0343,
                "key_pass": 0.4309,
                "rating": 6.6432,
                "minutes": 26.81,
                "total_pass": 13.5097,
                "accurate_pass": 10.9299,
                "duels_won": 1.8888,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.6295,
                "total_opp_half_passes": 10.2551,
                "accurate_opp_half_passes": 8.13,
                "crosses_total": 0.9004,
                "crosses_accurate": 0.0,
                "touches": 21.7188,
                "possession_lost": 5.7686,
                "dispossessed": 0.7149,
                "duels_lost": 3.2414,
                "aerial_lost": 0.2499,
                "total_contest": 1.0211,
                "won_contest": 0.2743,
                "ball_recovery": 1.3059,
                "challenges_lost": 0.4975,
                "fouls": 0.8113,
                "fouls_drawn": 0.4133,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1341,
                "tackles_won": 0.1648,
                "tackles": 0.8855,
                "clearances": 0.2743,
                "blocks": 0.1982,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.874,
                "xgot": 0.0811,
                "offsides": 0.0,
                "ball_carries": 6.0278,
                "total_progression": 29.6891,
                "progressive_carries": 1.2407,
                "shots_off_target": 0.5009,
                "bench_appearance_probability": 0.592,
                "bench_expected_minutes": 26.81,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.976,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 0.592
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0706,
                  "after": 0.0612
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0396,
                  "after": 0.0343
                }
              ]
            },
            {
              "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": {
                "expected_goals": 0.0612,
                "goal_rate": 0.0677,
                "goals": 0,
                "shots_on_target": 0.2483,
                "total_shots": 0.7492,
                "expected_assists": 0.0343,
                "key_pass": 0.4309,
                "rating": 6.6432,
                "minutes": 26.81,
                "total_pass": 13.5097,
                "accurate_pass": 10.9299,
                "duels_won": 1.8888,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.6295,
                "total_opp_half_passes": 10.2551,
                "accurate_opp_half_passes": 8.13,
                "crosses_total": 0.9004,
                "crosses_accurate": 0.0,
                "touches": 21.7188,
                "possession_lost": 5.7686,
                "dispossessed": 0.7149,
                "duels_lost": 3.2414,
                "aerial_lost": 0.2499,
                "total_contest": 1.0211,
                "won_contest": 0.2743,
                "ball_recovery": 1.3059,
                "challenges_lost": 0.4975,
                "fouls": 0.8113,
                "fouls_drawn": 0.4133,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1341,
                "tackles_won": 0.1648,
                "tackles": 0.8855,
                "clearances": 0.2743,
                "blocks": 0.1982,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.874,
                "xgot": 0.0811,
                "offsides": 0.0,
                "ball_carries": 6.0278,
                "total_progression": 29.6891,
                "progressive_carries": 1.2407,
                "shots_off_target": 0.5009,
                "bench_appearance_probability": 0.592,
                "bench_expected_minutes": 26.81,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.976,
                "creation_factor": 0.8,
                "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_filled",
                "ranking_status": "combined",
                "global_player_rank": 2777,
                "fifa_rank": 1404.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0612,
                "goal_rate": 0.0677,
                "goals": 0,
                "shots_on_target": 0.2483,
                "total_shots": 0.7492,
                "expected_assists": 0.0343,
                "key_pass": 0.4309,
                "rating": 6.6432,
                "minutes": 26.81,
                "total_pass": 13.5097,
                "accurate_pass": 10.9299,
                "duels_won": 1.8888,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.6295,
                "total_opp_half_passes": 10.2551,
                "accurate_opp_half_passes": 8.13,
                "crosses_total": 0.9004,
                "crosses_accurate": 0.0,
                "touches": 21.7188,
                "possession_lost": 5.7686,
                "dispossessed": 0.7149,
                "duels_lost": 3.2414,
                "aerial_lost": 0.2499,
                "total_contest": 1.0211,
                "won_contest": 0.2743,
                "ball_recovery": 1.3059,
                "challenges_lost": 0.4975,
                "fouls": 0.8113,
                "fouls_drawn": 0.4133,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1341,
                "tackles_won": 0.1648,
                "tackles": 0.8855,
                "clearances": 0.2743,
                "blocks": 0.1982,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.874,
                "xgot": 0.0811,
                "offsides": 0.0,
                "ball_carries": 6.0278,
                "total_progression": 29.6891,
                "progressive_carries": 1.2407,
                "shots_off_target": 0.5009,
                "bench_appearance_probability": 0.592,
                "bench_expected_minutes": 26.81,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0581,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.976,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0581,
                "goal_rate": 0.0677,
                "scorer_weight": 0.0597,
                "squad_weight_total": 1.3652,
                "weight_share": 0.0438,
                "finishing_factor": 0.976,
                "appearance_weight": 0.592,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.0612,
                "goal_rate": 0.0677,
                "goals": 0,
                "shots_on_target": 0.2483,
                "total_shots": 0.7492,
                "expected_assists": 0.0343,
                "key_pass": 0.4309,
                "rating": 6.6432,
                "minutes": 26.81,
                "total_pass": 13.5097,
                "accurate_pass": 10.9299,
                "duels_won": 1.8888,
                "total_long_balls": 1.059,
                "accurate_long_balls": 0.6295,
                "total_opp_half_passes": 10.2551,
                "accurate_opp_half_passes": 8.13,
                "crosses_total": 0.9004,
                "crosses_accurate": 0.0,
                "touches": 21.7188,
                "possession_lost": 5.7686,
                "dispossessed": 0.7149,
                "duels_lost": 3.2414,
                "aerial_lost": 0.2499,
                "total_contest": 1.0211,
                "won_contest": 0.2743,
                "ball_recovery": 1.3059,
                "challenges_lost": 0.4975,
                "fouls": 0.8113,
                "fouls_drawn": 0.4133,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.1341,
                "tackles_won": 0.1648,
                "tackles": 0.8855,
                "clearances": 0.2743,
                "blocks": 0.1982,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.874,
                "xgot": 0.0811,
                "offsides": 0.0,
                "ball_carries": 6.0278,
                "total_progression": 29.6891,
                "progressive_carries": 1.2407,
                "shots_off_target": 0.5009,
                "bench_appearance_probability": 0.592,
                "bench_expected_minutes": 26.81,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0581,
                "projected_assists": 0,
                "assist_probability": 0.0333,
                "finishing_factor": 0.976,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0333,
                "assist_rate": 0.0,
                "provider_weight": 0.0274,
                "squad_weight_total": 0.9792,
                "weight_share": 0.028,
                "creation_factor": 0.8,
                "appearance_weight": 0.592,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Romain Del Castillo": {
          "player_id": 825681,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 20,
          "height": 172,
          "market_value": 6400000,
          "stats": {
            "expected_goals": 0.0801,
            "goal_rate": 0.078,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0295,
            "key_pass": 0,
            "rating": 6.5749,
            "minutes": 25,
            "total_pass": 9,
            "accurate_pass": 9,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 7,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 14,
            "possession_lost": 1.9771,
            "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": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 3,
            "total_progression": 6,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.566,
            "bench_expected_minutes": 25.46,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.395,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0747,
            "projected_assists": 0,
            "assist_probability": 0.0287,
            "finishing_factor": 0.8731,
            "creation_factor": 0.8,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16416335,
              "match_date": "2026-09-16",
              "home_team": "Atlético Madrid",
              "away_team": "Osasuna",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 16,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 6,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416327,
              "match_date": "2026-09-12",
              "home_team": "Osasuna",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Osasuna",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 19,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.028,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 8,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 3024,
            "combined_rank_score": 1002.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 1827.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.5749,
            "source_file": "data/player_rankings.csv",
            "player_name": "Romain Del Castillo",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Antonee Burke-Gilroy",
                  "ranking": 3019
                },
                {
                  "player_name": "Kim Min-Joon",
                  "ranking": 3020
                },
                {
                  "player_name": "Jasir Asani",
                  "ranking": 3021
                },
                {
                  "player_name": "Robert Andrich",
                  "ranking": 3022
                },
                {
                  "player_name": "Stav Torial",
                  "ranking": 3023
                }
              ],
              "lower": [
                {
                  "player_name": "Alberto Riccardi",
                  "ranking": 3025
                },
                {
                  "player_name": "Dong-geon No",
                  "ranking": 3026
                },
                {
                  "player_name": "Alexander Pastene",
                  "ranking": 3027
                },
                {
                  "player_name": "Dumitru Celeadnic",
                  "ranking": 3028
                },
                {
                  "player_name": "Leo Kapilevich",
                  "ranking": 3029
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.375,
          "history_matches": 2,
          "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": 2,
            "data_confidence": 0.375,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.458124038509048,
            "bench_appearance_prob": 0.5662783653867749,
            "market_value_adjustment": 0.9945,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (2 historical appearances) to 25.5 expected mins (appearance prob 0.57)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0713,
                "goals": 0.0576,
                "goal_rate": 0.0576,
                "shots_on_target": 0.2559,
                "total_shots": 0.6026,
                "expected_assists": 0.0263,
                "key_pass": 0.2695,
                "rating": 6.5749,
                "minutes": 18.69,
                "total_pass": 6.9189,
                "accurate_pass": 6.9189,
                "duels_won": 1.9189,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.2973,
                "accurate_opp_half_passes": 5.2973,
                "crosses_total": 1.4595,
                "crosses_accurate": 0.0,
                "touches": 10.2973,
                "possession_lost": 1.4595,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.5405,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.4595,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.4595,
                "tackles": 0.4595,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.0,
                "total_progression": 4.3298,
                "progressive_carries": 0.0,
                "shots_off_target": 0.3467
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:06:24.593912+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-16",
                    "opponent": "Atlético Madrid",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.5405,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Espanyol",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.4595,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 0.0,
                  "totalOppositionHalfPasses": 5.2973,
                  "expectedGoals": 0.0,
                  "accurateOppositionHalfPasses": 5.2973,
                  "accuratePass": 6.9189,
                  "totalShots": 0.0
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07133576273918152,
                    "model_output": 0.0713,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0859
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0175
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0081
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0054
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0042
                        }
                      ],
                      "others": -0.0051,
                      "total": 0.0713,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.570699
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.170809
                        },
                        {
                          "name": "goals",
                          "margin": -0.08992
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.065119
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.053621
                        }
                      ],
                      "others_margin": -0.068273
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05758912116289139,
                    "model_output": 0.0576,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0768
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0241
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0111
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0063
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0051
                        }
                      ],
                      "others": -0.0224,
                      "total": 0.0576,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.473935
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.211029
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.114943
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.071675
                        },
                        {
                          "name": "goals",
                          "margin": -0.061684
                        }
                      ],
                      "others_margin": -0.328365
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.255876749753952,
                    "model_output": 0.2559,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1897
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0213
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0174
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0138
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0104
                        }
                      ],
                      "others": -0.0291,
                      "total": 0.2559,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.435151
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.0633
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.054639
                        },
                        {
                          "name": "goals",
                          "margin": -0.045629
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.035883
                        }
                      ],
                      "others_margin": -0.107908
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.602555513381958,
                    "model_output": 0.6026,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5046
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1366
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0435
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0432
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0386
                        }
                      ],
                      "others": -0.0819,
                      "total": 0.6026,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.50465
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.136609
                        },
                        {
                          "name": "goals",
                          "margin": -0.043489
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.043239
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": 0.038587
                        }
                      ],
                      "others_margin": -0.081884
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.026286005973815918,
                    "model_output": 0.0263,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0155
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0068
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0053
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0036
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0027
                        }
                      ],
                      "others": -0.004,
                      "total": 0.0263,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.276837
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.150337
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.134129
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.104517
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.08478
                        }
                      ],
                      "others_margin": -0.142609
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.26951083540916443,
                    "model_output": 0.2695,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2494
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0317
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0275
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.025
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0204
                        }
                      ],
                      "others": -0.0499,
                      "total": 0.2695,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.462575
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.07782
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.072674
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.071098
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.061844
                        }
                      ],
                      "others_margin": -0.169674
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.5749287605285645,
                    "model_output": 6.5749,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0455
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0176
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0135
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0128
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0128
                        }
                      ],
                      "others": -0.0899,
                      "total": 6.5749,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.045473
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.017633
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.013466
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.012848
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.012835
                        }
                      ],
                      "others_margin": -0.089821
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 2,
                  "role_matches": 2,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9945, quality 0.479)",
              "stats": {
                "expected_goals": 0.0709,
                "goals": 0.0573,
                "goal_rate": 0.0573,
                "shots_on_target": 0.2545,
                "total_shots": 0.5993,
                "expected_assists": 0.0261,
                "key_pass": 0.268,
                "rating": 6.5749,
                "minutes": 18.69,
                "total_pass": 6.8808,
                "accurate_pass": 6.8808,
                "duels_won": 1.9083,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 5.2682,
                "accurate_opp_half_passes": 5.2682,
                "crosses_total": 1.4515,
                "crosses_accurate": 0.0,
                "touches": 10.2407,
                "possession_lost": 1.4515,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.5375,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.457,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.457,
                "tackles": 0.457,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.989,
                "total_progression": 4.306,
                "progressive_carries": 0.0,
                "shots_off_target": 0.3448
              },
              "params": {
                "market_value_eur": 6400000,
                "quality_factor": 0.4793,
                "boost_factor": 0.9945,
                "reference_quality": 0.505,
                "history_matches": 2,
                "history_shrink": 0.7143,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 18.7 to 25.5 expected minutes (appearance prob 0.57)",
              "stats": {
                "expected_goals": 0.0966,
                "goals": 0.078,
                "goal_rate": 0.078,
                "shots_on_target": 0.3467,
                "total_shots": 0.8164,
                "expected_assists": 0.0356,
                "key_pass": 0.365,
                "rating": 6.5749,
                "minutes": 25.46,
                "total_pass": 9.3725,
                "accurate_pass": 9.3725,
                "duels_won": 2.5993,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1759,
                "accurate_opp_half_passes": 7.1759,
                "crosses_total": 1.9771,
                "crosses_accurate": 0.0,
                "touches": 13.9491,
                "possession_lost": 1.9771,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7321,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.6225,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.6225,
                "tackles": 0.6225,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.7093,
                "total_progression": 5.8653,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4697,
                "bench_appearance_probability": 0.566,
                "bench_expected_minutes": 25.46
              },
              "params": {
                "expected_minutes": 25.46,
                "projection_minutes": 18.69,
                "minutes_scale": 1.3621,
                "appearance_probability": 0.566
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0966,
                "goals": 0.078,
                "goal_rate": 0.078,
                "shots_on_target": 0.3467,
                "total_shots": 0.8164,
                "expected_assists": 0.0356,
                "key_pass": 0.365,
                "rating": 6.5749,
                "minutes": 25.46,
                "total_pass": 9.3725,
                "accurate_pass": 9.3725,
                "duels_won": 2.5993,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1759,
                "accurate_opp_half_passes": 7.1759,
                "crosses_total": 1.9771,
                "crosses_accurate": 0.0,
                "touches": 13.9491,
                "possession_lost": 1.9771,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7321,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.6225,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.6225,
                "tackles": 0.6225,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.7093,
                "total_progression": 5.8653,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4697,
                "bench_appearance_probability": 0.566,
                "bench_expected_minutes": 25.46
              },
              "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.0966,
                "goal_rate": 0.078,
                "goals": 0,
                "shots_on_target": 0.3467,
                "total_shots": 0.8164,
                "expected_assists": 0.0356,
                "key_pass": 0.365,
                "rating": 6.5749,
                "minutes": 25.46,
                "total_pass": 9.3725,
                "accurate_pass": 9.3725,
                "duels_won": 2.5993,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1759,
                "accurate_opp_half_passes": 7.1759,
                "crosses_total": 1.9771,
                "crosses_accurate": 0.0,
                "touches": 13.9491,
                "possession_lost": 1.9771,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7321,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.6225,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6225,
                "tackles": 0.6225,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.7093,
                "total_progression": 5.8653,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4697,
                "bench_appearance_probability": 0.566,
                "bench_expected_minutes": 25.46,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.30 (squad xG sum 0.8913, xG scale 1.4642, xA scale 1.4642, team xA 0.98 = 0.75 x lambda)",
              "stats": {
                "expected_goals": 0.0801,
                "goal_rate": 0.078,
                "goals": 0,
                "shots_on_target": 0.3467,
                "total_shots": 0.8164,
                "expected_assists": 0.0295,
                "key_pass": 0.365,
                "rating": 6.5749,
                "minutes": 25.46,
                "total_pass": 9.3725,
                "accurate_pass": 9.3725,
                "duels_won": 2.5993,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1759,
                "accurate_opp_half_passes": 7.1759,
                "crosses_total": 1.9771,
                "crosses_accurate": 0.0,
                "touches": 13.9491,
                "possession_lost": 1.9771,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7321,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.6225,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6225,
                "tackles": 0.6225,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.7093,
                "total_progression": 5.8653,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4697,
                "bench_appearance_probability": 0.566,
                "bench_expected_minutes": 25.46,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8731,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.305,
                "squad_xg_sum": 0.8913,
                "squad_xa_sum": 0.6669,
                "team_expected_assists": 0.9765,
                "team_xa_to_xg_ratio": 0.7482,
                "bench_appearance_weighted": true,
                "xg_scale": 1.4642,
                "xa_scale": 1.4642,
                "opponent_lambda": 1.39,
                "scoreline_reset": true,
                "appearance_weight": 0.566
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0966,
                  "after": 0.0801
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0356,
                  "after": 0.0295
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 76.0)",
              "stats": {
                "expected_goals": 0.0801,
                "goal_rate": 0.078,
                "goals": 0,
                "shots_on_target": 0.3467,
                "total_shots": 0.8164,
                "expected_assists": 0.0295,
                "key_pass": 0.365,
                "rating": 6.5749,
                "minutes": 25.46,
                "total_pass": 9.3725,
                "accurate_pass": 9.3725,
                "duels_won": 2.5993,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1759,
                "accurate_opp_half_passes": 7.1759,
                "crosses_total": 1.9771,
                "crosses_accurate": 0.0,
                "touches": 13.9491,
                "possession_lost": 1.9771,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7321,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.6225,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6225,
                "tackles": 0.6225,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.7093,
                "total_progression": 5.8653,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4697,
                "bench_appearance_probability": 0.566,
                "bench_expected_minutes": 25.46,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8731,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3024,
                "fifa_rank": 1827.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0801,
                "goal_rate": 0.078,
                "goals": 0,
                "shots_on_target": 0.3467,
                "total_shots": 0.8164,
                "expected_assists": 0.0295,
                "key_pass": 0.365,
                "rating": 6.5749,
                "minutes": 25.46,
                "total_pass": 9.3725,
                "accurate_pass": 9.3725,
                "duels_won": 2.5993,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1759,
                "accurate_opp_half_passes": 7.1759,
                "crosses_total": 1.9771,
                "crosses_accurate": 0.0,
                "touches": 13.9491,
                "possession_lost": 1.9771,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7321,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.6225,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6225,
                "tackles": 0.6225,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.7093,
                "total_progression": 5.8653,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4697,
                "bench_appearance_probability": 0.566,
                "bench_expected_minutes": 25.46,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0747,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8731,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0747,
                "goal_rate": 0.078,
                "scorer_weight": 0.0699,
                "squad_weight_total": 1.3652,
                "weight_share": 0.0512,
                "finishing_factor": 0.8731,
                "appearance_weight": 0.566,
                "weight_rank": 4,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Ante Budimir",
                    "weight": 0.6511,
                    "already": 0,
                    "effective_weight": 0.6511,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1833
                  }
                ]
              }
            },
            {
              "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.0801,
                "goal_rate": 0.078,
                "goals": 0,
                "shots_on_target": 0.3467,
                "total_shots": 0.8164,
                "expected_assists": 0.0295,
                "key_pass": 0.365,
                "rating": 6.5749,
                "minutes": 25.46,
                "total_pass": 9.3725,
                "accurate_pass": 9.3725,
                "duels_won": 2.5993,
                "total_long_balls": 0.0,
                "accurate_long_balls": 0.0,
                "total_opp_half_passes": 7.1759,
                "accurate_opp_half_passes": 7.1759,
                "crosses_total": 1.9771,
                "crosses_accurate": 0.0,
                "touches": 13.9491,
                "possession_lost": 1.9771,
                "dispossessed": 0.0,
                "duels_lost": 0.0,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7321,
                "challenges_lost": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.6225,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.6225,
                "tackles": 0.6225,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.7093,
                "total_progression": 5.8653,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4697,
                "bench_appearance_probability": 0.566,
                "bench_expected_minutes": 25.46,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.395,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0747,
                "projected_assists": 0,
                "assist_probability": 0.0287,
                "finishing_factor": 0.8731,
                "creation_factor": 0.8,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0287,
                "assist_rate": 0.0,
                "provider_weight": 0.0236,
                "squad_weight_total": 0.9792,
                "weight_share": 0.0241,
                "creation_factor": 0.8,
                "appearance_weight": 0.566,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Alejandro Catena",
                    "weight": 0.2174,
                    "already": 0,
                    "effective_weight": 0.2174,
                    "runner_up": "Rubén García",
                    "runner_up_effective_weight": 0.1419,
                    "blocked_own_goal": [
                      "Ante Budimir"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.3,
        "expected_assists": 0.98,
        "total_shots": 10,
        "shots_on_target": 1,
        "total_passes": 392,
        "interceptions": 8,
        "tackles": 15,
        "avg_rating": 6.81,
        "possession_estimated_pct": 50.7,
        "pressing_actions_per_90": 6.1
      }
    },
    "Racing Club": {
      "formation": "4-2-3-1",
      "players": {
        "Yassir Zabiri": {
          "player_id": 1606013,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 21,
          "height": 182,
          "market_value": 22000000,
          "stats": {
            "expected_goals": 0.5614,
            "goal_rate": 0.5787,
            "goals": 1,
            "shots_on_target": 1,
            "total_shots": 3,
            "expected_assists": 0.0456,
            "key_pass": 1,
            "rating": 6.7175,
            "minutes": 80,
            "total_pass": 10,
            "accurate_pass": 7,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 22,
            "possession_lost": 7.648,
            "dispossessed": 0.8422,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 0,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 1.0079,
            "offsides": 0,
            "ball_carries": 5,
            "total_progression": 9,
            "progressive_carries": 0,
            "shots_off_target": 1,
            "duel_xg_multiplier": 1.0437,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.4,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.23,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Enzo Boyomo, Alejandro Catena",
            "opponent_faced": "Enzo Boyomo, Alejandro Catena",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.4296,
            "projected_assists": 0,
            "assist_probability": 0.0446,
            "finishing_factor": 1.2472,
            "creation_factor": 0.8,
            "fifa_overall": 66.0
          },
          "latest_10_games": [
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Valencia",
              "stats": {
                "minutes": 87,
                "rating": 7.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4404,
                "expected_assists": 0.0034,
                "total_shots": 3,
                "shots_on_target": 3,
                "total_pass": 6,
                "accurate_pass": 4,
                "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": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 75,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0304,
                "expected_assists": 0.0043,
                "total_shots": 1,
                "total_pass": 8,
                "accurate_pass": 7,
                "interceptions": 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": 16416346,
              "match_date": "2026-09-16",
              "home_team": "FC Barcelona",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 31,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.2463,
                "expected_assists": 0.0009,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 5,
                "accurate_pass": 5,
                "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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 74,
                "rating": 8.6,
                "goal_rate": 2.0,
                "goals": 2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.5057,
                "expected_assists": 0.0212,
                "total_shots": 5,
                "shots_on_target": 3,
                "shots_off_target": 1,
                "total_pass": 16,
                "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": 16416321,
              "match_date": "2026-09-05",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 5.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0316,
                "expected_assists": 0.0372,
                "total_shots": 1,
                "total_pass": 13,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416304,
              "match_date": "2026-08-28",
              "home_team": "Real Racing Club",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Elche",
              "stats": {
                "minutes": 69,
                "rating": 10.0,
                "goal_rate": 3.0,
                "goals": 3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.7095,
                "expected_assists": 0.0239,
                "total_shots": 5,
                "shots_on_target": 3,
                "total_pass": 8,
                "accurate_pass": 5,
                "tackles": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416300,
              "match_date": "2026-08-23",
              "home_team": "Getafe",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Getafe",
              "stats": {
                "minutes": 26,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0086,
                "total_shots": 0,
                "total_pass": 7,
                "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": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 21,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0107,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 6997,
            "combined_rank_score": 5331.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 112.0,
            "sofascore_rating": 7.4333,
            "sofascore_appearances": 3.0,
            "fifa_rank": 10550.0,
            "fifa_overall": 66.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7175,
            "source_file": "data/player_rankings.csv",
            "player_name": "Yassir Zabiri",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Carlos Garcés",
                  "ranking": 6992
                },
                {
                  "player_name": "Joel Canchimbo",
                  "ranking": 6993
                },
                {
                  "player_name": "Mateo García",
                  "ranking": 6994
                },
                {
                  "player_name": "Alan Rodríguez",
                  "ranking": 6995
                },
                {
                  "player_name": "Mateo Gamarra",
                  "ranking": 6996
                }
              ],
              "lower": [
                {
                  "player_name": "Jorge Daniel Valencia",
                  "ranking": 6998
                },
                {
                  "player_name": "Adrian Bajrami",
                  "ranking": 6999
                },
                {
                  "player_name": "Iván Leguizamón",
                  "ranking": 7000
                },
                {
                  "player_name": "Rubén Lezcano",
                  "ranking": 7001
                },
                {
                  "player_name": "Marcos Mina",
                  "ranking": 7002
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.763,
          "history_matches": 8,
          "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": 8,
            "data_confidence": 0.763,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0168,
            "fbref_prior_metrics": {
              "squad": "Racing Sant",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 1.0,
              "minutes": 117.0,
              "goals_per90": 2.3076923076923075,
              "assists_per90": 0.0,
              "shots_per90": 3.85,
              "shots_on_target_pct": 60.0,
              "prior_reliability": 0.0867
            },
            "rationale": "XGBoost regressor (F_service) evaluated 8 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Racing Sant, rel: 0.09, gls/90: 2.3076923076923075, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.4279,
                "goals": 0.5129,
                "goal_rate": 0.5129,
                "shots_on_target": 1.2095,
                "total_shots": 2.4563,
                "expected_assists": 0.0363,
                "key_pass": 0.5638,
                "rating": 6.7175,
                "minutes": 79.77,
                "total_pass": 9.8472,
                "accurate_pass": 7.2148,
                "duels_won": 2.2907,
                "total_long_balls": 0.3356,
                "accurate_long_balls": 0.3356,
                "total_opp_half_passes": 6.8636,
                "accurate_opp_half_passes": 4.7324,
                "crosses_total": 0.1656,
                "crosses_accurate": 0.0,
                "touches": 21.2906,
                "possession_lost": 7.5216,
                "dispossessed": 0.8283,
                "duels_lost": 4.3843,
                "aerial_lost": 0.8052,
                "total_contest": 0.7896,
                "won_contest": 0.624,
                "ball_recovery": 0.2696,
                "challenges_lost": 0.6937,
                "fouls": 2.0864,
                "fouls_drawn": 0.5896,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.2292,
                "tackles_won": 0.526,
                "tackles": 0.9364,
                "clearances": 0.4223,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.7683,
                "offsides": 0.3356,
                "ball_carries": 4.9528,
                "total_progression": 9.3281,
                "progressive_carries": 0.3604,
                "shots_off_target": 1.2468
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:06:24.593912+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Valencia",
                    "minutes": 87.0,
                    "is_starting": true,
                    "weight": 0.2062,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Celta Vigo",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.1753,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "FC Barcelona",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.149,
                    "rating": 7.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Deportivo Alavés",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.1266,
                    "rating": 8.6
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1076,
                    "rating": 5.7
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Elche",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.0915,
                    "rating": 10.0
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Getafe",
                    "minutes": 26.0,
                    "is_starting": false,
                    "weight": 0.0778,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Villarreal",
                    "minutes": 21.0,
                    "is_starting": false,
                    "weight": 0.0661,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 8.0,
                  "is_starting_11": 1.0,
                  "totalOppositionHalfPasses": 5.4457,
                  "expectedGoals": 0.5408,
                  "accurateOppositionHalfPasses": 3.8946,
                  "accuratePass": 6.4068,
                  "totalShots": 2.2899
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.4279409646987915,
                    "model_output": 0.4279,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0636
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0659
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0367
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0246
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0211
                        }
                      ],
                      "others": 0.0185,
                      "total": 0.4279,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.279177
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.225074
                        },
                        {
                          "name": "goals",
                          "margin": 0.106459
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.065354
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.052881
                        }
                      ],
                      "others_margin": 0.044201
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.5129320621490479,
                    "model_output": 0.5129,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0858
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0668
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0429
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.036
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0371
                        }
                      ],
                      "others": 0.0409,
                      "total": 0.5129,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.351989
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.207964
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.113788
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.08643
                        },
                        {
                          "name": "goals",
                          "margin": 0.08188
                        }
                      ],
                      "others_margin": 0.083126
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 1.209496259689331,
                    "model_output": 1.2095,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2039
                        },
                        {
                          "name": "goals",
                          "contribution": 0.0826
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0792
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0836
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0882
                        }
                      ],
                      "others": 0.1344,
                      "total": 1.2095,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.321479
                        },
                        {
                          "name": "goals",
                          "margin": 0.105602
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.09171
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.088518
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.085563
                        }
                      ],
                      "others_margin": 0.117882
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 2.45627760887146,
                    "model_output": 2.4563,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5416
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1926
                        },
                        {
                          "name": "goals",
                          "contribution": 0.1346
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.111
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0715
                        }
                      ],
                      "others": 0.0312,
                      "total": 2.4563,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.541577
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.19264
                        },
                        {
                          "name": "goals",
                          "margin": 0.134629
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.110963
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": 0.071482
                        }
                      ],
                      "others_margin": 0.031146
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03631426766514778,
                    "model_output": 0.0363,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0183
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0134
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0085
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0066
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0052
                        }
                      ],
                      "others": -0.0125,
                      "total": 0.0363,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.251127
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.17715
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.130387
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.115799
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.100714
                        }
                      ],
                      "others_margin": -0.297112
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.5637856125831604,
                    "model_output": 0.5638,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1911
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0599
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0505
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0444
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0323
                        }
                      ],
                      "others": -0.1136,
                      "total": 0.5638,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.249831
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.071815
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.064779
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.060721
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.046648
                        }
                      ],
                      "others_margin": -0.183487
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.717477321624756,
                    "model_output": 6.7175,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0511
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0438
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0261
                        },
                        {
                          "name": "bigChanceMissed",
                          "contribution": -0.0233
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": -0.0224
                        }
                      ],
                      "others": -0.1248,
                      "total": 6.7175,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.051071
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.043793
                        },
                        {
                          "name": "rating",
                          "margin": 0.02606
                        },
                        {
                          "name": "bigChanceMissed",
                          "margin": -0.023335
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": -0.022352
                        }
                      ],
                      "others_margin": -0.124762
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 8,
                  "role_matches": 5,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0168, quality 0.650)",
              "stats": {
                "expected_goals": 0.4351,
                "goals": 0.5215,
                "goal_rate": 0.5215,
                "shots_on_target": 1.2298,
                "total_shots": 2.4976,
                "expected_assists": 0.0369,
                "key_pass": 0.5733,
                "rating": 6.7175,
                "minutes": 79.77,
                "total_pass": 10.0126,
                "accurate_pass": 7.336,
                "duels_won": 2.3292,
                "total_long_balls": 0.3412,
                "accurate_long_balls": 0.3412,
                "total_opp_half_passes": 6.9789,
                "accurate_opp_half_passes": 4.8119,
                "crosses_total": 0.1684,
                "crosses_accurate": 0.0,
                "touches": 21.6483,
                "possession_lost": 7.648,
                "dispossessed": 0.8422,
                "duels_lost": 4.458,
                "aerial_lost": 0.8187,
                "total_contest": 0.8029,
                "won_contest": 0.6345,
                "ball_recovery": 0.2741,
                "challenges_lost": 0.7054,
                "fouls": 2.1215,
                "fouls_drawn": 0.5995,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.2331,
                "tackles_won": 0.5348,
                "tackles": 0.9521,
                "clearances": 0.4294,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.7812,
                "offsides": 0.3412,
                "ball_carries": 5.036,
                "total_progression": 9.4848,
                "progressive_carries": 0.3665,
                "shots_off_target": 1.2677
              },
              "params": {
                "market_value_eur": 22000000,
                "quality_factor": 0.6503,
                "boost_factor": 1.0168,
                "reference_quality": 0.505,
                "history_matches": 8,
                "history_shrink": 0.3846,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0217)",
              "stats": {
                "expected_goals": 0.4351,
                "goals": 0.5545,
                "goal_rate": 0.5545,
                "shots_on_target": 1.2475,
                "total_shots": 2.5174,
                "expected_assists": 0.0369,
                "key_pass": 0.5733,
                "rating": 6.7175,
                "minutes": 79.77,
                "total_pass": 10.0126,
                "accurate_pass": 7.336,
                "duels_won": 2.3292,
                "total_long_balls": 0.3412,
                "accurate_long_balls": 0.3412,
                "total_opp_half_passes": 6.9789,
                "accurate_opp_half_passes": 4.8119,
                "crosses_total": 0.1647,
                "crosses_accurate": 0.0,
                "touches": 21.6483,
                "possession_lost": 7.648,
                "dispossessed": 0.8422,
                "duels_lost": 4.458,
                "aerial_lost": 0.8187,
                "total_contest": 0.8029,
                "won_contest": 0.6345,
                "ball_recovery": 0.2741,
                "challenges_lost": 0.7054,
                "fouls": 2.1199,
                "fouls_drawn": 0.5865,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.228,
                "tackles_won": 0.5232,
                "tackles": 0.9521,
                "clearances": 0.4294,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.7812,
                "offsides": 0.3634,
                "ball_carries": 5.036,
                "total_progression": 9.4848,
                "progressive_carries": 0.3665,
                "shots_off_target": 1.2677
              },
              "params": {
                "blend_weight": 0.0217,
                "history_matches": 8,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8863,
                "prior_reliability": 0.0867,
                "competition": "La Liga",
                "squad": "Racing Sant"
              },
              "changes": [
                {
                  "stat": "goals",
                  "before": 0.5215,
                  "after": 0.5545
                },
                {
                  "stat": "totalOffside",
                  "before": 0.3412,
                  "after": 0.3634
                },
                {
                  "stat": "totalShots",
                  "before": 2.4976,
                  "after": 2.5174
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 1.2298,
                  "after": 1.2475
                },
                {
                  "stat": "wasFouled",
                  "before": 0.5995,
                  "after": 0.5865
                },
                {
                  "stat": "wonTackle",
                  "before": 0.5348,
                  "after": 0.5232
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.2331,
                  "after": 0.228
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.4351,
                "goals": 0.5545,
                "goal_rate": 0.5545,
                "shots_on_target": 1.2475,
                "total_shots": 2.5174,
                "expected_assists": 0.0369,
                "key_pass": 0.5733,
                "rating": 6.7175,
                "minutes": 79.77,
                "total_pass": 10.0126,
                "accurate_pass": 7.336,
                "duels_won": 2.3292,
                "total_long_balls": 0.3412,
                "accurate_long_balls": 0.3412,
                "total_opp_half_passes": 6.9789,
                "accurate_opp_half_passes": 4.8119,
                "crosses_total": 0.1647,
                "crosses_accurate": 0.0,
                "touches": 21.6483,
                "possession_lost": 7.648,
                "dispossessed": 0.8422,
                "duels_lost": 4.458,
                "aerial_lost": 0.8187,
                "total_contest": 0.8029,
                "won_contest": 0.6345,
                "ball_recovery": 0.2741,
                "challenges_lost": 0.7054,
                "fouls": 2.1199,
                "fouls_drawn": 0.5865,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.228,
                "tackles_won": 0.5232,
                "tackles": 0.9521,
                "clearances": 0.4294,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.7812,
                "offsides": 0.3634,
                "ball_carries": 5.036,
                "total_progression": 9.4848,
                "progressive_carries": 0.3665,
                "shots_off_target": 1.2677
              },
              "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.4541,
                "goals": 0.5787,
                "goal_rate": 0.5787,
                "shots_on_target": 1.302,
                "total_shots": 2.6274,
                "expected_assists": 0.0369,
                "key_pass": 0.5733,
                "rating": 6.7175,
                "minutes": 79.77,
                "total_pass": 10.0126,
                "accurate_pass": 7.336,
                "duels_won": 2.3292,
                "total_long_balls": 0.3412,
                "accurate_long_balls": 0.3412,
                "total_opp_half_passes": 6.9789,
                "accurate_opp_half_passes": 4.8119,
                "crosses_total": 0.1647,
                "crosses_accurate": 0.0,
                "touches": 21.6483,
                "possession_lost": 7.648,
                "dispossessed": 0.8422,
                "duels_lost": 4.458,
                "aerial_lost": 0.8187,
                "total_contest": 0.8029,
                "won_contest": 0.6345,
                "ball_recovery": 0.2741,
                "challenges_lost": 0.7054,
                "fouls": 2.1199,
                "fouls_drawn": 0.5865,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.228,
                "tackles_won": 0.5232,
                "tackles": 0.9521,
                "clearances": 0.4294,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.8153,
                "offsides": 0.3634,
                "ball_carries": 5.036,
                "total_progression": 9.4848,
                "progressive_carries": 0.3665,
                "shots_off_target": 1.3231,
                "duel_xg_multiplier": 1.0437,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.23,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.23,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v2",
                  "xg_multiplier": 1.0437,
                  "skill_edge": 0.0517,
                  "height_edge": -0.022,
                  "attacker_skill": 0.6503,
                  "defender_skill": 0.5353,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Enzo Boyomo",
                      "market_value": 14600000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.6258
                    },
                    {
                      "player": "Alejandro Catena",
                      "market_value": 2700000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4449
                    }
                  ],
                  "xg_override": 0.4541
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 2.5174,
                  "after": 2.6274
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.2677,
                  "after": 1.3231
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 1.2475,
                  "after": 1.302
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.7812,
                  "after": 0.8153
                },
                {
                  "stat": "goals",
                  "before": 0.5545,
                  "after": 0.5787
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.4351,
                  "after": 0.4541
                }
              ]
            },
            {
              "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.4541,
                "goal_rate": 0.5787,
                "goals": 0,
                "shots_on_target": 1.302,
                "total_shots": 2.6274,
                "expected_assists": 0.0369,
                "key_pass": 0.5733,
                "rating": 6.7175,
                "minutes": 79.77,
                "total_pass": 10.0126,
                "accurate_pass": 7.336,
                "duels_won": 2.3292,
                "total_long_balls": 0.3412,
                "accurate_long_balls": 0.3412,
                "total_opp_half_passes": 6.9789,
                "accurate_opp_half_passes": 4.8119,
                "crosses_total": 0.1647,
                "crosses_accurate": 0.0,
                "touches": 21.6483,
                "possession_lost": 7.648,
                "dispossessed": 0.8422,
                "duels_lost": 4.458,
                "aerial_lost": 0.8187,
                "total_contest": 0.8029,
                "won_contest": 0.6345,
                "ball_recovery": 0.2741,
                "challenges_lost": 0.7054,
                "fouls": 2.1199,
                "fouls_drawn": 0.5865,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.228,
                "tackles_won": 0.5232,
                "tackles": 0.9521,
                "clearances": 0.4294,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.8153,
                "offsides": 0.3634,
                "ball_carries": 5.036,
                "total_progression": 9.4848,
                "progressive_carries": 0.3665,
                "shots_off_target": 1.3231,
                "duel_xg_multiplier": 1.0437,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.23,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              },
              "changes": [
                {
                  "stat": "goals",
                  "before": 1.0,
                  "after": 0
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "expected_goals": 0.5614,
                "goal_rate": 0.5787,
                "goals": 0,
                "shots_on_target": 1.302,
                "total_shots": 2.6274,
                "expected_assists": 0.0456,
                "key_pass": 0.5733,
                "rating": 6.7175,
                "minutes": 79.77,
                "total_pass": 10.0126,
                "accurate_pass": 7.336,
                "duels_won": 2.3292,
                "total_long_balls": 0.3412,
                "accurate_long_balls": 0.3412,
                "total_opp_half_passes": 6.9789,
                "accurate_opp_half_passes": 4.8119,
                "crosses_total": 0.1647,
                "crosses_accurate": 0.0,
                "touches": 21.6483,
                "possession_lost": 7.648,
                "dispossessed": 0.8422,
                "duels_lost": 4.458,
                "aerial_lost": 0.8187,
                "total_contest": 0.8029,
                "won_contest": 0.6345,
                "ball_recovery": 0.2741,
                "challenges_lost": 0.7054,
                "fouls": 2.1199,
                "fouls_drawn": 0.5865,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.228,
                "tackles_won": 0.5232,
                "tackles": 0.9521,
                "clearances": 0.4294,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 1.0079,
                "offsides": 0.3634,
                "ball_carries": 5.036,
                "total_progression": 9.4848,
                "progressive_carries": 0.3665,
                "shots_off_target": 1.3231,
                "duel_xg_multiplier": 1.0437,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.23,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2472,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.4541,
                  "after": 0.5614
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0369,
                  "after": 0.0456
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 66.0)",
              "stats": {
                "expected_goals": 0.5614,
                "goal_rate": 0.5787,
                "goals": 0,
                "shots_on_target": 1.302,
                "total_shots": 2.6274,
                "expected_assists": 0.0456,
                "key_pass": 0.5733,
                "rating": 6.7175,
                "minutes": 79.77,
                "total_pass": 10.0126,
                "accurate_pass": 7.336,
                "duels_won": 2.3292,
                "total_long_balls": 0.3412,
                "accurate_long_balls": 0.3412,
                "total_opp_half_passes": 6.9789,
                "accurate_opp_half_passes": 4.8119,
                "crosses_total": 0.1647,
                "crosses_accurate": 0.0,
                "touches": 21.6483,
                "possession_lost": 7.648,
                "dispossessed": 0.8422,
                "duels_lost": 4.458,
                "aerial_lost": 0.8187,
                "total_contest": 0.8029,
                "won_contest": 0.6345,
                "ball_recovery": 0.2741,
                "challenges_lost": 0.7054,
                "fouls": 2.1199,
                "fouls_drawn": 0.5865,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.228,
                "tackles_won": 0.5232,
                "tackles": 0.9521,
                "clearances": 0.4294,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 1.0079,
                "offsides": 0.3634,
                "ball_carries": 5.036,
                "total_progression": 9.4848,
                "progressive_carries": 0.3665,
                "shots_off_target": 1.3231,
                "duel_xg_multiplier": 1.0437,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.23,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2472,
                "creation_factor": 0.8,
                "fifa_overall": 66.0
              },
              "params": {
                "match_squad_rank": 13,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 6997,
                "fifa_rank": 10550.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 66.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.5614,
                "goal_rate": 0.5787,
                "goals": 1,
                "shots_on_target": 1.302,
                "total_shots": 2.6274,
                "expected_assists": 0.0456,
                "key_pass": 0.5733,
                "rating": 6.7175,
                "minutes": 79.77,
                "total_pass": 10.0126,
                "accurate_pass": 7.336,
                "duels_won": 2.3292,
                "total_long_balls": 0.3412,
                "accurate_long_balls": 0.3412,
                "total_opp_half_passes": 6.9789,
                "accurate_opp_half_passes": 4.8119,
                "crosses_total": 0.1647,
                "crosses_accurate": 0.0,
                "touches": 21.6483,
                "possession_lost": 7.648,
                "dispossessed": 0.8422,
                "duels_lost": 4.458,
                "aerial_lost": 0.8187,
                "total_contest": 0.8029,
                "won_contest": 0.6345,
                "ball_recovery": 0.2741,
                "challenges_lost": 0.7054,
                "fouls": 2.1199,
                "fouls_drawn": 0.5865,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.228,
                "tackles_won": 0.5232,
                "tackles": 0.9521,
                "clearances": 0.4294,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 1.0079,
                "offsides": 0.3634,
                "ball_carries": 5.036,
                "total_progression": 9.4848,
                "progressive_carries": 0.3665,
                "shots_off_target": 1.3231,
                "duel_xg_multiplier": 1.0437,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.23,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.4296,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.2472,
                "creation_factor": 0.8,
                "fifa_overall": 66.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 1,
                "goal_probability": 0.4296,
                "goal_rate": 0.5787,
                "scorer_weight": 0.7002,
                "squad_weight_total": 1.5727,
                "weight_share": 0.4452,
                "finishing_factor": 1.2472,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.5614,
                "goal_rate": 0.5787,
                "goals": 1,
                "shots_on_target": 1.302,
                "total_shots": 2.6274,
                "expected_assists": 0.0456,
                "key_pass": 0.5733,
                "rating": 6.7175,
                "minutes": 79.77,
                "total_pass": 10.0126,
                "accurate_pass": 7.336,
                "duels_won": 2.3292,
                "total_long_balls": 0.3412,
                "accurate_long_balls": 0.3412,
                "total_opp_half_passes": 6.9789,
                "accurate_opp_half_passes": 4.8119,
                "crosses_total": 0.1647,
                "crosses_accurate": 0.0,
                "touches": 21.6483,
                "possession_lost": 7.648,
                "dispossessed": 0.8422,
                "duels_lost": 4.458,
                "aerial_lost": 0.8187,
                "total_contest": 0.8029,
                "won_contest": 0.6345,
                "ball_recovery": 0.2741,
                "challenges_lost": 0.7054,
                "fouls": 2.1199,
                "fouls_drawn": 0.5865,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.228,
                "tackles_won": 0.5232,
                "tackles": 0.9521,
                "clearances": 0.4294,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 1.0079,
                "offsides": 0.3634,
                "ball_carries": 5.036,
                "total_progression": 9.4848,
                "progressive_carries": 0.3665,
                "shots_off_target": 1.3231,
                "duel_xg_multiplier": 1.0437,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.4,
                "aerial_won": 1.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.23,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 1,
                "goal_probability": 0.4296,
                "projected_assists": 0,
                "assist_probability": 0.0446,
                "finishing_factor": 1.2472,
                "creation_factor": 0.8,
                "fifa_overall": 66.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0446,
                "assist_rate": 0.0,
                "provider_weight": 0.0365,
                "squad_weight_total": 0.9036,
                "weight_share": 0.0404,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Iñigo Vicente": {
          "player_id": 605674,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 10,
          "height": 178,
          "market_value": 6600000,
          "stats": {
            "expected_goals": 0.0904,
            "goal_rate": 0.105,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.2273,
            "key_pass": 2,
            "rating": 7.0225,
            "minutes": 85,
            "total_pass": 73,
            "accurate_pass": 56,
            "duels_won": 6,
            "total_long_balls": 7,
            "accurate_long_balls": 4,
            "total_opp_half_passes": 56,
            "accurate_opp_half_passes": 41,
            "crosses_total": 5,
            "crosses_accurate": 1,
            "touches": 95,
            "possession_lost": 27.5759,
            "dispossessed": 1.7429,
            "duels_lost": 7,
            "aerial_lost": 0,
            "total_contest": 4,
            "won_contest": 2,
            "ball_recovery": 5,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 3,
            "assist_rate": 0.4869,
            "assists": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.0443,
            "offsides": 0,
            "ball_carries": 26,
            "total_progression": 91,
            "progressive_carries": 3,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9087,
            "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": "Enzo Boyomo, Alejandro Catena",
            "opponent_faced": "Enzo Boyomo, Alejandro Catena",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.0864,
            "projected_assists": 1,
            "assist_probability": 0.2033,
            "finishing_factor": 1.25,
            "creation_factor": 1.25,
            "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": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 8.5,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_goals": 0.1725,
                "expected_assists": 0.7804,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 92,
                "accurate_pass": 68,
                "key_pass": 8,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 9,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1872,
                "expected_assists": 0.1487,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 86,
                "accurate_pass": 73,
                "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": 16416346,
              "match_date": "2026-09-16",
              "home_team": "FC Barcelona",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 31,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0307,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 5,
                "tackles": 2,
                "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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 84,
                "rating": 8.3,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.6962,
                "total_shots": 0,
                "total_pass": 65,
                "accurate_pass": 46,
                "key_pass": 5,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 8,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416321,
              "match_date": "2026-09-05",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.3602,
                "total_shots": 0,
                "total_pass": 51,
                "accurate_pass": 35,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 3,
                "clearances": 2,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416304,
              "match_date": "2026-08-28",
              "home_team": "Real Racing Club",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Elche",
              "stats": {
                "minutes": 69,
                "rating": 7.7,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.678,
                "total_shots": 0,
                "total_pass": 52,
                "accurate_pass": 40,
                "key_pass": 6,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 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": 16416300,
              "match_date": "2026-08-23",
              "home_team": "Getafe",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0415,
                "expected_assists": 0.1479,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 83,
                "accurate_pass": 60,
                "key_pass": 3,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0953,
                "total_shots": 0,
                "total_pass": 66,
                "accurate_pass": 53,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 10,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 2098,
            "combined_rank_score": 795.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 30.0,
            "sofascore_rating": 8.0,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1561.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 7.0225,
            "source_file": "data/player_rankings.csv",
            "player_name": "Iñigo Vicente",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lee Sang-yong",
                  "ranking": 2093
                },
                {
                  "player_name": "Patrick McClafferty",
                  "ranking": 2094
                },
                {
                  "player_name": "Marko Vešović",
                  "ranking": 2095
                },
                {
                  "player_name": "Radoslav Kirilov",
                  "ranking": 2096
                },
                {
                  "player_name": "Zdravko Dimitrov",
                  "ranking": 2097
                }
              ],
              "lower": [
                {
                  "player_name": "Nahitan Nández",
                  "ranking": 2099
                },
                {
                  "player_name": "Lewis Cook",
                  "ranking": 2100
                },
                {
                  "player_name": "Keane Lewis-Potter",
                  "ranking": 2101
                },
                {
                  "player_name": "José Copete",
                  "ranking": 2102
                },
                {
                  "player_name": "Diego Moreira",
                  "ranking": 2103
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.778,
          "history_matches": 8,
          "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": 8,
            "data_confidence": 0.778,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9973,
            "fbref_prior_metrics": {
              "squad": "Racing Sant",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 248.0,
              "goals_per90": 0.0,
              "assists_per90": 0.3571428571428571,
              "shots_per90": 0.36,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1867
            },
            "rationale": "XGBoost regressor (F_service) evaluated 8 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Racing Sant, rel: 0.19, gls/90: 0.0, ast/90: 0.3571428571428571)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0806,
                "goals": 0.1215,
                "goal_rate": 0.1215,
                "shots_on_target": 0.3872,
                "total_shots": 1.037,
                "expected_assists": 0.1845,
                "key_pass": 2.4872,
                "rating": 7.0225,
                "minutes": 85.15,
                "total_pass": 73.3519,
                "accurate_pass": 55.6952,
                "duels_won": 6.0425,
                "total_long_balls": 7.387,
                "accurate_long_balls": 4.2386,
                "total_opp_half_passes": 56.4706,
                "accurate_opp_half_passes": 40.9839,
                "crosses_total": 4.9584,
                "crosses_accurate": 0.7464,
                "touches": 94.7643,
                "possession_lost": 27.6506,
                "dispossessed": 1.7476,
                "duels_lost": 6.5263,
                "aerial_lost": 0.098,
                "total_contest": 3.5724,
                "won_contest": 1.6459,
                "ball_recovery": 5.1363,
                "challenges_lost": 1.6226,
                "fouls": 1.2296,
                "fouls_drawn": 2.6526,
                "assists": 0.4955,
                "assist_rate": 0.4955,
                "interceptions": 0.522,
                "tackles_won": 1.4179,
                "tackles": 1.5844,
                "clearances": 0.8327,
                "blocks": 0.0,
                "big_chances_created": 0.5935,
                "big_chances_missed": 0.0,
                "xgot": 0.0395,
                "offsides": 0.2188,
                "ball_carries": 26.1248,
                "total_progression": 91.5014,
                "progressive_carries": 2.6746,
                "shots_off_target": 0.6498
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:06:24.593912+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2062,
                    "rating": 8.5
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1753,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "FC Barcelona",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.149,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Deportivo Alavés",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.1266,
                    "rating": 8.3
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1076,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Elche",
                    "minutes": 69.0,
                    "is_starting": true,
                    "weight": 0.0915,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0778,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0661,
                    "rating": 8.0
                  }
                ],
                "feature_row": {
                  "history_matches": 8.0,
                  "is_starting_11": 1.0,
                  "totalOppositionHalfPasses": 49.7474,
                  "expectedGoals": 0.0716,
                  "accurateOppositionHalfPasses": 36.1817,
                  "accuratePass": 48.9788,
                  "totalShots": 0.8097
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0806262344121933,
                    "model_output": 0.0806,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0412
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0388
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0307
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0223
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0113
                        }
                      ],
                      "others": -0.0502,
                      "total": 0.0806,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.234074
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.221875
                        },
                        {
                          "name": "goals",
                          "margin": -0.170955
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.145819
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.082755
                        }
                      ],
                      "others_margin": -0.484287
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.12154456228017807,
                    "model_output": 0.1215,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0369
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.023
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0229
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0192
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0167
                        }
                      ],
                      "others": -0.0474,
                      "total": 0.1215,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.200417
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.148816
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.148294
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.109095
                        },
                        {
                          "name": "goals",
                          "margin": -0.09411
                        }
                      ],
                      "others_margin": -0.328731
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.3872312903404236,
                    "model_output": 0.3872,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1519
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0926
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0641
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0517
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0399
                        }
                      ],
                      "others": -0.054,
                      "total": 0.3872,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.248855
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.144218
                        },
                        {
                          "name": "goals",
                          "margin": -0.113572
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.102141
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.08647
                        }
                      ],
                      "others_margin": -0.130639
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.0370055437088013,
                    "model_output": 1.037,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3709
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2687
                        },
                        {
                          "name": "goals",
                          "contribution": -0.1093
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.093
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0867
                        }
                      ],
                      "others": -0.15,
                      "total": 1.037,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.370865
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.268718
                        },
                        {
                          "name": "goals",
                          "margin": -0.109253
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.092976
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.086691
                        }
                      ],
                      "others_margin": -0.150062
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.18452362716197968,
                    "model_output": 0.1845,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0147
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0164
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0131
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0097
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0103
                        }
                      ],
                      "others": 0.0561,
                      "total": 0.1845,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.206764
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.188866
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.129075
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.085619
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.083421
                        }
                      ],
                      "others_margin": 0.361787
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 2.487200975418091,
                    "model_output": 2.4872,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.237
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.2644
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.1523
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.161
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.1051
                        }
                      ],
                      "others": 0.894,
                      "total": 2.4872,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.301581
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.254957
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.121926
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.114476
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.06824
                        }
                      ],
                      "others_margin": 0.44544
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.022541046142578,
                    "model_output": 7.0225,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.053
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0507
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0498
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0394
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0348
                        }
                      ],
                      "others": 0.0278,
                      "total": 7.0225,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.053024
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.050707
                        },
                        {
                          "name": "rating",
                          "margin": 0.049797
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.039401
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.034776
                        }
                      ],
                      "others_margin": 0.027835
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 8,
                  "role_matches": 7,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9973, quality 0.482)",
              "stats": {
                "expected_goals": 0.0804,
                "goals": 0.1212,
                "goal_rate": 0.1212,
                "shots_on_target": 0.3862,
                "total_shots": 1.0342,
                "expected_assists": 0.184,
                "key_pass": 2.4805,
                "rating": 7.0225,
                "minutes": 85.15,
                "total_pass": 73.1538,
                "accurate_pass": 55.5448,
                "duels_won": 6.0262,
                "total_long_balls": 7.3671,
                "accurate_long_balls": 4.2272,
                "total_opp_half_passes": 56.3181,
                "accurate_opp_half_passes": 40.8732,
                "crosses_total": 4.945,
                "crosses_accurate": 0.7444,
                "touches": 94.5084,
                "possession_lost": 27.5759,
                "dispossessed": 1.7429,
                "duels_lost": 6.5087,
                "aerial_lost": 0.0977,
                "total_contest": 3.5628,
                "won_contest": 1.6415,
                "ball_recovery": 5.1224,
                "challenges_lost": 1.6182,
                "fouls": 1.2263,
                "fouls_drawn": 2.6454,
                "assists": 0.4942,
                "assist_rate": 0.4942,
                "interceptions": 0.5206,
                "tackles_won": 1.4141,
                "tackles": 1.5801,
                "clearances": 0.8305,
                "blocks": 0.0,
                "big_chances_created": 0.5919,
                "big_chances_missed": 0.0,
                "xgot": 0.0394,
                "offsides": 0.2182,
                "ball_carries": 26.0543,
                "total_progression": 91.2543,
                "progressive_carries": 2.6674,
                "shots_off_target": 0.648
              },
              "params": {
                "market_value_eur": 6600000,
                "quality_factor": 0.4818,
                "boost_factor": 0.9973,
                "reference_quality": 0.505,
                "history_matches": 8,
                "history_shrink": 0.3846,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0467)",
              "stats": {
                "expected_goals": 0.0804,
                "goals": 0.1155,
                "goal_rate": 0.1155,
                "shots_on_target": 0.3682,
                "total_shots": 1.0018,
                "expected_assists": 0.184,
                "key_pass": 2.4805,
                "rating": 7.0225,
                "minutes": 85.15,
                "total_pass": 73.1538,
                "accurate_pass": 55.5448,
                "duels_won": 6.0262,
                "total_long_balls": 7.3671,
                "accurate_long_balls": 4.2272,
                "total_opp_half_passes": 56.3181,
                "accurate_opp_half_passes": 40.8732,
                "crosses_total": 4.8404,
                "crosses_accurate": 0.7444,
                "touches": 94.5084,
                "possession_lost": 27.5759,
                "dispossessed": 1.7429,
                "duels_lost": 6.5087,
                "aerial_lost": 0.0977,
                "total_contest": 3.5628,
                "won_contest": 1.6415,
                "ball_recovery": 5.1224,
                "challenges_lost": 1.6182,
                "fouls": 1.2164,
                "fouls_drawn": 2.6166,
                "assists": 0.4869,
                "assist_rate": 0.4869,
                "interceptions": 0.5121,
                "tackles_won": 1.3796,
                "tackles": 1.5801,
                "clearances": 0.8305,
                "blocks": 0.0,
                "big_chances_created": 0.5919,
                "big_chances_missed": 0.0,
                "xgot": 0.0394,
                "offsides": 0.2238,
                "ball_carries": 26.0543,
                "total_progression": 91.2543,
                "progressive_carries": 2.6674,
                "shots_off_target": 0.648
              },
              "params": {
                "blend_weight": 0.0467,
                "history_matches": 8,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9461,
                "prior_reliability": 0.1867,
                "competition": "La Liga",
                "squad": "Racing Sant"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 4.945,
                  "after": 4.8404
                },
                {
                  "stat": "wonTackle",
                  "before": 1.4141,
                  "after": 1.3796
                },
                {
                  "stat": "totalShots",
                  "before": 1.0342,
                  "after": 1.0018
                },
                {
                  "stat": "wasFouled",
                  "before": 2.6454,
                  "after": 2.6166
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3862,
                  "after": 0.3682
                },
                {
                  "stat": "fouls",
                  "before": 1.2263,
                  "after": 1.2164
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.5206,
                  "after": 0.5121
                },
                {
                  "stat": "goalAssist",
                  "before": 0.4942,
                  "after": 0.4869
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0804,
                "goals": 0.1155,
                "goal_rate": 0.1155,
                "shots_on_target": 0.3682,
                "total_shots": 1.0162,
                "expected_assists": 0.184,
                "key_pass": 2.4805,
                "rating": 7.0225,
                "minutes": 85.15,
                "total_pass": 73.1538,
                "accurate_pass": 55.5448,
                "duels_won": 6.0262,
                "total_long_balls": 7.3671,
                "accurate_long_balls": 4.2272,
                "total_opp_half_passes": 56.3181,
                "accurate_opp_half_passes": 40.8732,
                "crosses_total": 4.8404,
                "crosses_accurate": 0.7444,
                "touches": 94.5084,
                "possession_lost": 27.5759,
                "dispossessed": 1.7429,
                "duels_lost": 6.5087,
                "aerial_lost": 0.0977,
                "total_contest": 3.5628,
                "won_contest": 1.6415,
                "ball_recovery": 5.1224,
                "challenges_lost": 1.6182,
                "fouls": 1.2164,
                "fouls_drawn": 2.6166,
                "assists": 0.4869,
                "assist_rate": 0.4869,
                "interceptions": 0.5121,
                "tackles_won": 1.3796,
                "tackles": 1.5801,
                "clearances": 0.8305,
                "blocks": 0.0,
                "big_chances_created": 0.5919,
                "big_chances_missed": 0.0,
                "xgot": 0.0394,
                "offsides": 0.2238,
                "ball_carries": 26.0543,
                "total_progression": 91.2543,
                "progressive_carries": 2.6674,
                "shots_off_target": 0.648
              },
              "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.0731,
                "goals": 0.105,
                "goal_rate": 0.105,
                "shots_on_target": 0.3346,
                "total_shots": 0.9234,
                "expected_assists": 0.184,
                "key_pass": 2.4805,
                "rating": 7.0225,
                "minutes": 85.15,
                "total_pass": 73.1538,
                "accurate_pass": 55.5448,
                "duels_won": 6.0262,
                "total_long_balls": 7.3671,
                "accurate_long_balls": 4.2272,
                "total_opp_half_passes": 56.3181,
                "accurate_opp_half_passes": 40.8732,
                "crosses_total": 4.8404,
                "crosses_accurate": 0.7444,
                "touches": 94.5084,
                "possession_lost": 27.5759,
                "dispossessed": 1.7429,
                "duels_lost": 6.5087,
                "aerial_lost": 0.0977,
                "total_contest": 3.5628,
                "won_contest": 1.6415,
                "ball_recovery": 5.1224,
                "challenges_lost": 1.6182,
                "fouls": 1.2164,
                "fouls_drawn": 2.6166,
                "assists": 0.4869,
                "assist_rate": 0.4869,
                "interceptions": 0.5121,
                "tackles_won": 1.3796,
                "tackles": 1.5801,
                "clearances": 0.8305,
                "blocks": 0.0,
                "big_chances_created": 0.5919,
                "big_chances_missed": 0.0,
                "xgot": 0.0358,
                "offsides": 0.2238,
                "ball_carries": 26.0543,
                "total_progression": 91.2543,
                "progressive_carries": 2.6674,
                "shots_off_target": 0.5888,
                "duel_xg_multiplier": 0.9087,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                  "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.9087,
                  "skill_edge": -0.0241,
                  "height_edge": -0.038,
                  "attacker_skill": 0.4818,
                  "defender_skill": 0.5353,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Enzo Boyomo",
                      "market_value": 14600000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.6258
                    },
                    {
                      "player": "Alejandro Catena",
                      "market_value": 2700000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4449
                    }
                  ],
                  "xg_override": 0.0731
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.0162,
                  "after": 0.9234
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.648,
                  "after": 0.5888
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.3682,
                  "after": 0.3346
                },
                {
                  "stat": "goals",
                  "before": 0.1155,
                  "after": 0.105
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.0804,
                  "after": 0.0731
                }
              ]
            },
            {
              "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.0731,
                "goal_rate": 0.105,
                "goals": 0,
                "shots_on_target": 0.3346,
                "total_shots": 0.9234,
                "expected_assists": 0.184,
                "key_pass": 2.4805,
                "rating": 7.0225,
                "minutes": 85.15,
                "total_pass": 73.1538,
                "accurate_pass": 55.5448,
                "duels_won": 6.0262,
                "total_long_balls": 7.3671,
                "accurate_long_balls": 4.2272,
                "total_opp_half_passes": 56.3181,
                "accurate_opp_half_passes": 40.8732,
                "crosses_total": 4.8404,
                "crosses_accurate": 0.7444,
                "touches": 94.5084,
                "possession_lost": 27.5759,
                "dispossessed": 1.7429,
                "duels_lost": 6.5087,
                "aerial_lost": 0.0977,
                "total_contest": 3.5628,
                "won_contest": 1.6415,
                "ball_recovery": 5.1224,
                "challenges_lost": 1.6182,
                "fouls": 1.2164,
                "fouls_drawn": 2.6166,
                "assist_rate": 0.4869,
                "assists": 0,
                "interceptions": 0.5121,
                "tackles_won": 1.3796,
                "tackles": 1.5801,
                "clearances": 0.8305,
                "blocks": 0.0,
                "big_chances_created": 0.5919,
                "big_chances_missed": 0.0,
                "xgot": 0.0358,
                "offsides": 0.2238,
                "ball_carries": 26.0543,
                "total_progression": 91.2543,
                "progressive_carries": 2.6674,
                "shots_off_target": 0.5888,
                "duel_xg_multiplier": 0.9087,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "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.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "expected_goals": 0.0904,
                "goal_rate": 0.105,
                "goals": 0,
                "shots_on_target": 0.3346,
                "total_shots": 0.9234,
                "expected_assists": 0.2273,
                "key_pass": 2.4805,
                "rating": 7.0225,
                "minutes": 85.15,
                "total_pass": 73.1538,
                "accurate_pass": 55.5448,
                "duels_won": 6.0262,
                "total_long_balls": 7.3671,
                "accurate_long_balls": 4.2272,
                "total_opp_half_passes": 56.3181,
                "accurate_opp_half_passes": 40.8732,
                "crosses_total": 4.8404,
                "crosses_accurate": 0.7444,
                "touches": 94.5084,
                "possession_lost": 27.5759,
                "dispossessed": 1.7429,
                "duels_lost": 6.5087,
                "aerial_lost": 0.0977,
                "total_contest": 3.5628,
                "won_contest": 1.6415,
                "ball_recovery": 5.1224,
                "challenges_lost": 1.6182,
                "fouls": 1.2164,
                "fouls_drawn": 2.6166,
                "assist_rate": 0.4869,
                "assists": 0,
                "interceptions": 0.5121,
                "tackles_won": 1.3796,
                "tackles": 1.5801,
                "clearances": 0.8305,
                "blocks": 0.0,
                "big_chances_created": 0.5919,
                "big_chances_missed": 0.0,
                "xgot": 0.0443,
                "offsides": 0.2238,
                "ball_carries": 26.0543,
                "total_progression": 91.2543,
                "progressive_carries": 2.6674,
                "shots_off_target": 0.5888,
                "duel_xg_multiplier": 0.9087,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "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.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0731,
                  "after": 0.0904
                },
                {
                  "stat": "expected_assists",
                  "before": 0.184,
                  "after": 0.2273
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 1 by projected rating, fifa_overall 77.0)",
              "stats": {
                "expected_goals": 0.0904,
                "goal_rate": 0.105,
                "goals": 0,
                "shots_on_target": 0.3346,
                "total_shots": 0.9234,
                "expected_assists": 0.2273,
                "key_pass": 2.4805,
                "rating": 7.0225,
                "minutes": 85.15,
                "total_pass": 73.1538,
                "accurate_pass": 55.5448,
                "duels_won": 6.0262,
                "total_long_balls": 7.3671,
                "accurate_long_balls": 4.2272,
                "total_opp_half_passes": 56.3181,
                "accurate_opp_half_passes": 40.8732,
                "crosses_total": 4.8404,
                "crosses_accurate": 0.7444,
                "touches": 94.5084,
                "possession_lost": 27.5759,
                "dispossessed": 1.7429,
                "duels_lost": 6.5087,
                "aerial_lost": 0.0977,
                "total_contest": 3.5628,
                "won_contest": 1.6415,
                "ball_recovery": 5.1224,
                "challenges_lost": 1.6182,
                "fouls": 1.2164,
                "fouls_drawn": 2.6166,
                "assist_rate": 0.4869,
                "assists": 0,
                "interceptions": 0.5121,
                "tackles_won": 1.3796,
                "tackles": 1.5801,
                "clearances": 0.8305,
                "blocks": 0.0,
                "big_chances_created": 0.5919,
                "big_chances_missed": 0.0,
                "xgot": 0.0443,
                "offsides": 0.2238,
                "ball_carries": 26.0543,
                "total_progression": 91.2543,
                "progressive_carries": 2.6674,
                "shots_off_target": 0.5888,
                "duel_xg_multiplier": 0.9087,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "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": 77.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": 2098,
                "fifa_rank": 1561.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0904,
                "goal_rate": 0.105,
                "goals": 0,
                "shots_on_target": 0.3346,
                "total_shots": 0.9234,
                "expected_assists": 0.2273,
                "key_pass": 2.4805,
                "rating": 7.0225,
                "minutes": 85.15,
                "total_pass": 73.1538,
                "accurate_pass": 55.5448,
                "duels_won": 6.0262,
                "total_long_balls": 7.3671,
                "accurate_long_balls": 4.2272,
                "total_opp_half_passes": 56.3181,
                "accurate_opp_half_passes": 40.8732,
                "crosses_total": 4.8404,
                "crosses_accurate": 0.7444,
                "touches": 94.5084,
                "possession_lost": 27.5759,
                "dispossessed": 1.7429,
                "duels_lost": 6.5087,
                "aerial_lost": 0.0977,
                "total_contest": 3.5628,
                "won_contest": 1.6415,
                "ball_recovery": 5.1224,
                "challenges_lost": 1.6182,
                "fouls": 1.2164,
                "fouls_drawn": 2.6166,
                "assist_rate": 0.4869,
                "assists": 0,
                "interceptions": 0.5121,
                "tackles_won": 1.3796,
                "tackles": 1.5801,
                "clearances": 0.8305,
                "blocks": 0.0,
                "big_chances_created": 0.5919,
                "big_chances_missed": 0.0,
                "xgot": 0.0443,
                "offsides": 0.2238,
                "ball_carries": 26.0543,
                "total_progression": 91.2543,
                "progressive_carries": 2.6674,
                "shots_off_target": 0.5888,
                "duel_xg_multiplier": 0.9087,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0864,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0864,
                "goal_rate": 0.105,
                "scorer_weight": 0.113,
                "squad_weight_total": 1.5727,
                "weight_share": 0.0718,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.0904,
                "goal_rate": 0.105,
                "goals": 0,
                "shots_on_target": 0.3346,
                "total_shots": 0.9234,
                "expected_assists": 0.2273,
                "key_pass": 2.4805,
                "rating": 7.0225,
                "minutes": 85.15,
                "total_pass": 73.1538,
                "accurate_pass": 55.5448,
                "duels_won": 6.0262,
                "total_long_balls": 7.3671,
                "accurate_long_balls": 4.2272,
                "total_opp_half_passes": 56.3181,
                "accurate_opp_half_passes": 40.8732,
                "crosses_total": 4.8404,
                "crosses_accurate": 0.7444,
                "touches": 94.5084,
                "possession_lost": 27.5759,
                "dispossessed": 1.7429,
                "duels_lost": 6.5087,
                "aerial_lost": 0.0977,
                "total_contest": 3.5628,
                "won_contest": 1.6415,
                "ball_recovery": 5.1224,
                "challenges_lost": 1.6182,
                "fouls": 1.2164,
                "fouls_drawn": 2.6166,
                "assist_rate": 0.4869,
                "assists": 1,
                "interceptions": 0.5121,
                "tackles_won": 1.3796,
                "tackles": 1.5801,
                "clearances": 0.8305,
                "blocks": 0.0,
                "big_chances_created": 0.5919,
                "big_chances_missed": 0.0,
                "xgot": 0.0443,
                "offsides": 0.2238,
                "ball_carries": 26.0543,
                "total_progression": 91.2543,
                "progressive_carries": 2.6674,
                "shots_off_target": 0.5888,
                "duel_xg_multiplier": 0.9087,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.3,
                "aerial_won": 1.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "LOW",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0864,
                "projected_assists": 1,
                "assist_probability": 0.2033,
                "finishing_factor": 1.25,
                "creation_factor": 1.25,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 1,
                "assist_probability": 0.2033,
                "assist_rate": 0.4869,
                "provider_weight": 0.2841,
                "squad_weight_total": 0.9036,
                "weight_share": 0.3144,
                "creation_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 1,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Pablo García": {
          "player_id": 1893910,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 15,
          "height": 175,
          "market_value": 8199999,
          "stats": {
            "expected_goals": 0.1784,
            "goal_rate": 0.1888,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0755,
            "key_pass": 1,
            "rating": 6.8046,
            "minutes": 74,
            "total_pass": 13,
            "accurate_pass": 11,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 7,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 27,
            "possession_lost": 8.0426,
            "dispossessed": 1.5818,
            "duels_lost": 5,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1995,
            "offsides": 0,
            "ball_carries": 10,
            "total_progression": 12,
            "progressive_carries": 1,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.9038,
            "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": "Enzo Boyomo, Alejandro Catena",
            "opponent_faced": "Enzo Boyomo, Alejandro Catena",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1634,
            "projected_assists": 0,
            "assist_probability": 0.0727,
            "finishing_factor": 1.229,
            "creation_factor": 0.8,
            "fifa_overall": 70.0
          },
          "latest_10_games": [
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Valencia",
              "stats": {
                "minutes": 15,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0367,
                "expected_assists": 0.0108,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 8,
                "accurate_pass": 7,
                "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": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 63,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0438,
                "expected_assists": 0.0246,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 16,
                "accurate_pass": 15,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 65,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4125,
                "expected_assists": 0.005,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 14,
                "accurate_pass": 12,
                "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": 16416321,
              "match_date": "2026-09-05",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 89,
                "rating": 7.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1417,
                "expected_assists": 0.0041,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 8,
                "tackles": 2,
                "tackles_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": 16416309,
              "match_date": "2026-08-29",
              "home_team": "Levante UD",
              "away_team": "Real Betis",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Betis",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 23,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0894,
                "expected_assists": 0.007,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 6,
                "accurate_pass": 5,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "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": "away",
              "is_starting_11": 0,
              "team": "Real Betis",
              "opponent": "Valencia",
              "stats": {
                "minutes": 11,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2814,
                "expected_assists": 0.0023,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 6,
                "accurate_pass": 6,
                "clearances": 3,
                "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": 16416293,
              "match_date": "2026-08-21",
              "home_team": "Real Betis",
              "away_team": "Real Sociedad",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Real Betis",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 17,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0317,
                "expected_assists": 0.0322,
                "total_shots": 1,
                "total_pass": 6,
                "accurate_pass": 6,
                "key_pass": 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": 14081811,
              "match_date": "2026-04-04",
              "home_team": "Real Betis",
              "away_team": "Espanyol",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Real Betis",
              "opponent": "Espanyol",
              "stats": {
                "minutes": 15,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0851,
                "expected_assists": 0.0064,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 8,
                "accurate_pass": 8,
                "ball_recovery": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083207,
              "match_date": "2026-02-01",
              "home_team": "Real Betis",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Real Betis",
              "opponent": "Valencia",
              "stats": {
                "minutes": 23,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0068,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083096,
              "match_date": "2026-01-25",
              "home_team": "Deportivo Alavés",
              "away_team": "Real Betis",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Betis",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 30,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0808,
                "expected_assists": 0.0044,
                "total_shots": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 5059,
            "combined_rank_score": 3247.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 578.0,
            "sofascore_rating": 6.8,
            "sofascore_appearances": 3.0,
            "fifa_rank": 5917.0,
            "fifa_overall": 70.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8046,
            "source_file": "data/player_rankings.csv",
            "player_name": "Pablo García",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Philippe Sandler",
                  "ranking": 5054
                },
                {
                  "player_name": "Jordan Lotomba",
                  "ranking": 5055
                },
                {
                  "player_name": "Jhon Córdoba",
                  "ranking": 5056
                },
                {
                  "player_name": "Jari De Busser",
                  "ranking": 5057
                },
                {
                  "player_name": "Gijs Smal",
                  "ranking": 5058
                }
              ],
              "lower": [
                {
                  "player_name": "Jacob Trenskow",
                  "ranking": 5060
                },
                {
                  "player_name": "Virgil Ghiță",
                  "ranking": 5061
                },
                {
                  "player_name": "Daan Rots",
                  "ranking": 5062
                },
                {
                  "player_name": "Thomas Beelen",
                  "ranking": 5063
                },
                {
                  "player_name": "Alexandre Penetra",
                  "ranking": 5064
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.756,
          "history_matches": 22,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "expectedGoals",
              "goals",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "shot_accuracy",
              "xg_per_shot",
              "touches_p90",
              "totalShots_p90",
              "duelWon_p90",
              "ballCarriesCount_p90",
              "big_chance_conversion",
              "shot_waste_rate",
              "aerial_dominance",
              "press_resistance_fwd",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 22,
            "data_confidence": 0.756,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9998,
            "fbref_prior_metrics": {
              "squad": "Real Betis",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 0.0,
              "minutes": 54.0,
              "goals_per90": 1.6666666666666667,
              "assists_per90": 0.0,
              "shots_per90": 5.0,
              "shots_on_target_pct": 33.3,
              "prior_reliability": 0.04
            },
            "rationale": "XGBoost regressor (F_service) evaluated 22 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Real Betis, rel: 0.04, gls/90: 1.6666666666666667, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1598,
                "goals": 0.2033,
                "goal_rate": 0.2033,
                "shots_on_target": 0.6604,
                "total_shots": 1.9093,
                "expected_assists": 0.0611,
                "key_pass": 0.7242,
                "rating": 6.8046,
                "minutes": 73.77,
                "total_pass": 12.9277,
                "accurate_pass": 11.3922,
                "duels_won": 2.3807,
                "total_long_balls": 0.8592,
                "accurate_long_balls": 0.5896,
                "total_opp_half_passes": 7.6574,
                "accurate_opp_half_passes": 7.1219,
                "crosses_total": 1.1401,
                "crosses_accurate": 0.0,
                "touches": 26.8816,
                "possession_lost": 8.0442,
                "dispossessed": 1.5821,
                "duels_lost": 5.1081,
                "aerial_lost": 0.8344,
                "total_contest": 1.8841,
                "won_contest": 0.8188,
                "ball_recovery": 2.3971,
                "challenges_lost": 1.1544,
                "fouls": 0.4719,
                "fouls_drawn": 1.0315,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.3063,
                "tackles_won": 0.3356,
                "tackles": 0.5304,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1948,
                "xgot": 0.1786,
                "offsides": 0.0,
                "ball_carries": 10.1391,
                "total_progression": 12.3273,
                "progressive_carries": 1.0871,
                "shots_off_target": 1.2489
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:06:24.593912+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Valencia",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.1543,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Celta Vigo",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1312,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Deportivo Alavés",
                    "minutes": 65.0,
                    "is_starting": true,
                    "weight": 0.1115,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Rayo Vallecano",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.0948,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Levante UD",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0806,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-25",
                    "opponent": "Valencia",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.0685,
                    "rating": 7.5
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Real Sociedad",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0582,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-04-04",
                    "opponent": "Espanyol",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0495,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-02-01",
                    "opponent": "Valencia",
                    "minutes": 23.0,
                    "is_starting": false,
                    "weight": 0.0421,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-01-25",
                    "opponent": "Deportivo Alavés",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0357,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalOppositionHalfPasses": 5.7672,
                  "expectedGoals": 0.1181,
                  "accurateOppositionHalfPasses": 5.2836,
                  "accuratePass": 7.6884,
                  "totalShots": 1.5194
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.15977829694747925,
                    "model_output": 0.1598,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.063
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0498
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0142
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0108
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0065
                        }
                      ],
                      "others": -0.0194,
                      "total": 0.1598,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.276667
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.21227
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.070001
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": -0.056644
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.035427
                        }
                      ],
                      "others_margin": -0.114374
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.2033376693725586,
                    "model_output": 0.2033,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0779
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0421
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0212
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0092
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0058
                        }
                      ],
                      "others": -0.0181,
                      "total": 0.2033,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.324321
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.16233
                        },
                        {
                          "name": "goals",
                          "margin": -0.092736
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.041182
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.025801
                        }
                      ],
                      "others_margin": -0.084733
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.6603875160217285,
                    "model_output": 0.6604,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.163
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.046
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0372
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.029
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0146
                        }
                      ],
                      "others": 0.0286,
                      "total": 0.6604,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.264747
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.06792
                        },
                        {
                          "name": "goals",
                          "margin": -0.058476
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.045976
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.022869
                        }
                      ],
                      "others_margin": 0.044163
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.909250259399414,
                    "model_output": 1.9093,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.475
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0869
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0363
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0272
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0262
                        }
                      ],
                      "others": -0.0435,
                      "total": 1.9093,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.474952
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.086916
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.036266
                        },
                        {
                          "name": "ballRecovery",
                          "margin": 0.027215
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.02615
                        }
                      ],
                      "others_margin": -0.043557
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06110155209898949,
                    "model_output": 0.0611,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0247
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0148
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.008
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.008
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0072
                        }
                      ],
                      "others": -0.0058,
                      "total": 0.0611,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.325992
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.182019
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.114557
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.113525
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.101664
                        }
                      ],
                      "others_margin": -0.090984
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.7242095470428467,
                    "model_output": 0.7242,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2108
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0541
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0499
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0397
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.035
                        }
                      ],
                      "others": -0.0513,
                      "total": 0.7242,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.272352
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.063098
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.061966
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.052271
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.046188
                        }
                      ],
                      "others_margin": -0.068418
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.80457878112793,
                    "model_output": 6.8046,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0695
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0294
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0219
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0206
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0177
                        }
                      ],
                      "others": -0.0449,
                      "total": 6.8046,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.06951
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.029352
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.021921
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.020611
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.017724
                        }
                      ],
                      "others_margin": -0.044872
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 22,
                  "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.9998, quality 0.501)",
              "stats": {
                "expected_goals": 0.1597,
                "goals": 0.2033,
                "goal_rate": 0.2033,
                "shots_on_target": 0.6603,
                "total_shots": 1.909,
                "expected_assists": 0.0611,
                "key_pass": 0.7241,
                "rating": 6.8046,
                "minutes": 73.77,
                "total_pass": 12.9251,
                "accurate_pass": 11.3899,
                "duels_won": 2.3802,
                "total_long_balls": 0.859,
                "accurate_long_balls": 0.5895,
                "total_opp_half_passes": 7.6559,
                "accurate_opp_half_passes": 7.1205,
                "crosses_total": 1.1399,
                "crosses_accurate": 0.0,
                "touches": 26.8762,
                "possession_lost": 8.0426,
                "dispossessed": 1.5818,
                "duels_lost": 5.1071,
                "aerial_lost": 0.8342,
                "total_contest": 1.8837,
                "won_contest": 0.8186,
                "ball_recovery": 2.3966,
                "challenges_lost": 1.1542,
                "fouls": 0.4718,
                "fouls_drawn": 1.0313,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.3062,
                "tackles_won": 0.3355,
                "tackles": 0.5303,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1948,
                "xgot": 0.1786,
                "offsides": 0.0,
                "ball_carries": 10.1371,
                "total_progression": 12.3248,
                "progressive_carries": 1.0869,
                "shots_off_target": 1.2487
              },
              "params": {
                "market_value_eur": 8199999,
                "quality_factor": 0.5011,
                "boost_factor": 0.9998,
                "reference_quality": 0.505,
                "history_matches": 22,
                "history_shrink": 0.1852,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0048)",
              "stats": {
                "expected_goals": 0.1597,
                "goals": 0.2089,
                "goal_rate": 0.2089,
                "shots_on_target": 0.6637,
                "total_shots": 1.9195,
                "expected_assists": 0.0611,
                "key_pass": 0.7241,
                "rating": 6.8046,
                "minutes": 73.77,
                "total_pass": 12.9251,
                "accurate_pass": 11.3899,
                "duels_won": 2.3802,
                "total_long_balls": 0.859,
                "accurate_long_balls": 0.5895,
                "total_opp_half_passes": 7.6559,
                "accurate_opp_half_passes": 7.1205,
                "crosses_total": 1.1344,
                "crosses_accurate": 0.0,
                "touches": 26.8762,
                "possession_lost": 8.0426,
                "dispossessed": 1.5818,
                "duels_lost": 5.1071,
                "aerial_lost": 0.8342,
                "total_contest": 1.8837,
                "won_contest": 0.8186,
                "ball_recovery": 2.3966,
                "challenges_lost": 1.1542,
                "fouls": 0.4893,
                "fouls_drawn": 1.0526,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.3047,
                "tackles_won": 0.3339,
                "tackles": 0.5303,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1948,
                "xgot": 0.1786,
                "offsides": 0.0,
                "ball_carries": 10.1371,
                "total_progression": 12.3248,
                "progressive_carries": 1.0869,
                "shots_off_target": 1.2487
              },
              "params": {
                "blend_weight": 0.0048,
                "history_matches": 22,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8197,
                "prior_reliability": 0.04,
                "competition": "La Liga",
                "squad": "Real Betis"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 1.0313,
                  "after": 1.0526
                },
                {
                  "stat": "fouls",
                  "before": 0.4718,
                  "after": 0.4893
                },
                {
                  "stat": "totalShots",
                  "before": 1.909,
                  "after": 1.9195
                },
                {
                  "stat": "goals",
                  "before": 0.2033,
                  "after": 0.2089
                },
                {
                  "stat": "totalCross",
                  "before": 1.1399,
                  "after": 1.1344
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1597,
                "goals": 0.2089,
                "goal_rate": 0.2089,
                "shots_on_target": 0.6637,
                "total_shots": 1.9195,
                "expected_assists": 0.0611,
                "key_pass": 0.7241,
                "rating": 6.8046,
                "minutes": 73.77,
                "total_pass": 12.9251,
                "accurate_pass": 11.3899,
                "duels_won": 2.3802,
                "total_long_balls": 0.859,
                "accurate_long_balls": 0.5895,
                "total_opp_half_passes": 7.6559,
                "accurate_opp_half_passes": 7.1205,
                "crosses_total": 1.1344,
                "crosses_accurate": 0.0,
                "touches": 26.8762,
                "possession_lost": 8.0426,
                "dispossessed": 1.5818,
                "duels_lost": 5.1071,
                "aerial_lost": 0.8342,
                "total_contest": 1.8837,
                "won_contest": 0.8186,
                "ball_recovery": 2.3966,
                "challenges_lost": 1.1542,
                "fouls": 0.4893,
                "fouls_drawn": 1.0526,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.3047,
                "tackles_won": 0.3339,
                "tackles": 0.5303,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1948,
                "xgot": 0.1786,
                "offsides": 0.0,
                "ball_carries": 10.1371,
                "total_progression": 12.3248,
                "progressive_carries": 1.0869,
                "shots_off_target": 1.2487
              },
              "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.1443,
                "goals": 0.1888,
                "goal_rate": 0.1888,
                "shots_on_target": 0.5999,
                "total_shots": 1.7348,
                "expected_assists": 0.0611,
                "key_pass": 0.7241,
                "rating": 6.8046,
                "minutes": 73.77,
                "total_pass": 12.9251,
                "accurate_pass": 11.3899,
                "duels_won": 2.3802,
                "total_long_balls": 0.859,
                "accurate_long_balls": 0.5895,
                "total_opp_half_passes": 7.6559,
                "accurate_opp_half_passes": 7.1205,
                "crosses_total": 1.1344,
                "crosses_accurate": 0.0,
                "touches": 26.8762,
                "possession_lost": 8.0426,
                "dispossessed": 1.5818,
                "duels_lost": 5.1071,
                "aerial_lost": 0.8342,
                "total_contest": 1.8837,
                "won_contest": 0.8186,
                "ball_recovery": 2.3966,
                "challenges_lost": 1.1542,
                "fouls": 0.4893,
                "fouls_drawn": 1.0526,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.3047,
                "tackles_won": 0.3339,
                "tackles": 0.5303,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1761,
                "xgot": 0.1614,
                "offsides": 0.0,
                "ball_carries": 10.1371,
                "total_progression": 12.3248,
                "progressive_carries": 1.0869,
                "shots_off_target": 1.1286,
                "duel_xg_multiplier": 0.9038,
                "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": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                  "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.9038,
                  "skill_edge": -0.0154,
                  "height_edge": -0.05,
                  "attacker_skill": 0.5011,
                  "defender_skill": 0.5353,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Enzo Boyomo",
                      "market_value": 14600000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.6258
                    },
                    {
                      "player": "Alejandro Catena",
                      "market_value": 2700000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4449
                    }
                  ],
                  "xg_override": 0.1443
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.9195,
                  "after": 1.7348
                },
                {
                  "stat": "shotOffTarget",
                  "before": 1.2487,
                  "after": 1.1286
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.6637,
                  "after": 0.5999
                },
                {
                  "stat": "goals",
                  "before": 0.2089,
                  "after": 0.1888
                },
                {
                  "stat": "bigChanceMissed",
                  "before": 0.1948,
                  "after": 0.1761
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.1786,
                  "after": 0.1614
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1597,
                  "after": 0.1443
                }
              ]
            },
            {
              "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.1443,
                "goal_rate": 0.1888,
                "goals": 0,
                "shots_on_target": 0.5999,
                "total_shots": 1.7348,
                "expected_assists": 0.0611,
                "key_pass": 0.7241,
                "rating": 6.8046,
                "minutes": 73.77,
                "total_pass": 12.9251,
                "accurate_pass": 11.3899,
                "duels_won": 2.3802,
                "total_long_balls": 0.859,
                "accurate_long_balls": 0.5895,
                "total_opp_half_passes": 7.6559,
                "accurate_opp_half_passes": 7.1205,
                "crosses_total": 1.1344,
                "crosses_accurate": 0.0,
                "touches": 26.8762,
                "possession_lost": 8.0426,
                "dispossessed": 1.5818,
                "duels_lost": 5.1071,
                "aerial_lost": 0.8342,
                "total_contest": 1.8837,
                "won_contest": 0.8186,
                "ball_recovery": 2.3966,
                "challenges_lost": 1.1542,
                "fouls": 0.4893,
                "fouls_drawn": 1.0526,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3047,
                "tackles_won": 0.3339,
                "tackles": 0.5303,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1761,
                "xgot": 0.1614,
                "offsides": 0.0,
                "ball_carries": 10.1371,
                "total_progression": 12.3248,
                "progressive_carries": 1.0869,
                "shots_off_target": 1.1286,
                "duel_xg_multiplier": 0.9038,
                "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": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "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.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "expected_goals": 0.1784,
                "goal_rate": 0.1888,
                "goals": 0,
                "shots_on_target": 0.5999,
                "total_shots": 1.7348,
                "expected_assists": 0.0755,
                "key_pass": 0.7241,
                "rating": 6.8046,
                "minutes": 73.77,
                "total_pass": 12.9251,
                "accurate_pass": 11.3899,
                "duels_won": 2.3802,
                "total_long_balls": 0.859,
                "accurate_long_balls": 0.5895,
                "total_opp_half_passes": 7.6559,
                "accurate_opp_half_passes": 7.1205,
                "crosses_total": 1.1344,
                "crosses_accurate": 0.0,
                "touches": 26.8762,
                "possession_lost": 8.0426,
                "dispossessed": 1.5818,
                "duels_lost": 5.1071,
                "aerial_lost": 0.8342,
                "total_contest": 1.8837,
                "won_contest": 0.8186,
                "ball_recovery": 2.3966,
                "challenges_lost": 1.1542,
                "fouls": 0.4893,
                "fouls_drawn": 1.0526,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3047,
                "tackles_won": 0.3339,
                "tackles": 0.5303,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1761,
                "xgot": 0.1995,
                "offsides": 0.0,
                "ball_carries": 10.1371,
                "total_progression": 12.3248,
                "progressive_carries": 1.0869,
                "shots_off_target": 1.1286,
                "duel_xg_multiplier": 0.9038,
                "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": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.229,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1443,
                  "after": 0.1784
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0611,
                  "after": 0.0755
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 70.0)",
              "stats": {
                "expected_goals": 0.1784,
                "goal_rate": 0.1888,
                "goals": 0,
                "shots_on_target": 0.5999,
                "total_shots": 1.7348,
                "expected_assists": 0.0755,
                "key_pass": 0.7241,
                "rating": 6.8046,
                "minutes": 73.77,
                "total_pass": 12.9251,
                "accurate_pass": 11.3899,
                "duels_won": 2.3802,
                "total_long_balls": 0.859,
                "accurate_long_balls": 0.5895,
                "total_opp_half_passes": 7.6559,
                "accurate_opp_half_passes": 7.1205,
                "crosses_total": 1.1344,
                "crosses_accurate": 0.0,
                "touches": 26.8762,
                "possession_lost": 8.0426,
                "dispossessed": 1.5818,
                "duels_lost": 5.1071,
                "aerial_lost": 0.8342,
                "total_contest": 1.8837,
                "won_contest": 0.8186,
                "ball_recovery": 2.3966,
                "challenges_lost": 1.1542,
                "fouls": 0.4893,
                "fouls_drawn": 1.0526,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3047,
                "tackles_won": 0.3339,
                "tackles": 0.5303,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1761,
                "xgot": 0.1995,
                "offsides": 0.0,
                "ball_carries": 10.1371,
                "total_progression": 12.3248,
                "progressive_carries": 1.0869,
                "shots_off_target": 1.1286,
                "duel_xg_multiplier": 0.9038,
                "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": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.229,
                "creation_factor": 0.8,
                "fifa_overall": 70.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": 5059,
                "fifa_rank": 5917.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 70.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.1784,
                "goal_rate": 0.1888,
                "goals": 0,
                "shots_on_target": 0.5999,
                "total_shots": 1.7348,
                "expected_assists": 0.0755,
                "key_pass": 0.7241,
                "rating": 6.8046,
                "minutes": 73.77,
                "total_pass": 12.9251,
                "accurate_pass": 11.3899,
                "duels_won": 2.3802,
                "total_long_balls": 0.859,
                "accurate_long_balls": 0.5895,
                "total_opp_half_passes": 7.6559,
                "accurate_opp_half_passes": 7.1205,
                "crosses_total": 1.1344,
                "crosses_accurate": 0.0,
                "touches": 26.8762,
                "possession_lost": 8.0426,
                "dispossessed": 1.5818,
                "duels_lost": 5.1071,
                "aerial_lost": 0.8342,
                "total_contest": 1.8837,
                "won_contest": 0.8186,
                "ball_recovery": 2.3966,
                "challenges_lost": 1.1542,
                "fouls": 0.4893,
                "fouls_drawn": 1.0526,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3047,
                "tackles_won": 0.3339,
                "tackles": 0.5303,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1761,
                "xgot": 0.1995,
                "offsides": 0.0,
                "ball_carries": 10.1371,
                "total_progression": 12.3248,
                "progressive_carries": 1.0869,
                "shots_off_target": 1.1286,
                "duel_xg_multiplier": 0.9038,
                "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": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1634,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.229,
                "creation_factor": 0.8,
                "fifa_overall": 70.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1634,
                "goal_rate": 0.1888,
                "scorer_weight": 0.2193,
                "squad_weight_total": 1.5727,
                "weight_share": 0.1394,
                "finishing_factor": 1.229,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.1784,
                "goal_rate": 0.1888,
                "goals": 0,
                "shots_on_target": 0.5999,
                "total_shots": 1.7348,
                "expected_assists": 0.0755,
                "key_pass": 0.7241,
                "rating": 6.8046,
                "minutes": 73.77,
                "total_pass": 12.9251,
                "accurate_pass": 11.3899,
                "duels_won": 2.3802,
                "total_long_balls": 0.859,
                "accurate_long_balls": 0.5895,
                "total_opp_half_passes": 7.6559,
                "accurate_opp_half_passes": 7.1205,
                "crosses_total": 1.1344,
                "crosses_accurate": 0.0,
                "touches": 26.8762,
                "possession_lost": 8.0426,
                "dispossessed": 1.5818,
                "duels_lost": 5.1071,
                "aerial_lost": 0.8342,
                "total_contest": 1.8837,
                "won_contest": 0.8186,
                "ball_recovery": 2.3966,
                "challenges_lost": 1.1542,
                "fouls": 0.4893,
                "fouls_drawn": 1.0526,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.3047,
                "tackles_won": 0.3339,
                "tackles": 0.5303,
                "clearances": 0.0,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.1761,
                "xgot": 0.1995,
                "offsides": 0.0,
                "ball_carries": 10.1371,
                "total_progression": 12.3248,
                "progressive_carries": 1.0869,
                "shots_off_target": 1.1286,
                "duel_xg_multiplier": 0.9038,
                "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": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1634,
                "projected_assists": 0,
                "assist_probability": 0.0727,
                "finishing_factor": 1.229,
                "creation_factor": 0.8,
                "fifa_overall": 70.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0727,
                "assist_rate": 0.0,
                "provider_weight": 0.0604,
                "squad_weight_total": 0.9036,
                "weight_share": 0.0668,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 5,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Sergio Canales": {
          "player_id": 41560,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 20,
          "height": 176,
          "market_value": 3200000,
          "stats": {
            "expected_goals": 0.1331,
            "goal_rate": 0.1036,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.1097,
            "key_pass": 1,
            "rating": 6.9352,
            "minutes": 80,
            "total_pass": 37,
            "accurate_pass": 31,
            "duels_won": 4,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 21,
            "accurate_opp_half_passes": 17,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 53,
            "possession_lost": 11.9101,
            "dispossessed": 1.8984,
            "duels_lost": 4,
            "aerial_lost": 0,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.2165,
            "offsides": 0,
            "ball_carries": 14,
            "total_progression": 59,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "duel_xg_multiplier": 0.8693,
            "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": "Enzo Boyomo, Alejandro Catena",
            "opponent_faced": "Enzo Boyomo, Alejandro Catena",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1246,
            "projected_assists": 0,
            "assist_probability": 0.1039,
            "finishing_factor": 0.974,
            "creation_factor": 0.8,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Valencia",
              "stats": {
                "minutes": 75,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1392,
                "expected_assists": 0.0787,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 34,
                "accurate_pass": 29,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 27,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0054,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 20
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416346,
              "match_date": "2026-09-16",
              "home_team": "FC Barcelona",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0025,
                "total_shots": 0,
                "total_pass": 47,
                "accurate_pass": 42,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 74,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0238,
                "expected_assists": 0.1594,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 24,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "duels_won": 7,
                "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": 16416321,
              "match_date": "2026-09-05",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1629,
                "expected_assists": 0.0592,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 42,
                "accurate_pass": 38,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416304,
              "match_date": "2026-08-28",
              "home_team": "Real Racing Club",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Elche",
              "stats": {
                "minutes": 85,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.4989,
                "expected_assists": 0.046,
                "total_shots": 5,
                "shots_on_target": 1,
                "shots_off_target": 3,
                "total_pass": 43,
                "accurate_pass": 34,
                "clearances": 1,
                "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": 16416300,
              "match_date": "2026-08-23",
              "home_team": "Getafe",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Getafe",
              "stats": {
                "minutes": 64,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0286,
                "expected_assists": 0.0113,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 20,
                "accurate_pass": 16,
                "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": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 77,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1406,
                "expected_assists": 0.059,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 40,
                "accurate_pass": 35,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 2846,
            "combined_rank_score": 963.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 698.0,
            "sofascore_rating": 6.7,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1229.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9352,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sergio Canales",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Paulinho",
                  "ranking": 2841
                },
                {
                  "player_name": "Marc Casadó",
                  "ranking": 2842
                },
                {
                  "player_name": "Maximilian Göppel",
                  "ranking": 2843
                },
                {
                  "player_name": "Yevgeniy Malashevich",
                  "ranking": 2844
                },
                {
                  "player_name": "Barrenetxea",
                  "ranking": 2845
                }
              ],
              "lower": [
                {
                  "player_name": "Josip Šutalo",
                  "ranking": 2847
                },
                {
                  "player_name": "Orlando Mosquera",
                  "ranking": 2848
                },
                {
                  "player_name": "Kristian Dimitrov",
                  "ranking": 2849
                },
                {
                  "player_name": "Manor Solomon",
                  "ranking": 2850
                },
                {
                  "player_name": "Jørgen Strand Larsen",
                  "ranking": 2851
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.775,
          "history_matches": 8,
          "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": 8,
            "data_confidence": 0.775,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9925,
            "fbref_prior_metrics": {
              "squad": "Racing Sant",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 3.0,
              "starts": 3.0,
              "minutes": 223.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 3.63,
              "shots_on_target_pct": 33.3,
              "prior_reliability": 0.1667
            },
            "rationale": "XGBoost regressor (F_service) evaluated 8 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Racing Sant, rel: 0.17, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1248,
                "goals": 0.1254,
                "goal_rate": 0.1254,
                "shots_on_target": 0.5054,
                "total_shots": 1.5103,
                "expected_assists": 0.0894,
                "key_pass": 1.1786,
                "rating": 6.9352,
                "minutes": 79.95,
                "total_pass": 37.0516,
                "accurate_pass": 31.6646,
                "duels_won": 4.2371,
                "total_long_balls": 1.4842,
                "accurate_long_balls": 0.6465,
                "total_opp_half_passes": 21.4655,
                "accurate_opp_half_passes": 17.0535,
                "crosses_total": 2.5774,
                "crosses_accurate": 0.2951,
                "touches": 53.8824,
                "possession_lost": 12.0001,
                "dispossessed": 1.9127,
                "duels_lost": 4.3966,
                "aerial_lost": 0.4182,
                "total_contest": 1.7226,
                "won_contest": 1.0936,
                "ball_recovery": 3.0924,
                "challenges_lost": 0.8469,
                "fouls": 0.5899,
                "fouls_drawn": 1.4828,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.5159,
                "tackles_won": 0.8018,
                "tackles": 1.2414,
                "clearances": 0.2132,
                "blocks": 0.1877,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2029,
                "offsides": 0.0,
                "ball_carries": 14.5062,
                "total_progression": 59.8506,
                "progressive_carries": 1.9955,
                "shots_off_target": 1.0048
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:06:24.593912+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Valencia",
                    "minutes": 75.0,
                    "is_starting": true,
                    "weight": 0.2062,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Celta Vigo",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.1753,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.149,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Deportivo Alavés",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.1266,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1076,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Elche",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.0915,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Getafe",
                    "minutes": 64.0,
                    "is_starting": true,
                    "weight": 0.0778,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Villarreal",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.0661,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 8.0,
                  "is_starting_11": 1.0,
                  "totalOppositionHalfPasses": 19.6272,
                  "expectedGoals": 0.1064,
                  "accurateOppositionHalfPasses": 15.9703,
                  "accuratePass": 29.5379,
                  "totalShots": 2.0077
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.12483399361371994,
                    "model_output": 0.1248,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0553
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0436
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0225
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0152
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0112
                        }
                      ],
                      "others": -0.0355,
                      "total": 0.1248,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.246993
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.189266
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.113667
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.084941
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.067624
                        }
                      ],
                      "others_margin": -0.250347
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.12537693977355957,
                    "model_output": 0.1254,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.054
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0522
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0292
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0232
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0146
                        }
                      ],
                      "others": -0.0128,
                      "total": 0.1254,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.235482
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.226498
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.153348
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.141178
                        },
                        {
                          "name": "goals",
                          "margin": -0.100739
                        }
                      ],
                      "others_margin": -0.09736
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.505436897277832,
                    "model_output": 0.5054,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1443
                        },
                        {
                          "name": "xg_per_shot",
                          "contribution": -0.0705
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0616
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0451
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0322
                        }
                      ],
                      "others": 0.0329,
                      "total": 0.5054,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.23769
                        },
                        {
                          "name": "xg_per_shot",
                          "margin": -0.109056
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.106122
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.085511
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.065915
                        }
                      ],
                      "others_margin": 0.067131
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.510259747505188,
                    "model_output": 1.5103,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4538
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.1243
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0884
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0678
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0536
                        }
                      ],
                      "others": -0.2318,
                      "total": 1.5103,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.453845
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.124252
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.088409
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.067762
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.053559
                        }
                      ],
                      "others_margin": -0.231947
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.08936189115047455,
                    "model_output": 0.0894,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0151
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0131
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0098
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0064
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0054
                        }
                      ],
                      "others": -0.0118,
                      "total": 0.0894,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.210992
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.153417
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.100406
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.064568
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.055227
                        }
                      ],
                      "others_margin": -0.125026
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 1.1785778999328613,
                    "model_output": 1.1786,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1554
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.1467
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.1068
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0995
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0494
                        }
                      ],
                      "others": 0.1464,
                      "total": 1.1786,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.207608
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.162996
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.103879
                        },
                        {
                          "name": "keyPass",
                          "margin": -0.096474
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.049021
                        }
                      ],
                      "others_margin": 0.132739
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.935222148895264,
                    "model_output": 6.9352,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0651
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0467
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0361
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0327
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": 0.023
                        }
                      ],
                      "others": -0.0354,
                      "total": 6.9352,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.065125
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.046681
                        },
                        {
                          "name": "accuratePass",
                          "margin": 0.03614
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.032682
                        },
                        {
                          "name": "duelWon_p90",
                          "margin": 0.022999
                        }
                      ],
                      "others_margin": -0.03541
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 8,
                  "role_matches": 7,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9925, quality 0.440)",
              "stats": {
                "expected_goals": 0.1239,
                "goals": 0.1244,
                "goal_rate": 0.1244,
                "shots_on_target": 0.5016,
                "total_shots": 1.4989,
                "expected_assists": 0.0887,
                "key_pass": 1.1697,
                "rating": 6.9352,
                "minutes": 79.95,
                "total_pass": 36.7737,
                "accurate_pass": 31.4271,
                "duels_won": 4.2053,
                "total_long_balls": 1.4731,
                "accurate_long_balls": 0.6417,
                "total_opp_half_passes": 21.3045,
                "accurate_opp_half_passes": 16.9256,
                "crosses_total": 2.5581,
                "crosses_accurate": 0.2929,
                "touches": 53.4783,
                "possession_lost": 11.9101,
                "dispossessed": 1.8984,
                "duels_lost": 4.3636,
                "aerial_lost": 0.4151,
                "total_contest": 1.7097,
                "won_contest": 1.0854,
                "ball_recovery": 3.0692,
                "challenges_lost": 0.8405,
                "fouls": 0.5855,
                "fouls_drawn": 1.4717,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.512,
                "tackles_won": 0.7958,
                "tackles": 1.2321,
                "clearances": 0.2116,
                "blocks": 0.1863,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2014,
                "offsides": 0.0,
                "ball_carries": 14.3974,
                "total_progression": 59.4017,
                "progressive_carries": 1.9805,
                "shots_off_target": 0.9973
              },
              "params": {
                "market_value_eur": 3200000,
                "quality_factor": 0.4399,
                "boost_factor": 0.9925,
                "reference_quality": 0.505,
                "history_matches": 8,
                "history_shrink": 0.3846,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0417)",
              "stats": {
                "expected_goals": 0.1239,
                "goals": 0.1192,
                "goal_rate": 0.1192,
                "shots_on_target": 0.5255,
                "total_shots": 1.5708,
                "expected_assists": 0.0887,
                "key_pass": 1.1697,
                "rating": 6.9352,
                "minutes": 79.95,
                "total_pass": 36.7737,
                "accurate_pass": 31.4271,
                "duels_won": 4.2053,
                "total_long_balls": 1.4731,
                "accurate_long_balls": 0.6417,
                "total_opp_half_passes": 21.3045,
                "accurate_opp_half_passes": 16.9256,
                "crosses_total": 2.4663,
                "crosses_accurate": 0.2929,
                "touches": 53.4783,
                "possession_lost": 11.9101,
                "dispossessed": 1.8984,
                "duels_lost": 4.3636,
                "aerial_lost": 0.4151,
                "total_contest": 1.7097,
                "won_contest": 1.0854,
                "ball_recovery": 3.0692,
                "challenges_lost": 0.8405,
                "fouls": 0.5759,
                "fouls_drawn": 1.4548,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.4907,
                "tackles_won": 0.7626,
                "tackles": 1.2321,
                "clearances": 0.2116,
                "blocks": 0.1863,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2014,
                "offsides": 0.0,
                "ball_carries": 14.3974,
                "total_progression": 59.4017,
                "progressive_carries": 1.9805,
                "shots_off_target": 0.9973
              },
              "params": {
                "blend_weight": 0.0417,
                "history_matches": 8,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.8883,
                "prior_reliability": 0.1667,
                "competition": "La Liga",
                "squad": "Racing Sant"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 2.5581,
                  "after": 2.4663
                },
                {
                  "stat": "totalShots",
                  "before": 1.4989,
                  "after": 1.5708
                },
                {
                  "stat": "wonTackle",
                  "before": 0.7958,
                  "after": 0.7626
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5016,
                  "after": 0.5255
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.512,
                  "after": 0.4907
                },
                {
                  "stat": "wasFouled",
                  "before": 1.4717,
                  "after": 1.4548
                },
                {
                  "stat": "fouls",
                  "before": 0.5855,
                  "after": 0.5759
                },
                {
                  "stat": "goals",
                  "before": 0.1244,
                  "after": 0.1192
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1239,
                "goals": 0.1192,
                "goal_rate": 0.1192,
                "shots_on_target": 0.5255,
                "total_shots": 1.5708,
                "expected_assists": 0.0887,
                "key_pass": 1.1697,
                "rating": 6.9352,
                "minutes": 79.95,
                "total_pass": 36.7737,
                "accurate_pass": 31.4271,
                "duels_won": 4.2053,
                "total_long_balls": 1.4731,
                "accurate_long_balls": 0.6417,
                "total_opp_half_passes": 21.3045,
                "accurate_opp_half_passes": 16.9256,
                "crosses_total": 2.4663,
                "crosses_accurate": 0.2929,
                "touches": 53.4783,
                "possession_lost": 11.9101,
                "dispossessed": 1.8984,
                "duels_lost": 4.3636,
                "aerial_lost": 0.4151,
                "total_contest": 1.7097,
                "won_contest": 1.0854,
                "ball_recovery": 3.0692,
                "challenges_lost": 0.8405,
                "fouls": 0.5759,
                "fouls_drawn": 1.4548,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.4907,
                "tackles_won": 0.7626,
                "tackles": 1.2321,
                "clearances": 0.2116,
                "blocks": 0.1863,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2014,
                "offsides": 0.0,
                "ball_carries": 14.3974,
                "total_progression": 59.4017,
                "progressive_carries": 1.9805,
                "shots_off_target": 0.9973
              },
              "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.1077,
                "goals": 0.1036,
                "goal_rate": 0.1036,
                "shots_on_target": 0.4568,
                "total_shots": 1.3655,
                "expected_assists": 0.0887,
                "key_pass": 1.1697,
                "rating": 6.9352,
                "minutes": 79.95,
                "total_pass": 36.7737,
                "accurate_pass": 31.4271,
                "duels_won": 4.2053,
                "total_long_balls": 1.4731,
                "accurate_long_balls": 0.6417,
                "total_opp_half_passes": 21.3045,
                "accurate_opp_half_passes": 16.9256,
                "crosses_total": 2.4663,
                "crosses_accurate": 0.2929,
                "touches": 53.4783,
                "possession_lost": 11.9101,
                "dispossessed": 1.8984,
                "duels_lost": 4.3636,
                "aerial_lost": 0.4151,
                "total_contest": 1.7097,
                "won_contest": 1.0854,
                "ball_recovery": 3.0692,
                "challenges_lost": 0.8405,
                "fouls": 0.5759,
                "fouls_drawn": 1.4548,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.4907,
                "tackles_won": 0.7626,
                "tackles": 1.2321,
                "clearances": 0.2116,
                "blocks": 0.1863,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1751,
                "offsides": 0.0,
                "ball_carries": 14.3974,
                "total_progression": 59.4017,
                "progressive_carries": 1.9805,
                "shots_off_target": 0.867,
                "duel_xg_multiplier": 0.8693,
                "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": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                  "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.8693,
                  "skill_edge": -0.0429,
                  "height_edge": -0.046,
                  "attacker_skill": 0.4399,
                  "defender_skill": 0.5353,
                  "attacker_role": "ST",
                  "attacker_mv_price_index": 1.0,
                  "defender_adjusted_parts": [
                    {
                      "player": "Enzo Boyomo",
                      "market_value": 14600000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.6258
                    },
                    {
                      "player": "Alejandro Catena",
                      "market_value": 2700000,
                      "role": "CB",
                      "price_index": 0.75,
                      "adjusted_quality": 0.4449
                    }
                  ],
                  "xg_override": 0.1077
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 1.5708,
                  "after": 1.3655
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.9973,
                  "after": 0.867
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5255,
                  "after": 0.4568
                },
                {
                  "stat": "expectedGoalsOnTarget",
                  "before": 0.2014,
                  "after": 0.1751
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.1239,
                  "after": 0.1077
                },
                {
                  "stat": "goals",
                  "before": 0.1192,
                  "after": 0.1036
                }
              ]
            },
            {
              "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.1077,
                "goal_rate": 0.1036,
                "goals": 0,
                "shots_on_target": 0.4568,
                "total_shots": 1.3655,
                "expected_assists": 0.0887,
                "key_pass": 1.1697,
                "rating": 6.9352,
                "minutes": 79.95,
                "total_pass": 36.7737,
                "accurate_pass": 31.4271,
                "duels_won": 4.2053,
                "total_long_balls": 1.4731,
                "accurate_long_balls": 0.6417,
                "total_opp_half_passes": 21.3045,
                "accurate_opp_half_passes": 16.9256,
                "crosses_total": 2.4663,
                "crosses_accurate": 0.2929,
                "touches": 53.4783,
                "possession_lost": 11.9101,
                "dispossessed": 1.8984,
                "duels_lost": 4.3636,
                "aerial_lost": 0.4151,
                "total_contest": 1.7097,
                "won_contest": 1.0854,
                "ball_recovery": 3.0692,
                "challenges_lost": 0.8405,
                "fouls": 0.5759,
                "fouls_drawn": 1.4548,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.4907,
                "tackles_won": 0.7626,
                "tackles": 1.2321,
                "clearances": 0.2116,
                "blocks": 0.1863,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.1751,
                "offsides": 0.0,
                "ball_carries": 14.3974,
                "total_progression": 59.4017,
                "progressive_carries": 1.9805,
                "shots_off_target": 0.867,
                "duel_xg_multiplier": 0.8693,
                "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": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "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.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "expected_goals": 0.1331,
                "goal_rate": 0.1036,
                "goals": 0,
                "shots_on_target": 0.4568,
                "total_shots": 1.3655,
                "expected_assists": 0.1097,
                "key_pass": 1.1697,
                "rating": 6.9352,
                "minutes": 79.95,
                "total_pass": 36.7737,
                "accurate_pass": 31.4271,
                "duels_won": 4.2053,
                "total_long_balls": 1.4731,
                "accurate_long_balls": 0.6417,
                "total_opp_half_passes": 21.3045,
                "accurate_opp_half_passes": 16.9256,
                "crosses_total": 2.4663,
                "crosses_accurate": 0.2929,
                "touches": 53.4783,
                "possession_lost": 11.9101,
                "dispossessed": 1.8984,
                "duels_lost": 4.3636,
                "aerial_lost": 0.4151,
                "total_contest": 1.7097,
                "won_contest": 1.0854,
                "ball_recovery": 3.0692,
                "challenges_lost": 0.8405,
                "fouls": 0.5759,
                "fouls_drawn": 1.4548,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.4907,
                "tackles_won": 0.7626,
                "tackles": 1.2321,
                "clearances": 0.2116,
                "blocks": 0.1863,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2165,
                "offsides": 0.0,
                "ball_carries": 14.3974,
                "total_progression": 59.4017,
                "progressive_carries": 1.9805,
                "shots_off_target": 0.867,
                "duel_xg_multiplier": 0.8693,
                "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": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.974,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1077,
                  "after": 0.1331
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0887,
                  "after": 0.1097
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 78.0)",
              "stats": {
                "expected_goals": 0.1331,
                "goal_rate": 0.1036,
                "goals": 0,
                "shots_on_target": 0.4568,
                "total_shots": 1.3655,
                "expected_assists": 0.1097,
                "key_pass": 1.1697,
                "rating": 6.9352,
                "minutes": 79.95,
                "total_pass": 36.7737,
                "accurate_pass": 31.4271,
                "duels_won": 4.2053,
                "total_long_balls": 1.4731,
                "accurate_long_balls": 0.6417,
                "total_opp_half_passes": 21.3045,
                "accurate_opp_half_passes": 16.9256,
                "crosses_total": 2.4663,
                "crosses_accurate": 0.2929,
                "touches": 53.4783,
                "possession_lost": 11.9101,
                "dispossessed": 1.8984,
                "duels_lost": 4.3636,
                "aerial_lost": 0.4151,
                "total_contest": 1.7097,
                "won_contest": 1.0854,
                "ball_recovery": 3.0692,
                "challenges_lost": 0.8405,
                "fouls": 0.5759,
                "fouls_drawn": 1.4548,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.4907,
                "tackles_won": 0.7626,
                "tackles": 1.2321,
                "clearances": 0.2116,
                "blocks": 0.1863,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2165,
                "offsides": 0.0,
                "ball_carries": 14.3974,
                "total_progression": 59.4017,
                "progressive_carries": 1.9805,
                "shots_off_target": 0.867,
                "duel_xg_multiplier": 0.8693,
                "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": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.974,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 4,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2846,
                "fifa_rank": 1229.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.1331,
                "goal_rate": 0.1036,
                "goals": 0,
                "shots_on_target": 0.4568,
                "total_shots": 1.3655,
                "expected_assists": 0.1097,
                "key_pass": 1.1697,
                "rating": 6.9352,
                "minutes": 79.95,
                "total_pass": 36.7737,
                "accurate_pass": 31.4271,
                "duels_won": 4.2053,
                "total_long_balls": 1.4731,
                "accurate_long_balls": 0.6417,
                "total_opp_half_passes": 21.3045,
                "accurate_opp_half_passes": 16.9256,
                "crosses_total": 2.4663,
                "crosses_accurate": 0.2929,
                "touches": 53.4783,
                "possession_lost": 11.9101,
                "dispossessed": 1.8984,
                "duels_lost": 4.3636,
                "aerial_lost": 0.4151,
                "total_contest": 1.7097,
                "won_contest": 1.0854,
                "ball_recovery": 3.0692,
                "challenges_lost": 0.8405,
                "fouls": 0.5759,
                "fouls_drawn": 1.4548,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.4907,
                "tackles_won": 0.7626,
                "tackles": 1.2321,
                "clearances": 0.2116,
                "blocks": 0.1863,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2165,
                "offsides": 0.0,
                "ball_carries": 14.3974,
                "total_progression": 59.4017,
                "progressive_carries": 1.9805,
                "shots_off_target": 0.867,
                "duel_xg_multiplier": 0.8693,
                "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": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1246,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.974,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.1246,
                "goal_rate": 0.1036,
                "scorer_weight": 0.1296,
                "squad_weight_total": 1.5727,
                "weight_share": 0.0824,
                "finishing_factor": 0.974,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.1331,
                "goal_rate": 0.1036,
                "goals": 0,
                "shots_on_target": 0.4568,
                "total_shots": 1.3655,
                "expected_assists": 0.1097,
                "key_pass": 1.1697,
                "rating": 6.9352,
                "minutes": 79.95,
                "total_pass": 36.7737,
                "accurate_pass": 31.4271,
                "duels_won": 4.2053,
                "total_long_balls": 1.4731,
                "accurate_long_balls": 0.6417,
                "total_opp_half_passes": 21.3045,
                "accurate_opp_half_passes": 16.9256,
                "crosses_total": 2.4663,
                "crosses_accurate": 0.2929,
                "touches": 53.4783,
                "possession_lost": 11.9101,
                "dispossessed": 1.8984,
                "duels_lost": 4.3636,
                "aerial_lost": 0.4151,
                "total_contest": 1.7097,
                "won_contest": 1.0854,
                "ball_recovery": 3.0692,
                "challenges_lost": 0.8405,
                "fouls": 0.5759,
                "fouls_drawn": 1.4548,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.4907,
                "tackles_won": 0.7626,
                "tackles": 1.2321,
                "clearances": 0.2116,
                "blocks": 0.1863,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.0,
                "xgot": 0.2165,
                "offsides": 0.0,
                "ball_carries": 14.3974,
                "total_progression": 59.4017,
                "progressive_carries": 1.9805,
                "shots_off_target": 0.867,
                "duel_xg_multiplier": 0.8693,
                "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": "Enzo Boyomo, Alejandro Catena",
                "opponent_faced": "Enzo Boyomo, Alejandro Catena",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.1246,
                "projected_assists": 0,
                "assist_probability": 0.1039,
                "finishing_factor": 0.974,
                "creation_factor": 0.8,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1039,
                "assist_rate": 0.0,
                "provider_weight": 0.0878,
                "squad_weight_total": 0.9036,
                "weight_share": 0.0971,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 4,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Íñigo Sáinz-Maza": {
          "player_id": 949459,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 6,
          "height": 184,
          "market_value": 1000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0517,
            "assist_rate": 0.0488,
            "assists": 0,
            "expected_goals": 0.0452,
            "goal_rate": 0.052,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.7061,
            "minutes": 83,
            "total_pass": 15,
            "accurate_pass": 13,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 8,
            "accurate_own_half_passes": 8,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 22,
            "possession_lost": 3.1696,
            "dispossessed": 0.4528,
            "duels_lost": 2,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 5,
            "total_progression": 20,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "duel_xg_multiplier": 1.0588,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.8,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.44,
            "pressing_faced": "LOW",
            "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Moi Gómez",
            "opponent_faced": "Moi Gómez",
            "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0442,
            "projected_assists": 0,
            "assist_probability": 0.0504,
            "finishing_factor": 1.1778,
            "creation_factor": 1.0763,
            "fifa_overall": 67.0
          },
          "latest_10_games": [
            {
              "match_id": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "total_pass": 6,
                "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": 16416346,
              "match_date": "2026-09-16",
              "home_team": "FC Barcelona",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 78,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0447,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 6485,
            "combined_rank_score": 4815.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 9405.0,
            "fifa_overall": 67.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7061,
            "source_file": "data/player_rankings.csv",
            "player_name": "Íñigo Sáinz-Maza",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Antoine Rabillard",
                  "ranking": 6480
                },
                {
                  "player_name": "Niklas Schmidt",
                  "ranking": 6481
                },
                {
                  "player_name": "Thibault De Smet",
                  "ranking": 6482
                },
                {
                  "player_name": "Lucas Buades",
                  "ranking": 6483
                },
                {
                  "player_name": "Samir Chergui",
                  "ranking": 6484
                }
              ],
              "lower": [
                {
                  "player_name": "Isak Jansson",
                  "ranking": 6486
                },
                {
                  "player_name": "Mahmoud Jaber",
                  "ranking": 6487
                },
                {
                  "player_name": "Faris Pemi Moumbagna",
                  "ranking": 6488
                },
                {
                  "player_name": "Ismaël Boura",
                  "ranking": 6489
                },
                {
                  "player_name": "Iván Franco",
                  "ranking": 6490
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.375,
          "history_matches": 2,
          "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": 2,
            "data_confidence": 0.375,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9855,
            "fbref_prior_metrics": {
              "squad": "Racing Sant",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "XGBoost regressor (M_service) evaluated 2 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Racing Sant, rel: 0.00, 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.637,
                "expected_assists": 0.0424,
                "assists": 0.0496,
                "assist_rate": 0.0496,
                "expected_goals": 0.0351,
                "goals": 0.0499,
                "goal_rate": 0.0499,
                "shots_on_target": 0.1411,
                "total_shots": 0.5646,
                "rating": 6.7061,
                "minutes": 83.33,
                "total_pass": 15.1892,
                "accurate_pass": 12.8919,
                "duels_won": 2.3784,
                "total_long_balls": 0.4595,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 8.1351,
                "accurate_own_half_passes": 7.6756,
                "total_opp_half_passes": 7.0541,
                "accurate_opp_half_passes": 5.2163,
                "crosses_total": 0.4595,
                "crosses_accurate": 0.4595,
                "touches": 22.1622,
                "possession_lost": 3.2162,
                "dispossessed": 0.4595,
                "duels_lost": 2.3784,
                "aerial_won": 0.0,
                "aerial_lost": 0.9189,
                "interceptions": 0.0,
                "tackles_won": 0.9189,
                "tackles": 1.4595,
                "clearances": 0.4595,
                "total_contest": 0.4595,
                "won_contest": 0.4595,
                "challenges_lost": 1.0,
                "fouls": 0.0,
                "fouls_drawn": 0.4595,
                "blocks": 0.0,
                "big_chances_created": 0.4595,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.5135,
                "total_progression": 19.9262,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4235
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-17T10:05:52.581708+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Celta Vigo",
                    "minutes": 10.0,
                    "is_starting": false,
                    "weight": 0.5405,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "FC Barcelona",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.4595,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.0,
                  "creative_index": 0.1964,
                  "expectedGoals": 0.0,
                  "expectedAssists": 0.021,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.6369757652282715,
                    "model_output": 0.637,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.115
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0861
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0762
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0556
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0509
                        }
                      ],
                      "others": -0.1022,
                      "total": 0.637,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.121158
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.089256
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.086284
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.067948
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.066603
                        }
                      ],
                      "others_margin": -0.148901
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04240960627794266,
                    "model_output": 0.0424,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0143
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0107
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0077
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0072
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.004
                        }
                      ],
                      "others": -0.0137,
                      "total": 0.0424,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "expectedAssists",
                          "margin": -0.183045
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.16188
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.135985
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.128088
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.068012
                        }
                      ],
                      "others_margin": -0.281945
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.049553513526916504,
                    "model_output": 0.0496,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0129
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0098
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0062
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0049
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0046
                        }
                      ],
                      "others": -0.009,
                      "total": 0.0496,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.160063
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.141651
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.100698
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.079998
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.075297
                        }
                      ],
                      "others_margin": -0.167918
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.035117823630571365,
                    "model_output": 0.0351,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0354
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0137
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0067
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0049
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0031
                        }
                      ],
                      "others": -0.0114,
                      "total": 0.0351,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.470568
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.265416
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.161194
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.119526
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.068631
                        }
                      ],
                      "others_margin": -0.278699
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.049853287637233734,
                    "model_output": 0.0499,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0175
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0139
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0085
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0065
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0043
                        }
                      ],
                      "others": -0.0188,
                      "total": 0.0499,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.19709
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.18977
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.137568
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.106923
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.065171
                        }
                      ],
                      "others_margin": -0.321388
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.14112471044063568,
                    "model_output": 0.1411,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0902
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0531
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0358
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0189
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0091
                        }
                      ],
                      "others": -0.0335,
                      "total": 0.1411,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.324106
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.255568
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.218614
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.121434
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.053544
                        }
                      ],
                      "others_margin": -0.213113
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5645895004272461,
                    "model_output": 0.5646,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.3123
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1287
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0669
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0555
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0518
                        }
                      ],
                      "others": -0.0731,
                      "total": 0.5646,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.312267
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.128666
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.066912
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.055531
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.051806
                        }
                      ],
                      "others_margin": -0.073095
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.706066131591797,
                    "model_output": 6.7061,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0515
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0389
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0223
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.015
                        },
                        {
                          "name": "cross_accuracy",
                          "contribution": -0.012
                        }
                      ],
                      "others": -0.0519,
                      "total": 6.7061,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.051484
                        },
                        {
                          "name": "rating",
                          "margin": -0.038921
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.022309
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.015027
                        },
                        {
                          "name": "cross_accuracy",
                          "margin": -0.012024
                        }
                      ],
                      "others_margin": -0.051844
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 2,
                  "role_matches": 1,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9855, quality 0.437)",
              "stats": {
                "key_pass": 0.6277,
                "expected_assists": 0.0418,
                "assists": 0.0488,
                "assist_rate": 0.0488,
                "expected_goals": 0.0346,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "shots_on_target": 0.1391,
                "total_shots": 0.5565,
                "rating": 6.7061,
                "minutes": 83.33,
                "total_pass": 14.969,
                "accurate_pass": 12.705,
                "duels_won": 2.3439,
                "total_long_balls": 0.4528,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 8.0171,
                "accurate_own_half_passes": 7.5643,
                "total_opp_half_passes": 6.9518,
                "accurate_opp_half_passes": 5.1407,
                "crosses_total": 0.4528,
                "crosses_accurate": 0.4528,
                "touches": 21.8408,
                "possession_lost": 3.1696,
                "dispossessed": 0.4528,
                "duels_lost": 2.3439,
                "aerial_won": 0.0,
                "aerial_lost": 0.9056,
                "interceptions": 0.0,
                "tackles_won": 0.9056,
                "tackles": 1.4383,
                "clearances": 0.4528,
                "total_contest": 0.4528,
                "won_contest": 0.4528,
                "challenges_lost": 0.9855,
                "fouls": 0.0,
                "fouls_drawn": 0.4528,
                "blocks": 0.0,
                "big_chances_created": 0.4528,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4336,
                "total_progression": 19.6373,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4174
              },
              "params": {
                "market_value_eur": 1000000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9855,
                "reference_quality": 0.505,
                "history_matches": 2,
                "history_shrink": 0.7143,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.6277,
                "expected_assists": 0.0418,
                "assists": 0.0488,
                "assist_rate": 0.0488,
                "expected_goals": 0.0346,
                "goals": 0.0491,
                "goal_rate": 0.0491,
                "shots_on_target": 0.1391,
                "total_shots": 0.5565,
                "rating": 6.7061,
                "minutes": 83.33,
                "total_pass": 14.969,
                "accurate_pass": 12.705,
                "duels_won": 2.3439,
                "total_long_balls": 0.4528,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 8.0171,
                "accurate_own_half_passes": 7.5643,
                "total_opp_half_passes": 6.9518,
                "accurate_opp_half_passes": 5.1407,
                "crosses_total": 0.4528,
                "crosses_accurate": 0.4528,
                "touches": 21.8408,
                "possession_lost": 3.1696,
                "dispossessed": 0.4528,
                "duels_lost": 2.3439,
                "aerial_won": 0.0,
                "aerial_lost": 0.9056,
                "interceptions": 0.0,
                "tackles_won": 0.9056,
                "tackles": 1.4383,
                "clearances": 0.4528,
                "total_contest": 0.4528,
                "won_contest": 0.4528,
                "challenges_lost": 0.9855,
                "fouls": 0.0,
                "fouls_drawn": 0.4528,
                "blocks": 0.0,
                "big_chances_created": 0.4528,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4336,
                "total_progression": 19.6373,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4174
              },
              "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.6277,
                "expected_assists": 0.0418,
                "assists": 0.0488,
                "assist_rate": 0.0488,
                "expected_goals": 0.0366,
                "goals": 0.052,
                "goal_rate": 0.052,
                "shots_on_target": 0.1473,
                "total_shots": 0.5892,
                "rating": 6.7061,
                "minutes": 83.33,
                "total_pass": 14.969,
                "accurate_pass": 12.705,
                "duels_won": 2.3439,
                "total_long_balls": 0.4528,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 8.0171,
                "accurate_own_half_passes": 7.5643,
                "total_opp_half_passes": 6.9518,
                "accurate_opp_half_passes": 5.1407,
                "crosses_total": 0.4528,
                "crosses_accurate": 0.4528,
                "touches": 21.8408,
                "possession_lost": 3.1696,
                "dispossessed": 0.4528,
                "duels_lost": 2.3439,
                "aerial_won": 1.1,
                "aerial_lost": 0.9056,
                "interceptions": 0.0,
                "tackles_won": 0.9056,
                "tackles": 1.4383,
                "clearances": 0.4528,
                "total_contest": 0.4528,
                "won_contest": 0.4528,
                "challenges_lost": 0.9855,
                "fouls": 0.0,
                "fouls_drawn": 0.4528,
                "blocks": 0.0,
                "big_chances_created": 0.4528,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4336,
                "total_progression": 19.6373,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4419,
                "duel_xg_multiplier": 1.0588,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.44,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Moi Gómez",
                "opponent_faced": "Moi Gómez",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Moi Gómez",
                  "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                  "duel_win_rate": 0.44,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.0588,
                  "skill_edge": 0.0,
                  "height_edge": 0.04,
                  "attacker_skill": 0.4374,
                  "defender_skill": 0.4374,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Moi Gómez",
                      "market_value": 1600000,
                      "role": "CM",
                      "price_index": 0.9,
                      "adjusted_quality": 0.4374
                    }
                  ],
                  "xg_override": 0.0366
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.0,
                  "after": 1.1
                },
                {
                  "stat": "totalShots",
                  "before": 0.5565,
                  "after": 0.5892
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4174,
                  "after": 0.4419
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1391,
                  "after": 0.1473
                }
              ]
            },
            {
              "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.6277,
                "expected_assists": 0.0418,
                "assist_rate": 0.0488,
                "assists": 0,
                "expected_goals": 0.0366,
                "goal_rate": 0.052,
                "goals": 0,
                "shots_on_target": 0.1473,
                "total_shots": 0.5892,
                "rating": 6.7061,
                "minutes": 83.33,
                "total_pass": 14.969,
                "accurate_pass": 12.705,
                "duels_won": 2.3439,
                "total_long_balls": 0.4528,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 8.0171,
                "accurate_own_half_passes": 7.5643,
                "total_opp_half_passes": 6.9518,
                "accurate_opp_half_passes": 5.1407,
                "crosses_total": 0.4528,
                "crosses_accurate": 0.4528,
                "touches": 21.8408,
                "possession_lost": 3.1696,
                "dispossessed": 0.4528,
                "duels_lost": 2.3439,
                "aerial_won": 1.1,
                "aerial_lost": 0.9056,
                "interceptions": 0.0,
                "tackles_won": 0.9056,
                "tackles": 1.4383,
                "clearances": 0.4528,
                "total_contest": 0.4528,
                "won_contest": 0.4528,
                "challenges_lost": 0.9855,
                "fouls": 0.0,
                "fouls_drawn": 0.4528,
                "blocks": 0.0,
                "big_chances_created": 0.4528,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4336,
                "total_progression": 19.6373,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4419,
                "duel_xg_multiplier": 1.0588,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.44,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Moi Gómez",
                "opponent_faced": "Moi Gómez",
                "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.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "key_pass": 0.6277,
                "expected_assists": 0.0517,
                "assist_rate": 0.0488,
                "assists": 0,
                "expected_goals": 0.0452,
                "goal_rate": 0.052,
                "goals": 0,
                "shots_on_target": 0.1473,
                "total_shots": 0.5892,
                "rating": 6.7061,
                "minutes": 83.33,
                "total_pass": 14.969,
                "accurate_pass": 12.705,
                "duels_won": 2.3439,
                "total_long_balls": 0.4528,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 8.0171,
                "accurate_own_half_passes": 7.5643,
                "total_opp_half_passes": 6.9518,
                "accurate_opp_half_passes": 5.1407,
                "crosses_total": 0.4528,
                "crosses_accurate": 0.4528,
                "touches": 21.8408,
                "possession_lost": 3.1696,
                "dispossessed": 0.4528,
                "duels_lost": 2.3439,
                "aerial_won": 1.1,
                "aerial_lost": 0.9056,
                "interceptions": 0.0,
                "tackles_won": 0.9056,
                "tackles": 1.4383,
                "clearances": 0.4528,
                "total_contest": 0.4528,
                "won_contest": 0.4528,
                "challenges_lost": 0.9855,
                "fouls": 0.0,
                "fouls_drawn": 0.4528,
                "blocks": 0.0,
                "big_chances_created": 0.4528,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4336,
                "total_progression": 19.6373,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4419,
                "duel_xg_multiplier": 1.0588,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.44,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Moi Gómez",
                "opponent_faced": "Moi Gómez",
                "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.1778,
                "creation_factor": 1.0763
              },
              "params": {
                "team_lambda": 1.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0366,
                  "after": 0.0452
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0418,
                  "after": 0.0517
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 67.0)",
              "stats": {
                "key_pass": 0.6277,
                "expected_assists": 0.0517,
                "assist_rate": 0.0488,
                "assists": 0,
                "expected_goals": 0.0452,
                "goal_rate": 0.052,
                "goals": 0,
                "shots_on_target": 0.1473,
                "total_shots": 0.5892,
                "rating": 6.7061,
                "minutes": 83.33,
                "total_pass": 14.969,
                "accurate_pass": 12.705,
                "duels_won": 2.3439,
                "total_long_balls": 0.4528,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 8.0171,
                "accurate_own_half_passes": 7.5643,
                "total_opp_half_passes": 6.9518,
                "accurate_opp_half_passes": 5.1407,
                "crosses_total": 0.4528,
                "crosses_accurate": 0.4528,
                "touches": 21.8408,
                "possession_lost": 3.1696,
                "dispossessed": 0.4528,
                "duels_lost": 2.3439,
                "aerial_won": 1.1,
                "aerial_lost": 0.9056,
                "interceptions": 0.0,
                "tackles_won": 0.9056,
                "tackles": 1.4383,
                "clearances": 0.4528,
                "total_contest": 0.4528,
                "won_contest": 0.4528,
                "challenges_lost": 0.9855,
                "fouls": 0.0,
                "fouls_drawn": 0.4528,
                "blocks": 0.0,
                "big_chances_created": 0.4528,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4336,
                "total_progression": 19.6373,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4419,
                "duel_xg_multiplier": 1.0588,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.44,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Moi Gómez",
                "opponent_faced": "Moi Gómez",
                "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.1778,
                "creation_factor": 1.0763,
                "fifa_overall": 67.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": 6485,
                "fifa_rank": 9405.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 67.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.6277,
                "expected_assists": 0.0517,
                "assist_rate": 0.0488,
                "assists": 0,
                "expected_goals": 0.0452,
                "goal_rate": 0.052,
                "goals": 0,
                "shots_on_target": 0.1473,
                "total_shots": 0.5892,
                "rating": 6.7061,
                "minutes": 83.33,
                "total_pass": 14.969,
                "accurate_pass": 12.705,
                "duels_won": 2.3439,
                "total_long_balls": 0.4528,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 8.0171,
                "accurate_own_half_passes": 7.5643,
                "total_opp_half_passes": 6.9518,
                "accurate_opp_half_passes": 5.1407,
                "crosses_total": 0.4528,
                "crosses_accurate": 0.4528,
                "touches": 21.8408,
                "possession_lost": 3.1696,
                "dispossessed": 0.4528,
                "duels_lost": 2.3439,
                "aerial_won": 1.1,
                "aerial_lost": 0.9056,
                "interceptions": 0.0,
                "tackles_won": 0.9056,
                "tackles": 1.4383,
                "clearances": 0.4528,
                "total_contest": 0.4528,
                "won_contest": 0.4528,
                "challenges_lost": 0.9855,
                "fouls": 0.0,
                "fouls_drawn": 0.4528,
                "blocks": 0.0,
                "big_chances_created": 0.4528,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4336,
                "total_progression": 19.6373,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4419,
                "duel_xg_multiplier": 1.0588,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.44,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Moi Gómez",
                "opponent_faced": "Moi Gómez",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0442,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.1778,
                "creation_factor": 1.0763,
                "fifa_overall": 67.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0442,
                "goal_rate": 0.052,
                "scorer_weight": 0.0532,
                "squad_weight_total": 1.5727,
                "weight_share": 0.0338,
                "finishing_factor": 1.1778,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.6277,
                "expected_assists": 0.0517,
                "assist_rate": 0.0488,
                "assists": 0,
                "expected_goals": 0.0452,
                "goal_rate": 0.052,
                "goals": 0,
                "shots_on_target": 0.1473,
                "total_shots": 0.5892,
                "rating": 6.7061,
                "minutes": 83.33,
                "total_pass": 14.969,
                "accurate_pass": 12.705,
                "duels_won": 2.3439,
                "total_long_balls": 0.4528,
                "accurate_long_balls": 0.0,
                "total_own_half_passes": 8.0171,
                "accurate_own_half_passes": 7.5643,
                "total_opp_half_passes": 6.9518,
                "accurate_opp_half_passes": 5.1407,
                "crosses_total": 0.4528,
                "crosses_accurate": 0.4528,
                "touches": 21.8408,
                "possession_lost": 3.1696,
                "dispossessed": 0.4528,
                "duels_lost": 2.3439,
                "aerial_won": 1.1,
                "aerial_lost": 0.9056,
                "interceptions": 0.0,
                "tackles_won": 0.9056,
                "tackles": 1.4383,
                "clearances": 0.4528,
                "total_contest": 0.4528,
                "won_contest": 0.4528,
                "challenges_lost": 0.9855,
                "fouls": 0.0,
                "fouls_drawn": 0.4528,
                "blocks": 0.0,
                "big_chances_created": 0.4528,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4336,
                "total_progression": 19.6373,
                "progressive_carries": 0.0,
                "shots_off_target": 0.4419,
                "duel_xg_multiplier": 1.0588,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.8,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.44,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Moi Gómez",
                "opponent_faced": "Moi Gómez",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0442,
                "projected_assists": 0,
                "assist_probability": 0.0504,
                "finishing_factor": 1.1778,
                "creation_factor": 1.0763,
                "fifa_overall": 67.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0504,
                "assist_rate": 0.0488,
                "provider_weight": 0.0556,
                "squad_weight_total": 0.9036,
                "weight_share": 0.0616,
                "creation_factor": 1.0763,
                "appearance_weight": 1.0,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Iván Martín": {
          "player_id": 973699,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 23,
          "height": 178,
          "market_value": 2700000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1019,
            "assist_rate": 0.067,
            "assists": 0,
            "expected_goals": 0.0602,
            "goal_rate": 0.082,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "rating": 6.9836,
            "minutes": 86,
            "total_pass": 55,
            "accurate_pass": 50,
            "duels_won": 5,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 23,
            "accurate_own_half_passes": 22,
            "total_opp_half_passes": 32,
            "accurate_opp_half_passes": 28,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 68,
            "possession_lost": 9.5988,
            "dispossessed": 0.8926,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0995,
            "ball_carries": 24,
            "total_progression": 91,
            "progressive_carries": 2,
            "shots_off_target": 0,
            "duel_xg_multiplier": 1.025,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.7,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.417,
            "pressing_faced": "LOW",
            "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Moi Gómez",
            "opponent_faced": "Moi Gómez",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0584,
            "projected_assists": 0,
            "assist_probability": 0.0969,
            "finishing_factor": 1.25,
            "creation_factor": 0.8837,
            "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": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0641,
                "expected_assists": 0.0881,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 74,
                "accurate_pass": 68,
                "key_pass": 1,
                "interceptions": 1,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 84,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0661,
                "total_shots": 0,
                "total_pass": 65,
                "accurate_pass": 57,
                "key_pass": 1,
                "tackles": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0148,
                "total_shots": 0,
                "total_pass": 62,
                "accurate_pass": 52,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 2,
                "clearances": 2,
                "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": 16416321,
              "match_date": "2026-09-05",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0301,
                "total_shots": 0,
                "total_pass": 61,
                "accurate_pass": 52,
                "tackles": 6,
                "tackles_won": 3,
                "clearances": 2,
                "aerial_won": 1,
                "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": 16416304,
              "match_date": "2026-08-28",
              "home_team": "Real Racing Club",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0539,
                "expected_assists": 0.0168,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 43,
                "accurate_pass": 39,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 3,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416300,
              "match_date": "2026-08-23",
              "home_team": "Getafe",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Getafe",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.008,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 19,
                "tackles": 5,
                "tackles_won": 3,
                "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": 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": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0603,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 45,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 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": 90,
                "rating": 7.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0261,
                "expected_assists": 0.0449,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 56,
                "accurate_pass": 54,
                "key_pass": 1,
                "tackles": 2,
                "interceptions": 1,
                "clearances": 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": "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": 57,
                "rating": 7.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.5242,
                "total_shots": 0,
                "total_pass": 58,
                "accurate_pass": 57,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 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": "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": 0,
              "team": "Girona FC",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 30,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0085,
                "expected_assists": 0.0053,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "duels_won": 2
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 2964,
            "combined_rank_score": 988.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 391.0,
            "sofascore_rating": 6.95,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1585.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.9836,
            "source_file": "data/player_rankings.csv",
            "player_name": "Iván Martín",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Aschraf El Mahdioui",
                  "ranking": 2959
                },
                {
                  "player_name": "Ethan Jolley",
                  "ranking": 2960
                },
                {
                  "player_name": "Malang Sarr",
                  "ranking": 2961
                },
                {
                  "player_name": "Giacomo Benvenuti",
                  "ranking": 2962
                },
                {
                  "player_name": "Aron Sele",
                  "ranking": 2963
                }
              ],
              "lower": [
                {
                  "player_name": "Marcello Mularoni",
                  "ranking": 2965
                },
                {
                  "player_name": "Rafael Arace",
                  "ranking": 2966
                },
                {
                  "player_name": "Rodrigo Holgado",
                  "ranking": 2967
                },
                {
                  "player_name": "Gabriel Mentz",
                  "ranking": 2968
                },
                {
                  "player_name": "Maksudkhodzha  Alokhodzhaev",
                  "ranking": 2969
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.765,
          "history_matches": 41,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 41,
            "data_confidence": 0.765,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9978,
            "fbref_prior_metrics": {
              "squad": "Racing Sant",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "minutes": 135.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.67,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1
            },
            "rationale": "XGBoost regressor (M_service) evaluated 41 historical appearances across 8 target models; FBref 2026-2027 prior blended (La Liga, Racing Sant, rel: 0.10, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.9412,
                "expected_assists": 0.0826,
                "assists": 0.0677,
                "assist_rate": 0.0677,
                "expected_goals": 0.0476,
                "goals": 0.0808,
                "goal_rate": 0.0808,
                "shots_on_target": 0.2388,
                "total_shots": 0.6864,
                "rating": 6.9836,
                "minutes": 85.53,
                "total_pass": 55.565,
                "accurate_pass": 49.7215,
                "duels_won": 4.7654,
                "total_long_balls": 2.0125,
                "accurate_long_balls": 1.415,
                "total_own_half_passes": 23.0854,
                "accurate_own_half_passes": 21.6816,
                "total_opp_half_passes": 32.4795,
                "accurate_opp_half_passes": 28.0399,
                "crosses_total": 0.3928,
                "crosses_accurate": 0.1263,
                "touches": 68.5276,
                "possession_lost": 9.62,
                "dispossessed": 0.8946,
                "duels_lost": 4.3174,
                "aerial_won": 1.0766,
                "aerial_lost": 0.9415,
                "interceptions": 0.3933,
                "tackles_won": 0.9663,
                "tackles": 2.0008,
                "clearances": 1.1037,
                "total_contest": 1.6894,
                "won_contest": 1.004,
                "challenges_lost": 0.5258,
                "fouls": 1.3469,
                "fouls_drawn": 0.6839,
                "blocks": 0.1535,
                "big_chances_created": 0.0829,
                "big_chances_missed": 0.0145,
                "xgot": 0.0787,
                "ball_carries": 23.9799,
                "total_progression": 90.7711,
                "progressive_carries": 2.2001,
                "shots_off_target": 0.4476
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-17T10:05:52.581708+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1502,
                    "rating": 7.8
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Celta Vigo",
                    "minutes": 84.0,
                    "is_starting": true,
                    "weight": 0.1277,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1085,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0922,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0784,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Getafe",
                    "minutes": 45.0,
                    "is_starting": false,
                    "weight": 0.0666,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0566,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Atlético Madrid",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0481,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-05-14",
                    "opponent": "Real Sociedad",
                    "minutes": 57.0,
                    "is_starting": true,
                    "weight": 0.0409,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-05-11",
                    "opponent": "Rayo Vallecano",
                    "minutes": 30.0,
                    "is_starting": false,
                    "weight": 0.0348,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "totalShots": 0.3822,
                  "creative_index": 0.3881,
                  "expectedGoals": 0.0201,
                  "expectedAssists": 0.0673,
                  "onTargetScoringAttempt": 0.2007
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.9411967992782593,
                    "model_output": 0.9412,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1244
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0768
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0651
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0607
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0296
                        }
                      ],
                      "others": 0.0258,
                      "total": 0.9412,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.130381
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.078502
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.066961
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.062278
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.031784
                        }
                      ],
                      "others_margin": 0.027809
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.08257532864809036,
                    "model_output": 0.0826,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.012
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0117
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0046
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0036
                        },
                        {
                          "name": "goalAssist",
                          "contribution": -0.003
                        }
                      ],
                      "others": -0.0013,
                      "total": 0.0826,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.13095
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.127339
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.052351
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.040066
                        },
                        {
                          "name": "goalAssist",
                          "margin": -0.03488
                        }
                      ],
                      "others_margin": -0.017459
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.06766481697559357,
                    "model_output": 0.0677,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "totalCross",
                          "contribution": -0.0111
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0063
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0056
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0045
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0039
                        }
                      ],
                      "others": -0.0175,
                      "total": 0.0677,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "totalCross",
                          "margin": -0.13557
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.079814
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.070239
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.056961
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.046532
                        }
                      ],
                      "others_margin": -0.231614
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04760867729783058,
                    "model_output": 0.0476,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0346
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0113
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0073
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0028
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.002
                        }
                      ],
                      "others": -0.0073,
                      "total": 0.0476,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.457662
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.20957
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.140279
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.051472
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.036269
                        }
                      ],
                      "others_margin": -0.141258
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.08079880475997925,
                    "model_output": 0.0808,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0199
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0134
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0086
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0092
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0066
                        }
                      ],
                      "others": 0.0051,
                      "total": 0.0808,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "expectedGoals",
                          "margin": -0.228042
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.189581
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.125686
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.118058
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.08311
                        }
                      ],
                      "others_margin": 0.066144
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.23878096044063568,
                    "model_output": 0.2388,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0706
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0486
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0284
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0165
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0113
                        }
                      ],
                      "others": 0.0091,
                      "total": 0.2388,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.244221
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.211396
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.128923
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.07293
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.050346
                        }
                      ],
                      "others_margin": 0.038758
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.6863341331481934,
                    "model_output": 0.6863,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.2863
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1323
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0536
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0393
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0274
                        }
                      ],
                      "others": -0.0897,
                      "total": 0.6863,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.286298
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.132258
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.053615
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.039272
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.027362
                        }
                      ],
                      "others_margin": -0.089636
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.983648777008057,
                    "model_output": 6.9836,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0924
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0304
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0256
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0239
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.018
                        }
                      ],
                      "others": -0.0238,
                      "total": 6.9836,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.09239
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.030389
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.025643
                        },
                        {
                          "name": "rating",
                          "margin": 0.023876
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.017978
                        }
                      ],
                      "others_margin": -0.023727
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 41,
                  "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 0.9978, quality 0.437)",
              "stats": {
                "key_pass": 0.9391,
                "expected_assists": 0.0824,
                "assists": 0.0675,
                "assist_rate": 0.0675,
                "expected_goals": 0.0475,
                "goals": 0.0806,
                "goal_rate": 0.0806,
                "shots_on_target": 0.2383,
                "total_shots": 0.6849,
                "rating": 6.9836,
                "minutes": 85.53,
                "total_pass": 55.4428,
                "accurate_pass": 49.6121,
                "duels_won": 4.7549,
                "total_long_balls": 2.0081,
                "accurate_long_balls": 1.4119,
                "total_own_half_passes": 23.0346,
                "accurate_own_half_passes": 21.6339,
                "total_opp_half_passes": 32.408,
                "accurate_opp_half_passes": 27.9782,
                "crosses_total": 0.3919,
                "crosses_accurate": 0.126,
                "touches": 68.3768,
                "possession_lost": 9.5988,
                "dispossessed": 0.8926,
                "duels_lost": 4.3079,
                "aerial_won": 1.0742,
                "aerial_lost": 0.9394,
                "interceptions": 0.3924,
                "tackles_won": 0.9642,
                "tackles": 1.9964,
                "clearances": 1.1013,
                "total_contest": 1.6857,
                "won_contest": 1.0018,
                "challenges_lost": 0.5246,
                "fouls": 1.3439,
                "fouls_drawn": 0.6824,
                "blocks": 0.1532,
                "big_chances_created": 0.0827,
                "big_chances_missed": 0.0145,
                "xgot": 0.0785,
                "ball_carries": 23.9271,
                "total_progression": 90.5714,
                "progressive_carries": 2.1953,
                "shots_off_target": 0.4466
              },
              "params": {
                "market_value_eur": 2700000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9978,
                "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.0071)",
              "stats": {
                "key_pass": 0.9391,
                "expected_assists": 0.0824,
                "assists": 0.067,
                "assist_rate": 0.067,
                "expected_goals": 0.0475,
                "goals": 0.08,
                "goal_rate": 0.08,
                "shots_on_target": 0.2366,
                "total_shots": 0.6846,
                "rating": 6.9836,
                "minutes": 85.53,
                "total_pass": 55.4428,
                "accurate_pass": 49.6121,
                "duels_won": 4.7549,
                "total_long_balls": 2.0081,
                "accurate_long_balls": 1.4119,
                "total_own_half_passes": 23.0346,
                "accurate_own_half_passes": 21.6339,
                "total_opp_half_passes": 32.408,
                "accurate_opp_half_passes": 27.9782,
                "crosses_total": 0.3981,
                "crosses_accurate": 0.126,
                "touches": 68.3768,
                "possession_lost": 9.5988,
                "dispossessed": 0.8926,
                "duels_lost": 4.3079,
                "aerial_won": 1.0742,
                "aerial_lost": 0.9394,
                "interceptions": 0.3896,
                "tackles_won": 0.9753,
                "tackles": 1.9964,
                "clearances": 1.1013,
                "total_contest": 1.6857,
                "won_contest": 1.0018,
                "challenges_lost": 0.5246,
                "fouls": 1.3434,
                "fouls_drawn": 0.6865,
                "blocks": 0.1532,
                "big_chances_created": 0.0827,
                "big_chances_missed": 0.0145,
                "xgot": 0.0785,
                "ball_carries": 23.9271,
                "total_progression": 90.5714,
                "progressive_carries": 2.1953,
                "shots_off_target": 0.4466
              },
              "params": {
                "blend_weight": 0.0071,
                "history_matches": 41,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9503,
                "prior_reliability": 0.1,
                "competition": "La Liga",
                "squad": "Racing Sant"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 0.9642,
                  "after": 0.9753
                },
                {
                  "stat": "totalCross",
                  "before": 0.3919,
                  "after": 0.3981
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.9391,
                "expected_assists": 0.0824,
                "assists": 0.067,
                "assist_rate": 0.067,
                "expected_goals": 0.0475,
                "goals": 0.08,
                "goal_rate": 0.08,
                "shots_on_target": 0.2366,
                "total_shots": 0.6846,
                "rating": 6.9836,
                "minutes": 85.53,
                "total_pass": 55.4428,
                "accurate_pass": 49.6121,
                "duels_won": 4.7549,
                "total_long_balls": 2.0081,
                "accurate_long_balls": 1.4119,
                "total_own_half_passes": 23.0346,
                "accurate_own_half_passes": 21.6339,
                "total_opp_half_passes": 32.408,
                "accurate_opp_half_passes": 27.9782,
                "crosses_total": 0.3981,
                "crosses_accurate": 0.126,
                "touches": 68.3768,
                "possession_lost": 9.5988,
                "dispossessed": 0.8926,
                "duels_lost": 4.3079,
                "aerial_won": 1.0742,
                "aerial_lost": 0.9394,
                "interceptions": 0.3896,
                "tackles_won": 0.9753,
                "tackles": 1.9964,
                "clearances": 1.1013,
                "total_contest": 1.6857,
                "won_contest": 1.0018,
                "challenges_lost": 0.5246,
                "fouls": 1.3434,
                "fouls_drawn": 0.6865,
                "blocks": 0.1532,
                "big_chances_created": 0.0827,
                "big_chances_missed": 0.0145,
                "xgot": 0.0785,
                "ball_carries": 23.9271,
                "total_progression": 90.5714,
                "progressive_carries": 2.1953,
                "shots_off_target": 0.4466
              },
              "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.9391,
                "expected_assists": 0.0824,
                "assists": 0.067,
                "assist_rate": 0.067,
                "expected_goals": 0.0487,
                "goals": 0.082,
                "goal_rate": 0.082,
                "shots_on_target": 0.2425,
                "total_shots": 0.7017,
                "rating": 6.9836,
                "minutes": 85.53,
                "total_pass": 55.4428,
                "accurate_pass": 49.6121,
                "duels_won": 4.7549,
                "total_long_balls": 2.0081,
                "accurate_long_balls": 1.4119,
                "total_own_half_passes": 23.0346,
                "accurate_own_half_passes": 21.6339,
                "total_opp_half_passes": 32.408,
                "accurate_opp_half_passes": 27.9782,
                "crosses_total": 0.3981,
                "crosses_accurate": 0.126,
                "touches": 68.3768,
                "possession_lost": 9.5988,
                "dispossessed": 0.8926,
                "duels_lost": 4.3079,
                "aerial_won": 1.0,
                "aerial_lost": 0.9394,
                "interceptions": 0.3896,
                "tackles_won": 0.9753,
                "tackles": 1.9964,
                "clearances": 1.1013,
                "total_contest": 1.6857,
                "won_contest": 1.0018,
                "challenges_lost": 0.5246,
                "fouls": 1.3434,
                "fouls_drawn": 0.6865,
                "blocks": 0.1532,
                "big_chances_created": 0.0827,
                "big_chances_missed": 0.0149,
                "xgot": 0.0805,
                "ball_carries": 23.9271,
                "total_progression": 90.5714,
                "progressive_carries": 2.1953,
                "shots_off_target": 0.4578,
                "duel_xg_multiplier": 1.025,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.417,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Moi Gómez",
                "opponent_faced": "Moi Gómez",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Moi Gómez",
                  "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                  "duel_win_rate": 0.417,
                  "pressing_faced": "LOW",
                  "numerical_situation": "1v1",
                  "xg_multiplier": 1.025,
                  "skill_edge": 0.001,
                  "height_edge": 0.016,
                  "attacker_skill": 0.4396,
                  "defender_skill": 0.4374,
                  "attacker_role": "CDM",
                  "attacker_mv_price_index": 0.85,
                  "defender_adjusted_parts": [
                    {
                      "player": "Moi Gómez",
                      "market_value": 1600000,
                      "role": "CM",
                      "price_index": 0.9,
                      "adjusted_quality": 0.4374
                    }
                  ],
                  "xg_override": 0.0487
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 1.0742,
                  "after": 1.0
                },
                {
                  "stat": "totalShots",
                  "before": 0.6846,
                  "after": 0.7017
                },
                {
                  "stat": "shotOffTarget",
                  "before": 0.4466,
                  "after": 0.4578
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.2366,
                  "after": 0.2425
                }
              ]
            },
            {
              "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.9391,
                "expected_assists": 0.0824,
                "assist_rate": 0.067,
                "assists": 0,
                "expected_goals": 0.0487,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2425,
                "total_shots": 0.7017,
                "rating": 6.9836,
                "minutes": 85.53,
                "total_pass": 55.4428,
                "accurate_pass": 49.6121,
                "duels_won": 4.7549,
                "total_long_balls": 2.0081,
                "accurate_long_balls": 1.4119,
                "total_own_half_passes": 23.0346,
                "accurate_own_half_passes": 21.6339,
                "total_opp_half_passes": 32.408,
                "accurate_opp_half_passes": 27.9782,
                "crosses_total": 0.3981,
                "crosses_accurate": 0.126,
                "touches": 68.3768,
                "possession_lost": 9.5988,
                "dispossessed": 0.8926,
                "duels_lost": 4.3079,
                "aerial_won": 1.0,
                "aerial_lost": 0.9394,
                "interceptions": 0.3896,
                "tackles_won": 0.9753,
                "tackles": 1.9964,
                "clearances": 1.1013,
                "total_contest": 1.6857,
                "won_contest": 1.0018,
                "challenges_lost": 0.5246,
                "fouls": 1.3434,
                "fouls_drawn": 0.6865,
                "blocks": 0.1532,
                "big_chances_created": 0.0827,
                "big_chances_missed": 0.0149,
                "xgot": 0.0805,
                "ball_carries": 23.9271,
                "total_progression": 90.5714,
                "progressive_carries": 2.1953,
                "shots_off_target": 0.4578,
                "duel_xg_multiplier": 1.025,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.417,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Moi Gómez",
                "opponent_faced": "Moi Gómez",
                "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.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "key_pass": 0.9391,
                "expected_assists": 0.1019,
                "assist_rate": 0.067,
                "assists": 0,
                "expected_goals": 0.0602,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2425,
                "total_shots": 0.7017,
                "rating": 6.9836,
                "minutes": 85.53,
                "total_pass": 55.4428,
                "accurate_pass": 49.6121,
                "duels_won": 4.7549,
                "total_long_balls": 2.0081,
                "accurate_long_balls": 1.4119,
                "total_own_half_passes": 23.0346,
                "accurate_own_half_passes": 21.6339,
                "total_opp_half_passes": 32.408,
                "accurate_opp_half_passes": 27.9782,
                "crosses_total": 0.3981,
                "crosses_accurate": 0.126,
                "touches": 68.3768,
                "possession_lost": 9.5988,
                "dispossessed": 0.8926,
                "duels_lost": 4.3079,
                "aerial_won": 1.0,
                "aerial_lost": 0.9394,
                "interceptions": 0.3896,
                "tackles_won": 0.9753,
                "tackles": 1.9964,
                "clearances": 1.1013,
                "total_contest": 1.6857,
                "won_contest": 1.0018,
                "challenges_lost": 0.5246,
                "fouls": 1.3434,
                "fouls_drawn": 0.6865,
                "blocks": 0.1532,
                "big_chances_created": 0.0827,
                "big_chances_missed": 0.0149,
                "xgot": 0.0995,
                "ball_carries": 23.9271,
                "total_progression": 90.5714,
                "progressive_carries": 2.1953,
                "shots_off_target": 0.4578,
                "duel_xg_multiplier": 1.025,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.417,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Moi Gómez",
                "opponent_faced": "Moi Gómez",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8837
              },
              "params": {
                "team_lambda": 1.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0487,
                  "after": 0.0602
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0824,
                  "after": 0.1019
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 77.0)",
              "stats": {
                "key_pass": 0.9391,
                "expected_assists": 0.1019,
                "assist_rate": 0.067,
                "assists": 0,
                "expected_goals": 0.0602,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2425,
                "total_shots": 0.7017,
                "rating": 6.9836,
                "minutes": 85.53,
                "total_pass": 55.4428,
                "accurate_pass": 49.6121,
                "duels_won": 4.7549,
                "total_long_balls": 2.0081,
                "accurate_long_balls": 1.4119,
                "total_own_half_passes": 23.0346,
                "accurate_own_half_passes": 21.6339,
                "total_opp_half_passes": 32.408,
                "accurate_opp_half_passes": 27.9782,
                "crosses_total": 0.3981,
                "crosses_accurate": 0.126,
                "touches": 68.3768,
                "possession_lost": 9.5988,
                "dispossessed": 0.8926,
                "duels_lost": 4.3079,
                "aerial_won": 1.0,
                "aerial_lost": 0.9394,
                "interceptions": 0.3896,
                "tackles_won": 0.9753,
                "tackles": 1.9964,
                "clearances": 1.1013,
                "total_contest": 1.6857,
                "won_contest": 1.0018,
                "challenges_lost": 0.5246,
                "fouls": 1.3434,
                "fouls_drawn": 0.6865,
                "blocks": 0.1532,
                "big_chances_created": 0.0827,
                "big_chances_missed": 0.0149,
                "xgot": 0.0995,
                "ball_carries": 23.9271,
                "total_progression": 90.5714,
                "progressive_carries": 2.1953,
                "shots_off_target": 0.4578,
                "duel_xg_multiplier": 1.025,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.417,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Moi Gómez",
                "opponent_faced": "Moi Gómez",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8837,
                "fifa_overall": 77.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": 2964,
                "fifa_rank": 1585.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "key_pass": 0.9391,
                "expected_assists": 0.1019,
                "assist_rate": 0.067,
                "assists": 0,
                "expected_goals": 0.0602,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2425,
                "total_shots": 0.7017,
                "rating": 6.9836,
                "minutes": 85.53,
                "total_pass": 55.4428,
                "accurate_pass": 49.6121,
                "duels_won": 4.7549,
                "total_long_balls": 2.0081,
                "accurate_long_balls": 1.4119,
                "total_own_half_passes": 23.0346,
                "accurate_own_half_passes": 21.6339,
                "total_opp_half_passes": 32.408,
                "accurate_opp_half_passes": 27.9782,
                "crosses_total": 0.3981,
                "crosses_accurate": 0.126,
                "touches": 68.3768,
                "possession_lost": 9.5988,
                "dispossessed": 0.8926,
                "duels_lost": 4.3079,
                "aerial_won": 1.0,
                "aerial_lost": 0.9394,
                "interceptions": 0.3896,
                "tackles_won": 0.9753,
                "tackles": 1.9964,
                "clearances": 1.1013,
                "total_contest": 1.6857,
                "won_contest": 1.0018,
                "challenges_lost": 0.5246,
                "fouls": 1.3434,
                "fouls_drawn": 0.6865,
                "blocks": 0.1532,
                "big_chances_created": 0.0827,
                "big_chances_missed": 0.0149,
                "xgot": 0.0995,
                "ball_carries": 23.9271,
                "total_progression": 90.5714,
                "progressive_carries": 2.1953,
                "shots_off_target": 0.4578,
                "duel_xg_multiplier": 1.025,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.417,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Moi Gómez",
                "opponent_faced": "Moi Gómez",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0584,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.25,
                "creation_factor": 0.8837,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0584,
                "goal_rate": 0.082,
                "scorer_weight": 0.0752,
                "squad_weight_total": 1.5727,
                "weight_share": 0.0478,
                "finishing_factor": 1.25,
                "appearance_weight": 1.0,
                "weight_rank": 7,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.9391,
                "expected_assists": 0.1019,
                "assist_rate": 0.067,
                "assists": 0,
                "expected_goals": 0.0602,
                "goal_rate": 0.082,
                "goals": 0,
                "shots_on_target": 0.2425,
                "total_shots": 0.7017,
                "rating": 6.9836,
                "minutes": 85.53,
                "total_pass": 55.4428,
                "accurate_pass": 49.6121,
                "duels_won": 4.7549,
                "total_long_balls": 2.0081,
                "accurate_long_balls": 1.4119,
                "total_own_half_passes": 23.0346,
                "accurate_own_half_passes": 21.6339,
                "total_opp_half_passes": 32.408,
                "accurate_opp_half_passes": 27.9782,
                "crosses_total": 0.3981,
                "crosses_accurate": 0.126,
                "touches": 68.3768,
                "possession_lost": 9.5988,
                "dispossessed": 0.8926,
                "duels_lost": 4.3079,
                "aerial_won": 1.0,
                "aerial_lost": 0.9394,
                "interceptions": 0.3896,
                "tackles_won": 0.9753,
                "tackles": 1.9964,
                "clearances": 1.1013,
                "total_contest": 1.6857,
                "won_contest": 1.0018,
                "challenges_lost": 0.5246,
                "fouls": 1.3434,
                "fouls_drawn": 0.6865,
                "blocks": 0.1532,
                "big_chances_created": 0.0827,
                "big_chances_missed": 0.0149,
                "xgot": 0.0995,
                "ball_carries": 23.9271,
                "total_progression": 90.5714,
                "progressive_carries": 2.1953,
                "shots_off_target": 0.4578,
                "duel_xg_multiplier": 1.025,
                "dribbles_attempted": 2.0,
                "dribbles_successful": 0.7,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.417,
                "pressing_faced": "LOW",
                "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Moi Gómez",
                "opponent_faced": "Moi Gómez",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0584,
                "projected_assists": 0,
                "assist_probability": 0.0969,
                "finishing_factor": 1.25,
                "creation_factor": 0.8837,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0969,
                "assist_rate": 0.067,
                "provider_weight": 0.09,
                "squad_weight_total": 0.9036,
                "weight_share": 0.0997,
                "creation_factor": 0.8837,
                "appearance_weight": 1.0,
                "weight_rank": 3,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Jorge Salinas": {
          "player_id": 1861680,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 17,
          "height": 181,
          "market_value": 8500000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 2,
            "total_shots": 1,
            "rating": 6.7215,
            "minutes": 90,
            "total_pass": 43,
            "accurate_pass": 34,
            "duels_won": 8,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 23,
            "accurate_own_half_passes": 17,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 16,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 69,
            "possession_lost": 13.5376,
            "dispossessed": 0.2709,
            "duels_lost": 5,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 0,
            "ball_recovery": 6,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.1515,
            "assists": 0,
            "expected_goals": 0.0744,
            "expected_assists": 0.1767,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0491,
            "ball_carries": 14,
            "total_progression": 33,
            "progressive_carries": 1,
            "key_pass": 1,
            "shots_off_target": 0,
            "opponent_faced": "Rubén García",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0717,
            "projected_assists": 0,
            "assist_probability": 0.162,
            "finishing_factor": 0.8,
            "creation_factor": 1.0446,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1169,
                "expected_assists": 0.0144,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 51,
                "accurate_pass": 40,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 2,
                "aerial_won": 4,
                "duels_won": 8,
                "ball_recovery": 10
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0518,
                "expected_assists": 0.0129,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 67,
                "accurate_pass": 58,
                "tackles": 3,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 6,
                "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": 16416346,
              "match_date": "2026-09-16",
              "home_team": "FC Barcelona",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 8,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "interceptions": 1,
                "clearances": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.6717,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 27,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 3,
                "clearances": 4,
                "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": 16416321,
              "match_date": "2026-09-05",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0077,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 20,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 2,
                "clearances": 7,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416304,
              "match_date": "2026-08-28",
              "home_team": "Real Racing Club",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.2144,
                "expected_assists": 0.0116,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 22,
                "accurate_pass": 16,
                "tackles": 5,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416300,
              "match_date": "2026-08-23",
              "home_team": "Getafe",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.173,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 25,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1301,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 31,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 9,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4331,
            "combined_rank_score": 2343.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 4242.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7215,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jorge Salinas",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Roberto Piccoli",
                  "ranking": 4326
                },
                {
                  "player_name": "Thijs Dallinga",
                  "ranking": 4327
                },
                {
                  "player_name": "Abel Hernández",
                  "ranking": 4328
                },
                {
                  "player_name": "Enrico Delprato",
                  "ranking": 4329
                },
                {
                  "player_name": "Hans Nicolussi Caviglia",
                  "ranking": 4330
                }
              ],
              "lower": [
                {
                  "player_name": "Ivan Ilić",
                  "ranking": 4332
                },
                {
                  "player_name": "Emanuele Valeri",
                  "ranking": 4333
                },
                {
                  "player_name": "Devyne Rensch",
                  "ranking": 4334
                },
                {
                  "player_name": "Fabiano Parisi",
                  "ranking": 4335
                },
                {
                  "player_name": "Mandela Keita",
                  "ranking": 4336
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 8,
          "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": 8,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0,
            "fbref_prior_metrics": {
              "squad": "Racing Sant",
              "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.33,
              "shots_on_target_pct": 100.0,
              "prior_reliability": 0.2
            },
            "rationale": "XGBoost regressor (D_service) evaluated 8 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Racing Sant, 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.2391,
                "tackles": 2.332,
                "tackles_won": 1.3624,
                "clearances": 4.2768,
                "aerial_won": 1.8392,
                "total_shots": 0.5563,
                "rating": 6.7215,
                "minutes": 90.0,
                "total_pass": 42.5955,
                "accurate_pass": 33.6079,
                "duels_won": 7.6715,
                "total_long_balls": 3.024,
                "accurate_long_balls": 0.7804,
                "total_own_half_passes": 22.5689,
                "accurate_own_half_passes": 17.1405,
                "total_opp_half_passes": 20.0265,
                "accurate_opp_half_passes": 16.4673,
                "crosses_total": 1.3315,
                "crosses_accurate": 0.098,
                "touches": 68.8858,
                "possession_lost": 13.5376,
                "dispossessed": 0.2709,
                "duels_lost": 4.7696,
                "aerial_lost": 1.2473,
                "total_contest": 1.7041,
                "won_contest": 0.3407,
                "ball_recovery": 6.0829,
                "challenges_lost": 0.9143,
                "fouls": 0.9738,
                "fouls_drawn": 1.4307,
                "blocks": 0.319,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1595,
                "assist_rate": 0.1595,
                "expected_goals": 0.0602,
                "expected_assists": 0.1429,
                "shots_on_target": 0.3029,
                "big_chances_created": 0.1595,
                "xgot": 0.0397,
                "ball_carries": 13.5009,
                "total_progression": 32.9397,
                "progressive_carries": 0.642,
                "key_pass": 0.6231,
                "shots_off_target": 0.2534
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:05:00.533351+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2062,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1753,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "FC Barcelona",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.149,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1266,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1076,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0915,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0778,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0661,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 8.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.5491,
                  "aerialWon": 2.2411,
                  "totalClearance_p90": 5.076,
                  "totalTackle": 3.0248,
                  "defensive_actions": 4.5973
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.2390875816345215,
                    "model_output": 1.2391,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1028
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0836
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0364
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0203
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0175
                        }
                      ],
                      "others": 0.1176,
                      "total": 1.2391,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.112828
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.083187
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.034145
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.018565
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.015711
                        }
                      ],
                      "others_margin": 0.099747
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 2.331988573074341,
                    "model_output": 2.332,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2151
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.1612
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.1189
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.1181
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0488
                        }
                      ],
                      "others": 0.2784,
                      "total": 2.332,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.143717
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.095625
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.065075
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.060723
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.024073
                        }
                      ],
                      "others_margin": 0.127123
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.3624067306518555,
                    "model_output": 1.3624,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1355
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0964
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0914
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0639
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0495
                        }
                      ],
                      "others": 0.0715,
                      "total": 1.3624,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.147291
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.092952
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.080791
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.052816
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.03908
                        }
                      ],
                      "others_margin": 0.053952
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.2767744064331055,
                    "model_output": 4.2768,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.5103
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.2466
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.1966
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.1764
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.1488
                        }
                      ],
                      "others": 0.2158,
                      "total": 4.2768,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.138588
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.060675
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.045861
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.041059
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.035987
                        }
                      ],
                      "others_margin": 0.051765
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.8392276763916016,
                    "model_output": 1.8392,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.3554
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2164
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0746
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0586
                        },
                        {
                          "name": "duelWon",
                          "contribution": 0.0423
                        }
                      ],
                      "others": -0.1362,
                      "total": 1.8392,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.229533
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.117666
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.039053
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.030782
                        },
                        {
                          "name": "duelWon",
                          "margin": 0.021628
                        }
                      ],
                      "others_margin": -0.071345
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5563251376152039,
                    "model_output": 0.5563,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.063
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0343
                        },
                        {
                          "name": "duelWon",
                          "contribution": 0.0239
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0218
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0117
                        }
                      ],
                      "others": -0.0043,
                      "total": 0.5563,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.062953
                        },
                        {
                          "name": "rating",
                          "margin": -0.034263
                        },
                        {
                          "name": "duelWon",
                          "margin": 0.023867
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.021813
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.011662
                        }
                      ],
                      "others_margin": -0.004207
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.721466064453125,
                    "model_output": 6.7215,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": -0.0195
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.0171
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.014
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0136
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0113
                        }
                      ],
                      "others": -0.0383,
                      "total": 6.7215,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": -0.019492
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": -0.017091
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.013978
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.013559
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": 0.011328
                        }
                      ],
                      "others_margin": -0.038402
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 8,
                  "role_matches": 7,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0000, quality 0.505)",
              "stats": {
                "interceptions": 1.2391,
                "tackles": 2.332,
                "tackles_won": 1.3624,
                "clearances": 4.2768,
                "aerial_won": 1.8392,
                "total_shots": 0.5563,
                "rating": 6.7215,
                "minutes": 90.0,
                "total_pass": 42.5955,
                "accurate_pass": 33.6079,
                "duels_won": 7.6715,
                "total_long_balls": 3.024,
                "accurate_long_balls": 0.7804,
                "total_own_half_passes": 22.5689,
                "accurate_own_half_passes": 17.1405,
                "total_opp_half_passes": 20.0265,
                "accurate_opp_half_passes": 16.4673,
                "crosses_total": 1.3315,
                "crosses_accurate": 0.098,
                "touches": 68.8858,
                "possession_lost": 13.5376,
                "dispossessed": 0.2709,
                "duels_lost": 4.7696,
                "aerial_lost": 1.2473,
                "total_contest": 1.7041,
                "won_contest": 0.3407,
                "ball_recovery": 6.0829,
                "challenges_lost": 0.9143,
                "fouls": 0.9738,
                "fouls_drawn": 1.4307,
                "blocks": 0.319,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1595,
                "assist_rate": 0.1595,
                "expected_goals": 0.0602,
                "expected_assists": 0.1429,
                "shots_on_target": 0.3029,
                "big_chances_created": 0.1595,
                "xgot": 0.0397,
                "ball_carries": 13.5009,
                "total_progression": 32.9397,
                "progressive_carries": 0.642,
                "key_pass": 0.6231,
                "shots_off_target": 0.2534
              },
              "params": {
                "market_value_eur": 8500000,
                "quality_factor": 0.5047,
                "boost_factor": 1.0,
                "reference_quality": 0.505,
                "history_matches": 8,
                "history_shrink": 0.3846,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0500)",
              "stats": {
                "interceptions": 1.2271,
                "tackles": 2.332,
                "tackles_won": 1.3609,
                "clearances": 4.2768,
                "aerial_won": 1.8392,
                "total_shots": 0.545,
                "rating": 6.7215,
                "minutes": 90.0,
                "total_pass": 42.5955,
                "accurate_pass": 33.6079,
                "duels_won": 7.6715,
                "total_long_balls": 3.024,
                "accurate_long_balls": 0.7804,
                "total_own_half_passes": 22.5689,
                "accurate_own_half_passes": 17.1405,
                "total_opp_half_passes": 20.0265,
                "accurate_opp_half_passes": 16.4673,
                "crosses_total": 1.3483,
                "crosses_accurate": 0.098,
                "touches": 68.8858,
                "possession_lost": 13.5376,
                "dispossessed": 0.2709,
                "duels_lost": 4.7696,
                "aerial_lost": 1.2473,
                "total_contest": 1.7041,
                "won_contest": 0.3407,
                "ball_recovery": 6.0829,
                "challenges_lost": 0.9143,
                "fouls": 0.9584,
                "fouls_drawn": 1.4092,
                "blocks": 0.319,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1515,
                "assist_rate": 0.1515,
                "expected_goals": 0.0602,
                "expected_assists": 0.1429,
                "shots_on_target": 0.3043,
                "big_chances_created": 0.1595,
                "xgot": 0.0397,
                "ball_carries": 13.5009,
                "total_progression": 32.9397,
                "progressive_carries": 0.642,
                "key_pass": 0.6231,
                "shots_off_target": 0.2534
              },
              "params": {
                "blend_weight": 0.05,
                "history_matches": 8,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 1.0,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Racing Sant"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 1.4307,
                  "after": 1.4092
                },
                {
                  "stat": "totalCross",
                  "before": 1.3315,
                  "after": 1.3483
                },
                {
                  "stat": "fouls",
                  "before": 0.9738,
                  "after": 0.9584
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.2391,
                  "after": 1.2271
                },
                {
                  "stat": "totalShots",
                  "before": 0.5563,
                  "after": 0.545
                },
                {
                  "stat": "goalAssist",
                  "before": 0.1595,
                  "after": 0.1515
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.2271,
                "tackles": 2.332,
                "tackles_won": 1.3609,
                "clearances": 4.2768,
                "aerial_won": 1.8392,
                "total_shots": 0.5577,
                "rating": 6.7215,
                "minutes": 90.0,
                "total_pass": 42.5955,
                "accurate_pass": 33.6079,
                "duels_won": 7.6715,
                "total_long_balls": 3.024,
                "accurate_long_balls": 0.7804,
                "total_own_half_passes": 22.5689,
                "accurate_own_half_passes": 17.1405,
                "total_opp_half_passes": 20.0265,
                "accurate_opp_half_passes": 16.4673,
                "crosses_total": 1.3483,
                "crosses_accurate": 0.098,
                "touches": 68.8858,
                "possession_lost": 13.5376,
                "dispossessed": 0.2709,
                "duels_lost": 4.7696,
                "aerial_lost": 1.2473,
                "total_contest": 1.7041,
                "won_contest": 0.3407,
                "ball_recovery": 6.0829,
                "challenges_lost": 0.9143,
                "fouls": 0.9584,
                "fouls_drawn": 1.4092,
                "blocks": 0.319,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1515,
                "assist_rate": 0.1515,
                "expected_goals": 0.0602,
                "expected_assists": 0.1429,
                "shots_on_target": 0.3043,
                "big_chances_created": 0.1595,
                "xgot": 0.0397,
                "ball_carries": 13.5009,
                "total_progression": 32.9397,
                "progressive_carries": 0.642,
                "key_pass": 0.6231,
                "shots_off_target": 0.2534
              },
              "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.2271,
                "tackles": 2.332,
                "tackles_won": 1.3609,
                "clearances": 4.2768,
                "aerial_won": 1.8392,
                "total_shots": 0.5577,
                "rating": 6.7215,
                "minutes": 90.0,
                "total_pass": 42.5955,
                "accurate_pass": 33.6079,
                "duels_won": 7.6715,
                "total_long_balls": 3.024,
                "accurate_long_balls": 0.7804,
                "total_own_half_passes": 22.5689,
                "accurate_own_half_passes": 17.1405,
                "total_opp_half_passes": 20.0265,
                "accurate_opp_half_passes": 16.4673,
                "crosses_total": 1.3483,
                "crosses_accurate": 0.098,
                "touches": 68.8858,
                "possession_lost": 13.5376,
                "dispossessed": 0.2709,
                "duels_lost": 4.7696,
                "aerial_lost": 1.2473,
                "total_contest": 1.7041,
                "won_contest": 0.3407,
                "ball_recovery": 6.0829,
                "challenges_lost": 0.9143,
                "fouls": 0.9584,
                "fouls_drawn": 1.4092,
                "blocks": 0.319,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.1515,
                "assist_rate": 0.1515,
                "expected_goals": 0.0602,
                "expected_assists": 0.1429,
                "shots_on_target": 0.3043,
                "big_chances_created": 0.1595,
                "xgot": 0.0397,
                "ball_carries": 13.5009,
                "total_progression": 32.9397,
                "progressive_carries": 0.642,
                "key_pass": 0.6231,
                "shots_off_target": 0.2534,
                "opponent_faced": "Rubén García",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Rubén García",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.2271,
                "tackles": 2.332,
                "tackles_won": 1.3609,
                "clearances": 4.2768,
                "aerial_won": 1.8392,
                "total_shots": 0.5577,
                "rating": 6.7215,
                "minutes": 90.0,
                "total_pass": 42.5955,
                "accurate_pass": 33.6079,
                "duels_won": 7.6715,
                "total_long_balls": 3.024,
                "accurate_long_balls": 0.7804,
                "total_own_half_passes": 22.5689,
                "accurate_own_half_passes": 17.1405,
                "total_opp_half_passes": 20.0265,
                "accurate_opp_half_passes": 16.4673,
                "crosses_total": 1.3483,
                "crosses_accurate": 0.098,
                "touches": 68.8858,
                "possession_lost": 13.5376,
                "dispossessed": 0.2709,
                "duels_lost": 4.7696,
                "aerial_lost": 1.2473,
                "total_contest": 1.7041,
                "won_contest": 0.3407,
                "ball_recovery": 6.0829,
                "challenges_lost": 0.9143,
                "fouls": 0.9584,
                "fouls_drawn": 1.4092,
                "blocks": 0.319,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1515,
                "assists": 0,
                "expected_goals": 0.0602,
                "expected_assists": 0.1429,
                "shots_on_target": 0.3043,
                "big_chances_created": 0.1595,
                "xgot": 0.0397,
                "ball_carries": 13.5009,
                "total_progression": 32.9397,
                "progressive_carries": 0.642,
                "key_pass": 0.6231,
                "shots_off_target": 0.2534,
                "opponent_faced": "Rubén García",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "scoreline_reset": true,
                "team_goals": 1
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "interceptions": 1.2271,
                "tackles": 2.332,
                "tackles_won": 1.3609,
                "clearances": 4.2768,
                "aerial_won": 1.8392,
                "total_shots": 0.5577,
                "rating": 6.7215,
                "minutes": 90.0,
                "total_pass": 42.5955,
                "accurate_pass": 33.6079,
                "duels_won": 7.6715,
                "total_long_balls": 3.024,
                "accurate_long_balls": 0.7804,
                "total_own_half_passes": 22.5689,
                "accurate_own_half_passes": 17.1405,
                "total_opp_half_passes": 20.0265,
                "accurate_opp_half_passes": 16.4673,
                "crosses_total": 1.3483,
                "crosses_accurate": 0.098,
                "touches": 68.8858,
                "possession_lost": 13.5376,
                "dispossessed": 0.2709,
                "duels_lost": 4.7696,
                "aerial_lost": 1.2473,
                "total_contest": 1.7041,
                "won_contest": 0.3407,
                "ball_recovery": 6.0829,
                "challenges_lost": 0.9143,
                "fouls": 0.9584,
                "fouls_drawn": 1.4092,
                "blocks": 0.319,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1515,
                "assists": 0,
                "expected_goals": 0.0744,
                "expected_assists": 0.1767,
                "shots_on_target": 0.3043,
                "big_chances_created": 0.1595,
                "xgot": 0.0491,
                "ball_carries": 13.5009,
                "total_progression": 32.9397,
                "progressive_carries": 0.642,
                "key_pass": 0.6231,
                "shots_off_target": 0.2534,
                "opponent_faced": "Rubén García",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.0446
              },
              "params": {
                "team_lambda": 1.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0602,
                  "after": 0.0744
                },
                {
                  "stat": "expected_assists",
                  "before": 0.1429,
                  "after": 0.1767
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 72.0)",
              "stats": {
                "interceptions": 1.2271,
                "tackles": 2.332,
                "tackles_won": 1.3609,
                "clearances": 4.2768,
                "aerial_won": 1.8392,
                "total_shots": 0.5577,
                "rating": 6.7215,
                "minutes": 90.0,
                "total_pass": 42.5955,
                "accurate_pass": 33.6079,
                "duels_won": 7.6715,
                "total_long_balls": 3.024,
                "accurate_long_balls": 0.7804,
                "total_own_half_passes": 22.5689,
                "accurate_own_half_passes": 17.1405,
                "total_opp_half_passes": 20.0265,
                "accurate_opp_half_passes": 16.4673,
                "crosses_total": 1.3483,
                "crosses_accurate": 0.098,
                "touches": 68.8858,
                "possession_lost": 13.5376,
                "dispossessed": 0.2709,
                "duels_lost": 4.7696,
                "aerial_lost": 1.2473,
                "total_contest": 1.7041,
                "won_contest": 0.3407,
                "ball_recovery": 6.0829,
                "challenges_lost": 0.9143,
                "fouls": 0.9584,
                "fouls_drawn": 1.4092,
                "blocks": 0.319,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1515,
                "assists": 0,
                "expected_goals": 0.0744,
                "expected_assists": 0.1767,
                "shots_on_target": 0.3043,
                "big_chances_created": 0.1595,
                "xgot": 0.0491,
                "ball_carries": 13.5009,
                "total_progression": 32.9397,
                "progressive_carries": 0.642,
                "key_pass": 0.6231,
                "shots_off_target": 0.2534,
                "opponent_faced": "Rubén García",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.0446,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 12,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4331,
                "fifa_rank": 4242.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.2271,
                "tackles": 2.332,
                "tackles_won": 1.3609,
                "clearances": 4.2768,
                "aerial_won": 1.8392,
                "total_shots": 0.5577,
                "rating": 6.7215,
                "minutes": 90.0,
                "total_pass": 42.5955,
                "accurate_pass": 33.6079,
                "duels_won": 7.6715,
                "total_long_balls": 3.024,
                "accurate_long_balls": 0.7804,
                "total_own_half_passes": 22.5689,
                "accurate_own_half_passes": 17.1405,
                "total_opp_half_passes": 20.0265,
                "accurate_opp_half_passes": 16.4673,
                "crosses_total": 1.3483,
                "crosses_accurate": 0.098,
                "touches": 68.8858,
                "possession_lost": 13.5376,
                "dispossessed": 0.2709,
                "duels_lost": 4.7696,
                "aerial_lost": 1.2473,
                "total_contest": 1.7041,
                "won_contest": 0.3407,
                "ball_recovery": 6.0829,
                "challenges_lost": 0.9143,
                "fouls": 0.9584,
                "fouls_drawn": 1.4092,
                "blocks": 0.319,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1515,
                "assists": 0,
                "expected_goals": 0.0744,
                "expected_assists": 0.1767,
                "shots_on_target": 0.3043,
                "big_chances_created": 0.1595,
                "xgot": 0.0491,
                "ball_carries": 13.5009,
                "total_progression": 32.9397,
                "progressive_carries": 0.642,
                "key_pass": 0.6231,
                "shots_off_target": 0.2534,
                "opponent_faced": "Rubén García",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0717,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 1.0446,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0717,
                "goal_rate": 0.0,
                "scorer_weight": 0.0595,
                "squad_weight_total": 1.5727,
                "weight_share": 0.0378,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 8,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.2271,
                "tackles": 2.332,
                "tackles_won": 1.3609,
                "clearances": 4.2768,
                "aerial_won": 1.8392,
                "total_shots": 0.5577,
                "rating": 6.7215,
                "minutes": 90.0,
                "total_pass": 42.5955,
                "accurate_pass": 33.6079,
                "duels_won": 7.6715,
                "total_long_balls": 3.024,
                "accurate_long_balls": 0.7804,
                "total_own_half_passes": 22.5689,
                "accurate_own_half_passes": 17.1405,
                "total_opp_half_passes": 20.0265,
                "accurate_opp_half_passes": 16.4673,
                "crosses_total": 1.3483,
                "crosses_accurate": 0.098,
                "touches": 68.8858,
                "possession_lost": 13.5376,
                "dispossessed": 0.2709,
                "duels_lost": 4.7696,
                "aerial_lost": 1.2473,
                "total_contest": 1.7041,
                "won_contest": 0.3407,
                "ball_recovery": 6.0829,
                "challenges_lost": 0.9143,
                "fouls": 0.9584,
                "fouls_drawn": 1.4092,
                "blocks": 0.319,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.1515,
                "assists": 0,
                "expected_goals": 0.0744,
                "expected_assists": 0.1767,
                "shots_on_target": 0.3043,
                "big_chances_created": 0.1595,
                "xgot": 0.0491,
                "ball_carries": 13.5009,
                "total_progression": 32.9397,
                "progressive_carries": 0.642,
                "key_pass": 0.6231,
                "shots_off_target": 0.2534,
                "opponent_faced": "Rubén García",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0717,
                "projected_assists": 0,
                "assist_probability": 0.162,
                "finishing_factor": 0.8,
                "creation_factor": 1.0446,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.162,
                "assist_rate": 0.1515,
                "provider_weight": 0.1846,
                "squad_weight_total": 0.9036,
                "weight_share": 0.2043,
                "creation_factor": 1.0446,
                "appearance_weight": 1.0,
                "weight_rank": 2,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Jeanuël Belocian": {
          "player_id": 1173172,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 24,
          "height": 186,
          "market_value": 12900000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 2,
            "total_shots": 1,
            "rating": 6.7399,
            "minutes": 90,
            "total_pass": 58,
            "accurate_pass": 55,
            "duels_won": 3,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 39,
            "accurate_own_half_passes": 36,
            "total_opp_half_passes": 19,
            "accurate_opp_half_passes": 18,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 71,
            "possession_lost": 5.7834,
            "dispossessed": 0.0,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0472,
            "expected_assists": 0.0147,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0295,
            "ball_carries": 25,
            "total_progression": 108,
            "progressive_carries": 2,
            "key_pass": 0,
            "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.5,
            "defensive_success_rate": 0.813,
            "opponent_faced": "Ante Budimir",
            "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.0461,
            "projected_assists": 0,
            "assist_probability": 0.0146,
            "finishing_factor": 0.8,
            "creation_factor": 0.8078,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0819,
                "expected_assists": 0.0167,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 54,
                "accurate_pass": 54,
                "interceptions": 1,
                "aerial_won": 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": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 5.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0143,
                "total_shots": 0,
                "total_pass": 64,
                "accurate_pass": 60,
                "interceptions": 2,
                "clearances": 2,
                "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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0216,
                "expected_assists": 0.0021,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 54,
                "accurate_pass": 48,
                "interceptions": 2,
                "clearances": 12,
                "aerial_won": 5,
                "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": 16416321,
              "match_date": "2026-09-05",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 35,
                "rating": 7.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0877,
                "expected_assists": 0.0245,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 16,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4828,
            "combined_rank_score": 2910.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 941.0,
            "sofascore_rating": 6.45,
            "sofascore_appearances": 2.0,
            "fifa_rank": 4880.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7399,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jeanuël Belocian",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Copete",
                  "ranking": 4823
                },
                {
                  "player_name": "Dubasin",
                  "ranking": 4824
                },
                {
                  "player_name": "Ruairi McConville",
                  "ranking": 4825
                },
                {
                  "player_name": "Lorenzo Bernasconi",
                  "ranking": 4826
                },
                {
                  "player_name": "Peque",
                  "ranking": 4827
                }
              ],
              "lower": [
                {
                  "player_name": "Max Alleyne",
                  "ranking": 4829
                },
                {
                  "player_name": "Herrando",
                  "ranking": 4830
                },
                {
                  "player_name": "Nectarios Triantis",
                  "ranking": 4831
                },
                {
                  "player_name": "Andy Polo",
                  "ranking": 4832
                },
                {
                  "player_name": "Daniel Bentley",
                  "ranking": 4833
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.5,
          "history_matches": 4,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 4,
            "data_confidence": 0.5,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0085,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 4 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.0892,
                "tackles": 0.9854,
                "tackles_won": 0.6692,
                "clearances": 4.2044,
                "aerial_won": 2.1242,
                "total_shots": 0.5118,
                "rating": 6.7399,
                "minutes": 90.0,
                "total_pass": 57.3042,
                "accurate_pass": 54.2974,
                "duels_won": 2.5121,
                "total_long_balls": 1.9417,
                "accurate_long_balls": 1.0,
                "total_own_half_passes": 38.4237,
                "accurate_own_half_passes": 35.9786,
                "total_opp_half_passes": 18.8805,
                "accurate_opp_half_passes": 18.3188,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 70.1127,
                "possession_lost": 5.7347,
                "dispossessed": 0.0,
                "duels_lost": 2.3887,
                "aerial_lost": 0.5617,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 4.1574,
                "challenges_lost": 0.3887,
                "fouls": 1.7687,
                "fouls_drawn": 0.7191,
                "blocks": 1.1079,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0379,
                "expected_assists": 0.0118,
                "shots_on_target": 0.3887,
                "big_chances_created": 0.0,
                "xgot": 0.0237,
                "ball_carries": 24.9281,
                "total_progression": 107.0793,
                "progressive_carries": 1.9436,
                "key_pass": 0.0,
                "shots_off_target": 0.1231
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:05:00.533351+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3138,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2667,
                    "rating": 5.7
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2267,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Rayo Vallecano",
                    "minutes": 35.0,
                    "is_starting": false,
                    "weight": 0.1927,
                    "rating": 7.2
                  }
                ],
                "feature_row": {
                  "history_matches": 4.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 4.2178,
                  "aerialWon": 2.5321,
                  "totalClearance_p90": 5.732,
                  "totalTackle": 0.1927,
                  "defensive_actions": 1.4935
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.0891681909561157,
                    "model_output": 1.0892,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1027
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0856
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0307
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0209
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.019
                        }
                      ],
                      "others": 0.0308,
                      "total": 1.0892,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.112708
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.085149
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.029734
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.020299
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.0181
                        }
                      ],
                      "others_margin": 0.028699
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.9854279160499573,
                    "model_output": 0.9854,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.1626
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1306
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.1126
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0577
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0547
                        }
                      ],
                      "others": -0.1491,
                      "total": 0.9854,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.124265
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.100969
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.08642
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.047369
                        },
                        {
                          "name": "ballCarriesCount",
                          "margin": -0.047079
                        }
                      ],
                      "others_margin": -0.140902
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.6692212224006653,
                    "model_output": 0.6692,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.0941
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0802
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0598
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": 0.034
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0311
                        }
                      ],
                      "others": -0.1142,
                      "total": 0.6692,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.116786
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.100303
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.073774
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": 0.042693
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.038889
                        }
                      ],
                      "others_margin": -0.157558
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.204442501068115,
                    "model_output": 4.2044,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.4092
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4048
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.4097
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.2269
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2076
                        }
                      ],
                      "others": -0.0681,
                      "total": 4.2044,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "totalLongBalls",
                          "margin": -0.126945
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.125664
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.112887
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.057433
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.049815
                        }
                      ],
                      "others_margin": -0.016069
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 2.124192476272583,
                    "model_output": 2.1242,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.4495
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1986
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1427
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.1262
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.1014
                        }
                      ],
                      "others": 0.1837,
                      "total": 2.1242,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "aerialWon",
                          "margin": 0.282454
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.103195
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.06809
                        },
                        {
                          "name": "aerialLost",
                          "margin": -0.059959
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.050937
                        }
                      ],
                      "others_margin": 0.090414
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5117505788803101,
                    "model_output": 0.5118,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0501
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0334
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0284
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0202
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0184
                        }
                      ],
                      "others": -0.0196,
                      "total": 0.5118,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.050112
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": 0.033434
                        },
                        {
                          "name": "rating",
                          "margin": -0.028424
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.020239
                        },
                        {
                          "name": "totalProgression",
                          "margin": -0.018382
                        }
                      ],
                      "others_margin": -0.019729
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.739926815032959,
                    "model_output": 6.7399,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "accuratePass",
                          "contribution": 0.0259
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": -0.0211
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0164
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0157
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0146
                        }
                      ],
                      "others": -0.0029,
                      "total": 6.7399,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "accuratePass",
                          "margin": 0.025878
                        },
                        {
                          "name": "tackle_success_rate",
                          "margin": -0.021074
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.016443
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.015683
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.014563
                        }
                      ],
                      "others_margin": -0.00289
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 4,
                  "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.0085, quality 0.556)",
              "stats": {
                "interceptions": 1.0984,
                "tackles": 0.9938,
                "tackles_won": 0.6749,
                "clearances": 4.2402,
                "aerial_won": 2.1422,
                "total_shots": 0.5162,
                "rating": 6.7399,
                "minutes": 90.0,
                "total_pass": 57.7913,
                "accurate_pass": 54.7589,
                "duels_won": 2.5335,
                "total_long_balls": 1.9582,
                "accurate_long_balls": 1.0085,
                "total_own_half_passes": 38.7503,
                "accurate_own_half_passes": 36.2844,
                "total_opp_half_passes": 19.041,
                "accurate_opp_half_passes": 18.4745,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 70.7087,
                "possession_lost": 5.7834,
                "dispossessed": 0.0,
                "duels_lost": 2.409,
                "aerial_lost": 0.5665,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 4.1927,
                "challenges_lost": 0.392,
                "fouls": 1.7837,
                "fouls_drawn": 0.7252,
                "blocks": 1.1173,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0382,
                "expected_assists": 0.0119,
                "shots_on_target": 0.392,
                "big_chances_created": 0.0,
                "xgot": 0.0239,
                "ball_carries": 25.14,
                "total_progression": 107.9895,
                "progressive_carries": 1.9601,
                "key_pass": 0.0,
                "shots_off_target": 0.1241
              },
              "params": {
                "market_value_eur": 12900000,
                "quality_factor": 0.5559,
                "boost_factor": 1.0085,
                "reference_quality": 0.505,
                "history_matches": 4,
                "history_shrink": 0.5556,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.0984,
                "tackles": 0.9938,
                "tackles_won": 0.6749,
                "clearances": 4.2402,
                "aerial_won": 2.1422,
                "total_shots": 0.5162,
                "rating": 6.7399,
                "minutes": 90.0,
                "total_pass": 57.7913,
                "accurate_pass": 54.7589,
                "duels_won": 2.5335,
                "total_long_balls": 1.9582,
                "accurate_long_balls": 1.0085,
                "total_own_half_passes": 38.7503,
                "accurate_own_half_passes": 36.2844,
                "total_opp_half_passes": 19.041,
                "accurate_opp_half_passes": 18.4745,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 70.7087,
                "possession_lost": 5.7834,
                "dispossessed": 0.0,
                "duels_lost": 2.409,
                "aerial_lost": 0.5665,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 4.1927,
                "challenges_lost": 0.392,
                "fouls": 1.7837,
                "fouls_drawn": 0.7252,
                "blocks": 1.1173,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0382,
                "expected_assists": 0.0119,
                "shots_on_target": 0.392,
                "big_chances_created": 0.0,
                "xgot": 0.0239,
                "ball_carries": 25.14,
                "total_progression": 107.9895,
                "progressive_carries": 1.9601,
                "key_pass": 0.0,
                "shots_off_target": 0.1241
              },
              "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.0984,
                "tackles": 0.9938,
                "tackles_won": 0.6749,
                "clearances": 4.2402,
                "aerial_won": 2.1422,
                "total_shots": 0.5162,
                "rating": 6.7399,
                "minutes": 90.0,
                "total_pass": 57.7913,
                "accurate_pass": 54.7589,
                "duels_won": 2.5335,
                "total_long_balls": 1.9582,
                "accurate_long_balls": 1.0085,
                "total_own_half_passes": 38.7503,
                "accurate_own_half_passes": 36.2844,
                "total_opp_half_passes": 19.041,
                "accurate_opp_half_passes": 18.4745,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 70.7087,
                "possession_lost": 5.7834,
                "dispossessed": 0.0,
                "duels_lost": 2.409,
                "aerial_lost": 0.5665,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 4.1927,
                "challenges_lost": 0.392,
                "fouls": 1.7837,
                "fouls_drawn": 0.7252,
                "blocks": 1.1173,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0382,
                "expected_assists": 0.0119,
                "shots_on_target": 0.392,
                "big_chances_created": 0.0,
                "xgot": 0.0239,
                "ball_carries": 25.14,
                "total_progression": 107.9895,
                "progressive_carries": 1.9601,
                "key_pass": 0.0,
                "shots_off_target": 0.1241,
                "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.5,
                "defensive_success_rate": 0.813,
                "opponent_faced": "Ante Budimir",
                "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": "Ante Budimir",
                  "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.0984,
                "tackles": 0.9938,
                "tackles_won": 0.6749,
                "clearances": 4.2402,
                "aerial_won": 2.1422,
                "total_shots": 0.5162,
                "rating": 6.7399,
                "minutes": 90.0,
                "total_pass": 57.7913,
                "accurate_pass": 54.7589,
                "duels_won": 2.5335,
                "total_long_balls": 1.9582,
                "accurate_long_balls": 1.0085,
                "total_own_half_passes": 38.7503,
                "accurate_own_half_passes": 36.2844,
                "total_opp_half_passes": 19.041,
                "accurate_opp_half_passes": 18.4745,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 70.7087,
                "possession_lost": 5.7834,
                "dispossessed": 0.0,
                "duels_lost": 2.409,
                "aerial_lost": 0.5665,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 4.1927,
                "challenges_lost": 0.392,
                "fouls": 1.7837,
                "fouls_drawn": 0.7252,
                "blocks": 1.1173,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0382,
                "expected_assists": 0.0119,
                "shots_on_target": 0.392,
                "big_chances_created": 0.0,
                "xgot": 0.0239,
                "ball_carries": 25.14,
                "total_progression": 107.9895,
                "progressive_carries": 1.9601,
                "key_pass": 0.0,
                "shots_off_target": 0.1241,
                "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.5,
                "defensive_success_rate": 0.813,
                "opponent_faced": "Ante Budimir",
                "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.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "interceptions": 1.0984,
                "tackles": 0.9938,
                "tackles_won": 0.6749,
                "clearances": 4.2402,
                "aerial_won": 2.1422,
                "total_shots": 0.5162,
                "rating": 6.7399,
                "minutes": 90.0,
                "total_pass": 57.7913,
                "accurate_pass": 54.7589,
                "duels_won": 2.5335,
                "total_long_balls": 1.9582,
                "accurate_long_balls": 1.0085,
                "total_own_half_passes": 38.7503,
                "accurate_own_half_passes": 36.2844,
                "total_opp_half_passes": 19.041,
                "accurate_opp_half_passes": 18.4745,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 70.7087,
                "possession_lost": 5.7834,
                "dispossessed": 0.0,
                "duels_lost": 2.409,
                "aerial_lost": 0.5665,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 4.1927,
                "challenges_lost": 0.392,
                "fouls": 1.7837,
                "fouls_drawn": 0.7252,
                "blocks": 1.1173,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0472,
                "expected_assists": 0.0147,
                "shots_on_target": 0.392,
                "big_chances_created": 0.0,
                "xgot": 0.0295,
                "ball_carries": 25.14,
                "total_progression": 107.9895,
                "progressive_carries": 1.9601,
                "key_pass": 0.0,
                "shots_off_target": 0.1241,
                "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.5,
                "defensive_success_rate": 0.813,
                "opponent_faced": "Ante Budimir",
                "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.8078
              },
              "params": {
                "team_lambda": 1.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0382,
                  "after": 0.0472
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 10 by projected rating, fifa_overall 71.0)",
              "stats": {
                "interceptions": 1.0984,
                "tackles": 0.9938,
                "tackles_won": 0.6749,
                "clearances": 4.2402,
                "aerial_won": 2.1422,
                "total_shots": 0.5162,
                "rating": 6.7399,
                "minutes": 90.0,
                "total_pass": 57.7913,
                "accurate_pass": 54.7589,
                "duels_won": 2.5335,
                "total_long_balls": 1.9582,
                "accurate_long_balls": 1.0085,
                "total_own_half_passes": 38.7503,
                "accurate_own_half_passes": 36.2844,
                "total_opp_half_passes": 19.041,
                "accurate_opp_half_passes": 18.4745,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 70.7087,
                "possession_lost": 5.7834,
                "dispossessed": 0.0,
                "duels_lost": 2.409,
                "aerial_lost": 0.5665,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 4.1927,
                "challenges_lost": 0.392,
                "fouls": 1.7837,
                "fouls_drawn": 0.7252,
                "blocks": 1.1173,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0472,
                "expected_assists": 0.0147,
                "shots_on_target": 0.392,
                "big_chances_created": 0.0,
                "xgot": 0.0295,
                "ball_carries": 25.14,
                "total_progression": 107.9895,
                "progressive_carries": 1.9601,
                "key_pass": 0.0,
                "shots_off_target": 0.1241,
                "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.5,
                "defensive_success_rate": 0.813,
                "opponent_faced": "Ante Budimir",
                "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.8078,
                "fifa_overall": 71.0
              },
              "params": {
                "match_squad_rank": 10,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4828,
                "fifa_rank": 4880.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": {
                "interceptions": 1.0984,
                "tackles": 0.9938,
                "tackles_won": 0.6749,
                "clearances": 4.2402,
                "aerial_won": 2.1422,
                "total_shots": 0.5162,
                "rating": 6.7399,
                "minutes": 90.0,
                "total_pass": 57.7913,
                "accurate_pass": 54.7589,
                "duels_won": 2.5335,
                "total_long_balls": 1.9582,
                "accurate_long_balls": 1.0085,
                "total_own_half_passes": 38.7503,
                "accurate_own_half_passes": 36.2844,
                "total_opp_half_passes": 19.041,
                "accurate_opp_half_passes": 18.4745,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 70.7087,
                "possession_lost": 5.7834,
                "dispossessed": 0.0,
                "duels_lost": 2.409,
                "aerial_lost": 0.5665,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 4.1927,
                "challenges_lost": 0.392,
                "fouls": 1.7837,
                "fouls_drawn": 0.7252,
                "blocks": 1.1173,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0472,
                "expected_assists": 0.0147,
                "shots_on_target": 0.392,
                "big_chances_created": 0.0,
                "xgot": 0.0295,
                "ball_carries": 25.14,
                "total_progression": 107.9895,
                "progressive_carries": 1.9601,
                "key_pass": 0.0,
                "shots_off_target": 0.1241,
                "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.5,
                "defensive_success_rate": 0.813,
                "opponent_faced": "Ante Budimir",
                "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.0461,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8078,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0461,
                "goal_rate": 0.0,
                "scorer_weight": 0.0378,
                "squad_weight_total": 1.5727,
                "weight_share": 0.024,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.0984,
                "tackles": 0.9938,
                "tackles_won": 0.6749,
                "clearances": 4.2402,
                "aerial_won": 2.1422,
                "total_shots": 0.5162,
                "rating": 6.7399,
                "minutes": 90.0,
                "total_pass": 57.7913,
                "accurate_pass": 54.7589,
                "duels_won": 2.5335,
                "total_long_balls": 1.9582,
                "accurate_long_balls": 1.0085,
                "total_own_half_passes": 38.7503,
                "accurate_own_half_passes": 36.2844,
                "total_opp_half_passes": 19.041,
                "accurate_opp_half_passes": 18.4745,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 70.7087,
                "possession_lost": 5.7834,
                "dispossessed": 0.0,
                "duels_lost": 2.409,
                "aerial_lost": 0.5665,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 4.1927,
                "challenges_lost": 0.392,
                "fouls": 1.7837,
                "fouls_drawn": 0.7252,
                "blocks": 1.1173,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0472,
                "expected_assists": 0.0147,
                "shots_on_target": 0.392,
                "big_chances_created": 0.0,
                "xgot": 0.0295,
                "ball_carries": 25.14,
                "total_progression": 107.9895,
                "progressive_carries": 1.9601,
                "key_pass": 0.0,
                "shots_off_target": 0.1241,
                "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.5,
                "defensive_success_rate": 0.813,
                "opponent_faced": "Ante Budimir",
                "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.0461,
                "projected_assists": 0,
                "assist_probability": 0.0146,
                "finishing_factor": 0.8,
                "creation_factor": 0.8078,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0146,
                "assist_rate": 0.0,
                "provider_weight": 0.0119,
                "squad_weight_total": 0.9036,
                "weight_share": 0.0131,
                "creation_factor": 0.8078,
                "appearance_weight": 1.0,
                "weight_rank": 10,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Pablo Ramón": {
          "player_id": 962381,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 5,
          "height": 186,
          "market_value": 1500000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 1,
            "total_shots": 1,
            "rating": 6.7764,
            "minutes": 83,
            "total_pass": 52,
            "accurate_pass": 46,
            "duels_won": 6,
            "total_long_balls": 4,
            "accurate_long_balls": 1,
            "total_own_half_passes": 32,
            "accurate_own_half_passes": 31,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 16,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 66,
            "possession_lost": 6.6831,
            "dispossessed": 0.7142,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 5,
            "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.0082,
            "expected_assists": 0.0106,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0091,
            "ball_carries": 22,
            "total_progression": 81,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.9,
            "tackles_won_in_zone": 1.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 1.2,
            "defensive_success_rate": 0.58,
            "opponent_faced": "Rubén García",
            "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.0082,
            "projected_assists": 0,
            "assist_probability": 0.0105,
            "finishing_factor": 0.8834,
            "creation_factor": 0.8532,
            "fifa_overall": 69.0
          },
          "latest_10_games": [
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Valencia",
              "stats": {
                "minutes": 61,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0027,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 33,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0294,
                "expected_assists": 0.0201,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 72,
                "accurate_pass": 67,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0022,
                "total_shots": 0,
                "total_pass": 53,
                "accurate_pass": 42,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 10,
                "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": 16416321,
              "match_date": "2026-09-05",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 35,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0074,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 23,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416300,
              "match_date": "2026-08-23",
              "home_team": "Getafe",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0062,
                "total_shots": 0,
                "total_pass": 69,
                "accurate_pass": 63,
                "tackles": 5,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 13,
                "aerial_won": 5,
                "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": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 77,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0138,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 28,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 7,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 5500,
            "combined_rank_score": 3679.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 391.0,
            "sofascore_rating": 6.95,
            "sofascore_appearances": 2.0,
            "fifa_rank": 6968.0,
            "fifa_overall": 69.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7764,
            "source_file": "data/player_rankings.csv",
            "player_name": "Pablo Ramón",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Abdulelah Al Amri",
                  "ranking": 5495
                },
                {
                  "player_name": "Sofiane Bendebka",
                  "ranking": 5496
                },
                {
                  "player_name": "Ramiro Enrique",
                  "ranking": 5497
                },
                {
                  "player_name": "Amir Sâyoud",
                  "ranking": 5498
                },
                {
                  "player_name": "Luciano Rodríguez",
                  "ranking": 5499
                }
              ],
              "lower": [
                {
                  "player_name": "Paul Smyth",
                  "ranking": 5501
                },
                {
                  "player_name": "Marcos Rojo",
                  "ranking": 5502
                },
                {
                  "player_name": "Theo Bair",
                  "ranking": 5503
                },
                {
                  "player_name": "Lisandro Magallán",
                  "ranking": 5504
                },
                {
                  "player_name": "Jaouen Hadjam",
                  "ranking": 5505
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.643,
          "history_matches": 6,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 6,
            "data_confidence": 0.643,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9908,
            "fbref_prior_metrics": {
              "squad": "Racing Sant",
              "competition": "La Liga",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 166.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.12
            },
            "rationale": "XGBoost regressor (D_service) evaluated 6 historical appearances across 7 target models; FBref 2026-2027 prior blended (La Liga, Racing Sant, rel: 0.12, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.1559,
                "tackles": 1.7808,
                "tackles_won": 1.0823,
                "clearances": 4.4485,
                "aerial_won": 1.4497,
                "total_shots": 0.543,
                "rating": 6.7764,
                "minutes": 83.11,
                "total_pass": 52.3237,
                "accurate_pass": 46.81,
                "duels_won": 5.7483,
                "total_long_balls": 3.6208,
                "accurate_long_balls": 1.3852,
                "total_own_half_passes": 32.3658,
                "accurate_own_half_passes": 30.9013,
                "total_opp_half_passes": 19.9579,
                "accurate_opp_half_passes": 15.9087,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 66.1327,
                "possession_lost": 6.7452,
                "dispossessed": 0.7208,
                "duels_lost": 3.2968,
                "aerial_lost": 1.2945,
                "total_contest": 0.5648,
                "won_contest": 0.424,
                "ball_recovery": 5.2333,
                "challenges_lost": 0.5012,
                "fouls": 0.6396,
                "fouls_drawn": 1.0856,
                "blocks": 0.1656,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0067,
                "expected_assists": 0.0087,
                "shots_on_target": 0.2292,
                "big_chances_created": 0.0,
                "xgot": 0.0075,
                "ball_carries": 22.3501,
                "total_progression": 81.3461,
                "progressive_carries": 0.9303,
                "key_pass": 0.1408,
                "shots_off_target": 0.3138
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:05:00.533351+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Valencia",
                    "minutes": 61.0,
                    "is_starting": true,
                    "weight": 0.2408,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2047,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.174,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Rayo Vallecano",
                    "minutes": 35.0,
                    "is_starting": false,
                    "weight": 0.1479,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1257,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Villarreal",
                    "minutes": 77.0,
                    "is_starting": true,
                    "weight": 0.1069,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 6.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 4.4094,
                  "aerialWon": 1.5961,
                  "totalClearance_p90": 4.7647,
                  "totalTackle": 2.207,
                  "defensive_actions": 3.1988
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.1558988094329834,
                    "model_output": 1.1559,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1253
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0353
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0258
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0244
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0177
                        }
                      ],
                      "others": 0.0665,
                      "total": 1.1559,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.135928
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.035151
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.024984
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": 0.023075
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.016359
                        }
                      ],
                      "others_margin": 0.059188
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.7808473110198975,
                    "model_output": 1.7808,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1964
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0908
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0945
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0712
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0617
                        }
                      ],
                      "others": -0.1253,
                      "total": 1.7808,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.132018
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.055603
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.054756
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.039395
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.03288
                        }
                      ],
                      "others_margin": -0.067948
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.0822683572769165,
                    "model_output": 1.0823,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1314
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0768
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0613
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0521
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0535
                        }
                      ],
                      "others": -0.147,
                      "total": 1.0823,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.143075
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.075051
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.056132
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.045288
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.044497
                        }
                      ],
                      "others_margin": -0.127354
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.448526859283447,
                    "model_output": 4.4485,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4702
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.4608
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.3187
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.1992
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.1497
                        }
                      ],
                      "others": -0.2834,
                      "total": 4.4485,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.128379
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.111594
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.070481
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": 0.041662
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.03114
                        }
                      ],
                      "others_margin": -0.06176
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.4497352838516235,
                    "model_output": 1.4497,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1676
                        },
                        {
                          "name": "dispossessed",
                          "contribution": -0.0909
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0846
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0725
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0721
                        }
                      ],
                      "others": -0.0893,
                      "total": 1.4497,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.114854
                        },
                        {
                          "name": "dispossessed",
                          "margin": -0.060635
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.056573
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.046041
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.045776
                        }
                      ],
                      "others_margin": -0.059811
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.5429528951644897,
                    "model_output": 0.543,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0619
                        },
                        {
                          "name": "duelWon",
                          "contribution": 0.029
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0249
                        },
                        {
                          "name": "dispossessed",
                          "contribution": 0.0135
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0077
                        }
                      ],
                      "others": -0.0033,
                      "total": 0.543,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.061923
                        },
                        {
                          "name": "duelWon",
                          "margin": 0.029035
                        },
                        {
                          "name": "rating",
                          "margin": -0.024913
                        },
                        {
                          "name": "dispossessed",
                          "margin": 0.013459
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.007702
                        }
                      ],
                      "others_margin": -0.00335
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.776368618011475,
                    "model_output": 6.7764,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "accuratePass",
                          "contribution": 0.0214
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0202
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0135
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0114
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0112
                        }
                      ],
                      "others": 0.0038,
                      "total": 6.7764,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "accuratePass",
                          "margin": 0.021416
                        },
                        {
                          "name": "rating",
                          "margin": -0.020221
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013466
                        },
                        {
                          "name": "totalPass",
                          "margin": 0.011352
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.011188
                        }
                      ],
                      "others_margin": 0.003773
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 6,
                  "role_matches": 5,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9908, quality 0.437)",
              "stats": {
                "interceptions": 1.1453,
                "tackles": 1.7645,
                "tackles_won": 1.0723,
                "clearances": 4.4076,
                "aerial_won": 1.4364,
                "total_shots": 0.538,
                "rating": 6.7764,
                "minutes": 83.11,
                "total_pass": 51.8423,
                "accurate_pass": 46.3793,
                "duels_won": 5.6954,
                "total_long_balls": 3.5875,
                "accurate_long_balls": 1.3725,
                "total_own_half_passes": 32.068,
                "accurate_own_half_passes": 30.617,
                "total_opp_half_passes": 19.7743,
                "accurate_opp_half_passes": 15.7623,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.5243,
                "possession_lost": 6.6831,
                "dispossessed": 0.7142,
                "duels_lost": 3.2665,
                "aerial_lost": 1.2826,
                "total_contest": 0.5596,
                "won_contest": 0.4201,
                "ball_recovery": 5.1852,
                "challenges_lost": 0.4966,
                "fouls": 0.6337,
                "fouls_drawn": 1.0756,
                "blocks": 0.1641,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0066,
                "expected_assists": 0.0086,
                "shots_on_target": 0.2271,
                "big_chances_created": 0.0,
                "xgot": 0.0074,
                "ball_carries": 22.1445,
                "total_progression": 80.5977,
                "progressive_carries": 0.9217,
                "key_pass": 0.1395,
                "shots_off_target": 0.3109
              },
              "params": {
                "market_value_eur": 1500000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9908,
                "reference_quality": 0.505,
                "history_matches": 6,
                "history_shrink": 0.4545,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0355)",
              "stats": {
                "interceptions": 1.1775,
                "tackles": 1.7645,
                "tackles_won": 1.107,
                "clearances": 4.4076,
                "aerial_won": 1.4364,
                "total_shots": 0.5189,
                "rating": 6.7764,
                "minutes": 83.11,
                "total_pass": 51.8423,
                "accurate_pass": 46.3793,
                "duels_won": 5.6954,
                "total_long_balls": 3.5875,
                "accurate_long_balls": 1.3725,
                "total_own_half_passes": 32.068,
                "accurate_own_half_passes": 30.617,
                "total_opp_half_passes": 19.7743,
                "accurate_opp_half_passes": 15.7623,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.5243,
                "possession_lost": 6.6831,
                "dispossessed": 0.7142,
                "duels_lost": 3.2665,
                "aerial_lost": 1.2826,
                "total_contest": 0.5596,
                "won_contest": 0.4201,
                "ball_recovery": 5.1852,
                "challenges_lost": 0.4966,
                "fouls": 0.6294,
                "fouls_drawn": 1.0738,
                "blocks": 0.1641,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0066,
                "expected_assists": 0.0086,
                "shots_on_target": 0.219,
                "big_chances_created": 0.0,
                "xgot": 0.0074,
                "ball_carries": 22.1445,
                "total_progression": 80.5977,
                "progressive_carries": 0.9217,
                "key_pass": 0.1395,
                "shots_off_target": 0.3109
              },
              "params": {
                "blend_weight": 0.0355,
                "history_matches": 6,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.9234,
                "prior_reliability": 0.12,
                "competition": "La Liga",
                "squad": "Racing Sant"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 1.0723,
                  "after": 1.107
                },
                {
                  "stat": "interceptionWon",
                  "before": 1.1453,
                  "after": 1.1775
                },
                {
                  "stat": "totalShots",
                  "before": 0.538,
                  "after": 0.5189
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.2271,
                  "after": 0.219
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.1775,
                "tackles": 1.7645,
                "tackles_won": 1.107,
                "clearances": 4.4076,
                "aerial_won": 1.4364,
                "total_shots": 0.5299,
                "rating": 6.7764,
                "minutes": 83.11,
                "total_pass": 51.8423,
                "accurate_pass": 46.3793,
                "duels_won": 5.6954,
                "total_long_balls": 3.5875,
                "accurate_long_balls": 1.3725,
                "total_own_half_passes": 32.068,
                "accurate_own_half_passes": 30.617,
                "total_opp_half_passes": 19.7743,
                "accurate_opp_half_passes": 15.7623,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.5243,
                "possession_lost": 6.6831,
                "dispossessed": 0.7142,
                "duels_lost": 3.2665,
                "aerial_lost": 1.2826,
                "total_contest": 0.5596,
                "won_contest": 0.4201,
                "ball_recovery": 5.1852,
                "challenges_lost": 0.4966,
                "fouls": 0.6294,
                "fouls_drawn": 1.0738,
                "blocks": 0.1641,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0066,
                "expected_assists": 0.0086,
                "shots_on_target": 0.219,
                "big_chances_created": 0.0,
                "xgot": 0.0074,
                "ball_carries": 22.1445,
                "total_progression": 80.5977,
                "progressive_carries": 0.9217,
                "key_pass": 0.1395,
                "shots_off_target": 0.3109
              },
              "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.1775,
                "tackles": 1.7645,
                "tackles_won": 1.107,
                "clearances": 4.4076,
                "aerial_won": 1.4364,
                "total_shots": 0.5299,
                "rating": 6.7764,
                "minutes": 83.11,
                "total_pass": 51.8423,
                "accurate_pass": 46.3793,
                "duels_won": 5.6954,
                "total_long_balls": 3.5875,
                "accurate_long_balls": 1.3725,
                "total_own_half_passes": 32.068,
                "accurate_own_half_passes": 30.617,
                "total_opp_half_passes": 19.7743,
                "accurate_opp_half_passes": 15.7623,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.5243,
                "possession_lost": 6.6831,
                "dispossessed": 0.7142,
                "duels_lost": 3.2665,
                "aerial_lost": 1.2826,
                "total_contest": 0.5596,
                "won_contest": 0.4201,
                "ball_recovery": 5.1852,
                "challenges_lost": 0.4966,
                "fouls": 0.6294,
                "fouls_drawn": 1.0738,
                "blocks": 0.1641,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0066,
                "expected_assists": 0.0086,
                "shots_on_target": 0.219,
                "big_chances_created": 0.0,
                "xgot": 0.0074,
                "ball_carries": 22.1445,
                "total_progression": 80.5977,
                "progressive_carries": 0.9217,
                "key_pass": 0.1395,
                "shots_off_target": 0.3109,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 1.2,
                "defensive_success_rate": 0.58,
                "opponent_faced": "Rubén García",
                "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": "Rubén García",
                  "matchup_zone": "Left Wing vs Right Back — Flank Battle"
                }
              }
            },
            {
              "step": "scoreline_reset",
              "description": "Team scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projection",
              "stats": {
                "interceptions": 1.1775,
                "tackles": 1.7645,
                "tackles_won": 1.107,
                "clearances": 4.4076,
                "aerial_won": 1.4364,
                "total_shots": 0.5299,
                "rating": 6.7764,
                "minutes": 83.11,
                "total_pass": 51.8423,
                "accurate_pass": 46.3793,
                "duels_won": 5.6954,
                "total_long_balls": 3.5875,
                "accurate_long_balls": 1.3725,
                "total_own_half_passes": 32.068,
                "accurate_own_half_passes": 30.617,
                "total_opp_half_passes": 19.7743,
                "accurate_opp_half_passes": 15.7623,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.5243,
                "possession_lost": 6.6831,
                "dispossessed": 0.7142,
                "duels_lost": 3.2665,
                "aerial_lost": 1.2826,
                "total_contest": 0.5596,
                "won_contest": 0.4201,
                "ball_recovery": 5.1852,
                "challenges_lost": 0.4966,
                "fouls": 0.6294,
                "fouls_drawn": 1.0738,
                "blocks": 0.1641,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0066,
                "expected_assists": 0.0086,
                "shots_on_target": 0.219,
                "big_chances_created": 0.0,
                "xgot": 0.0074,
                "ball_carries": 22.1445,
                "total_progression": 80.5977,
                "progressive_carries": 0.9217,
                "key_pass": 0.1395,
                "shots_off_target": 0.3109,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 1.2,
                "defensive_success_rate": 0.58,
                "opponent_faced": "Rubén García",
                "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.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "interceptions": 1.1775,
                "tackles": 1.7645,
                "tackles_won": 1.107,
                "clearances": 4.4076,
                "aerial_won": 1.4364,
                "total_shots": 0.5299,
                "rating": 6.7764,
                "minutes": 83.11,
                "total_pass": 51.8423,
                "accurate_pass": 46.3793,
                "duels_won": 5.6954,
                "total_long_balls": 3.5875,
                "accurate_long_balls": 1.3725,
                "total_own_half_passes": 32.068,
                "accurate_own_half_passes": 30.617,
                "total_opp_half_passes": 19.7743,
                "accurate_opp_half_passes": 15.7623,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.5243,
                "possession_lost": 6.6831,
                "dispossessed": 0.7142,
                "duels_lost": 3.2665,
                "aerial_lost": 1.2826,
                "total_contest": 0.5596,
                "won_contest": 0.4201,
                "ball_recovery": 5.1852,
                "challenges_lost": 0.4966,
                "fouls": 0.6294,
                "fouls_drawn": 1.0738,
                "blocks": 0.1641,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0082,
                "expected_assists": 0.0106,
                "shots_on_target": 0.219,
                "big_chances_created": 0.0,
                "xgot": 0.0091,
                "ball_carries": 22.1445,
                "total_progression": 80.5977,
                "progressive_carries": 0.9217,
                "key_pass": 0.1395,
                "shots_off_target": 0.3109,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 1.2,
                "defensive_success_rate": 0.58,
                "opponent_faced": "Rubén García",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8834,
                "creation_factor": 0.8532
              },
              "params": {
                "team_lambda": 1.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "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 69.0)",
              "stats": {
                "interceptions": 1.1775,
                "tackles": 1.7645,
                "tackles_won": 1.107,
                "clearances": 4.4076,
                "aerial_won": 1.4364,
                "total_shots": 0.5299,
                "rating": 6.7764,
                "minutes": 83.11,
                "total_pass": 51.8423,
                "accurate_pass": 46.3793,
                "duels_won": 5.6954,
                "total_long_balls": 3.5875,
                "accurate_long_balls": 1.3725,
                "total_own_half_passes": 32.068,
                "accurate_own_half_passes": 30.617,
                "total_opp_half_passes": 19.7743,
                "accurate_opp_half_passes": 15.7623,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.5243,
                "possession_lost": 6.6831,
                "dispossessed": 0.7142,
                "duels_lost": 3.2665,
                "aerial_lost": 1.2826,
                "total_contest": 0.5596,
                "won_contest": 0.4201,
                "ball_recovery": 5.1852,
                "challenges_lost": 0.4966,
                "fouls": 0.6294,
                "fouls_drawn": 1.0738,
                "blocks": 0.1641,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0082,
                "expected_assists": 0.0106,
                "shots_on_target": 0.219,
                "big_chances_created": 0.0,
                "xgot": 0.0091,
                "ball_carries": 22.1445,
                "total_progression": 80.5977,
                "progressive_carries": 0.9217,
                "key_pass": 0.1395,
                "shots_off_target": 0.3109,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 1.2,
                "defensive_success_rate": 0.58,
                "opponent_faced": "Rubén García",
                "pressing_zone": "Left Wing vs Right Back — Flank Battle",
                "matchup_zone": "Left Wing vs Right Back — Flank Battle",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8834,
                "creation_factor": 0.8532,
                "fifa_overall": 69.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": 5500,
                "fifa_rank": 6968.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 69.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.1775,
                "tackles": 1.7645,
                "tackles_won": 1.107,
                "clearances": 4.4076,
                "aerial_won": 1.4364,
                "total_shots": 0.5299,
                "rating": 6.7764,
                "minutes": 83.11,
                "total_pass": 51.8423,
                "accurate_pass": 46.3793,
                "duels_won": 5.6954,
                "total_long_balls": 3.5875,
                "accurate_long_balls": 1.3725,
                "total_own_half_passes": 32.068,
                "accurate_own_half_passes": 30.617,
                "total_opp_half_passes": 19.7743,
                "accurate_opp_half_passes": 15.7623,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.5243,
                "possession_lost": 6.6831,
                "dispossessed": 0.7142,
                "duels_lost": 3.2665,
                "aerial_lost": 1.2826,
                "total_contest": 0.5596,
                "won_contest": 0.4201,
                "ball_recovery": 5.1852,
                "challenges_lost": 0.4966,
                "fouls": 0.6294,
                "fouls_drawn": 1.0738,
                "blocks": 0.1641,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0082,
                "expected_assists": 0.0106,
                "shots_on_target": 0.219,
                "big_chances_created": 0.0,
                "xgot": 0.0091,
                "ball_carries": 22.1445,
                "total_progression": 80.5977,
                "progressive_carries": 0.9217,
                "key_pass": 0.1395,
                "shots_off_target": 0.3109,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 1.2,
                "defensive_success_rate": 0.58,
                "opponent_faced": "Rubén García",
                "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.0082,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8834,
                "creation_factor": 0.8532,
                "fifa_overall": 69.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0082,
                "goal_rate": 0.0,
                "scorer_weight": 0.0072,
                "squad_weight_total": 1.5727,
                "weight_share": 0.0046,
                "finishing_factor": 0.8834,
                "appearance_weight": 1.0,
                "weight_rank": 12,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.1775,
                "tackles": 1.7645,
                "tackles_won": 1.107,
                "clearances": 4.4076,
                "aerial_won": 1.4364,
                "total_shots": 0.5299,
                "rating": 6.7764,
                "minutes": 83.11,
                "total_pass": 51.8423,
                "accurate_pass": 46.3793,
                "duels_won": 5.6954,
                "total_long_balls": 3.5875,
                "accurate_long_balls": 1.3725,
                "total_own_half_passes": 32.068,
                "accurate_own_half_passes": 30.617,
                "total_opp_half_passes": 19.7743,
                "accurate_opp_half_passes": 15.7623,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 65.5243,
                "possession_lost": 6.6831,
                "dispossessed": 0.7142,
                "duels_lost": 3.2665,
                "aerial_lost": 1.2826,
                "total_contest": 0.5596,
                "won_contest": 0.4201,
                "ball_recovery": 5.1852,
                "challenges_lost": 0.4966,
                "fouls": 0.6294,
                "fouls_drawn": 1.0738,
                "blocks": 0.1641,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0082,
                "expected_assists": 0.0106,
                "shots_on_target": 0.219,
                "big_chances_created": 0.0,
                "xgot": 0.0091,
                "ball_carries": 22.1445,
                "total_progression": 80.5977,
                "progressive_carries": 0.9217,
                "key_pass": 0.1395,
                "shots_off_target": 0.3109,
                "tackles_in_zone": 1.9,
                "tackles_won_in_zone": 1.6,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 1.2,
                "defensive_success_rate": 0.58,
                "opponent_faced": "Rubén García",
                "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.0082,
                "projected_assists": 0,
                "assist_probability": 0.0105,
                "finishing_factor": 0.8834,
                "creation_factor": 0.8532,
                "fifa_overall": 69.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0105,
                "assist_rate": 0.0,
                "provider_weight": 0.009,
                "squad_weight_total": 0.9036,
                "weight_share": 0.01,
                "creation_factor": 0.8532,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Alvaro Mantilla": {
          "player_id": 1010792,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 2,
          "height": 182,
          "market_value": 1200000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "total_shots": 0,
            "rating": 6.7052,
            "minutes": 86,
            "total_pass": 37,
            "accurate_pass": 27,
            "duels_won": 4,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 16,
            "accurate_own_half_passes": 14,
            "total_opp_half_passes": 21,
            "accurate_opp_half_passes": 14,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 55,
            "possession_lost": 13.3767,
            "dispossessed": 0.3534,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0178,
            "expected_assists": 0.0286,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 12,
            "total_progression": 43,
            "progressive_carries": 1,
            "key_pass": 0,
            "shots_off_target": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.9,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.813,
            "opponent_faced": "Ante Budimir",
            "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.0176,
            "projected_assists": 0,
            "assist_probability": 0.0282,
            "finishing_factor": 0.8,
            "creation_factor": 0.8,
            "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": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0064,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 19,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 63,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0328,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 41,
                "tackles": 3,
                "tackles_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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0058,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 33,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "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": 16416321,
              "match_date": "2026-09-05",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 89,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0694,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 20,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 7,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416304,
              "match_date": "2026-08-28",
              "home_team": "Real Racing Club",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 25,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 9,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416300,
              "match_date": "2026-08-23",
              "home_team": "Getafe",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0077,
                "total_shots": 0,
                "total_pass": 55,
                "accurate_pass": 36,
                "tackles": 5,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1743,
                "expected_assists": 0.0505,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 21,
                "accurate_pass": 16,
                "tackles": 1,
                "interceptions": 2,
                "clearances": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 2732,
            "combined_rank_score": 1276.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 948.0,
            "sofascore_rating": 6.4333,
            "sofascore_appearances": 3.0,
            "fifa_rank": 1604.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7052,
            "source_file": "data/player_rankings.csv",
            "player_name": "Alvaro Mantilla",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Dan Edwards",
                  "ranking": 2727
                },
                {
                  "player_name": "Bartra",
                  "ranking": 2728
                },
                {
                  "player_name": "İsmail Yüksek",
                  "ranking": 2729
                },
                {
                  "player_name": "Enzo Monteiro",
                  "ranking": 2730
                },
                {
                  "player_name": "Max Ebong",
                  "ranking": 2731
                }
              ],
              "lower": [
                {
                  "player_name": "Miguel Silveira",
                  "ranking": 2733
                },
                {
                  "player_name": "Alexis Rodríguez",
                  "ranking": 2734
                },
                {
                  "player_name": "Carmelo Algarañaz",
                  "ranking": 2735
                },
                {
                  "player_name": "Marcos Bolados",
                  "ranking": 2736
                },
                {
                  "player_name": "Carlos Salomón",
                  "ranking": 2737
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.688,
          "history_matches": 7,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "totalTackle",
              "totalShots",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "long_ball_accuracy",
              "defensive_actions",
              "tackle_success_rate",
              "touches_p90",
              "totalTackle_p90",
              "interceptionWon_p90",
              "totalClearance_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "press_vulnerability",
              "error_severity",
              "aerial_dominance",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "interceptionWon",
              "totalTackle",
              "wonTackle",
              "totalClearance",
              "aerialWon",
              "totalShots",
              "rating"
            ],
            "history_matches": 7,
            "data_confidence": 0.688,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 0.9916,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 7 historical appearances across 7 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 7 target models",
              "stats": {
                "interceptions": 1.0261,
                "tackles": 2.0337,
                "tackles_won": 1.2932,
                "clearances": 2.5411,
                "aerial_won": 1.1752,
                "total_shots": 0.3028,
                "rating": 6.7052,
                "minutes": 85.95,
                "total_pass": 37.1099,
                "accurate_pass": 27.6042,
                "duels_won": 3.9189,
                "total_long_balls": 2.4358,
                "accurate_long_balls": 0.6595,
                "total_own_half_passes": 16.062,
                "accurate_own_half_passes": 13.6372,
                "total_opp_half_passes": 21.0479,
                "accurate_opp_half_passes": 13.967,
                "crosses_total": 1.0624,
                "crosses_accurate": 0.0,
                "touches": 55.7634,
                "possession_lost": 13.49,
                "dispossessed": 0.3564,
                "duels_lost": 3.4979,
                "aerial_lost": 0.8536,
                "total_contest": 0.6046,
                "won_contest": 0.1876,
                "ball_recovery": 3.2521,
                "challenges_lost": 0.8436,
                "fouls": 1.1107,
                "fouls_drawn": 0.3029,
                "blocks": 0.4103,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0145,
                "expected_assists": 0.0233,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.7064,
                "total_progression": 43.7202,
                "progressive_carries": 0.8848,
                "key_pass": 0.1595,
                "shots_off_target": 0.3028
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:05:00.533351+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2208,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Celta Vigo",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1877,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1595,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Rayo Vallecano",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.1356,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1152,
                    "rating": 6.8
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.098,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0833,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 7.0,
                  "is_starting_11": 1.0,
                  "totalClearance": 3.1706,
                  "aerialWon": 1.3864,
                  "totalClearance_p90": 3.1813,
                  "totalTackle": 2.0419,
                  "defensive_actions": 2.778
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.0260605812072754,
                    "model_output": 1.0261,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1141
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.045
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0253
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.022
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0175
                        }
                      ],
                      "others": 0.1259,
                      "total": 1.0261,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.124466
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.047285
                        },
                        {
                          "name": "interceptionWon_p90",
                          "margin": -0.027572
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.02463
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.019615
                        }
                      ],
                      "others_margin": 0.130939
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 2.033745527267456,
                    "model_output": 2.0337,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1948
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0882
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0814
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0712
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0662
                        }
                      ],
                      "others": 0.1404,
                      "total": 2.0337,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.131027
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.054134
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.04749
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.03973
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": 0.035587
                        }
                      ],
                      "others_margin": 0.071525
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.2931627035140991,
                    "model_output": 1.2932,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1331
                        },
                        {
                          "name": "totalTackle",
                          "contribution": 0.0823
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0432
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0415
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0422
                        }
                      ],
                      "others": 0.0967,
                      "total": 1.2932,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.144818
                        },
                        {
                          "name": "totalTackle",
                          "margin": 0.080109
                        },
                        {
                          "name": "defensive_actions",
                          "margin": 0.039582
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.036642
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.035925
                        }
                      ],
                      "others_margin": 0.077645
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.5411016941070557,
                    "model_output": 2.5411,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.4682
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.405
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.2964
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1963
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.1701
                        }
                      ],
                      "others": -0.292,
                      "total": 2.5411,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.12786
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.10961
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.08861
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.063316
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.058304
                        }
                      ],
                      "others_margin": -0.108779
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.175244688987732,
                    "model_output": 1.1752,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1624
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.083
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0624
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0403
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0361
                        }
                      ],
                      "others": -0.1427,
                      "total": 1.1752,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": 0.111439
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.055429
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.043769
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.029357
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.027008
                        }
                      ],
                      "others_margin": -0.114534
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.3028036952018738,
                    "model_output": 0.3028,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.1226
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0411
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0403
                        },
                        {
                          "name": "duelWon",
                          "contribution": -0.0086
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0081
                        }
                      ],
                      "others": -0.0494,
                      "total": 0.3028,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "totalShots",
                          "margin": -0.122641
                        },
                        {
                          "name": "is_starting_11",
                          "margin": 0.041135
                        },
                        {
                          "name": "rating",
                          "margin": -0.04031
                        },
                        {
                          "name": "duelWon",
                          "margin": -0.008642
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.008148
                        }
                      ],
                      "others_margin": -0.049386
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.705182075500488,
                    "model_output": 6.7052,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0147
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0133
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0099
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0074
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0061
                        }
                      ],
                      "others": -0.0281,
                      "total": 6.7052,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.014736
                        },
                        {
                          "name": "touches_p90",
                          "margin": -0.013341
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.009875
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.007361
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.00608
                        }
                      ],
                      "others_margin": -0.028127
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 7,
                  "role_matches": 7,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9916, quality 0.437)",
              "stats": {
                "interceptions": 1.0174,
                "tackles": 2.0167,
                "tackles_won": 1.2823,
                "clearances": 2.5198,
                "aerial_won": 1.1654,
                "total_shots": 0.3003,
                "rating": 6.7052,
                "minutes": 85.95,
                "total_pass": 36.7982,
                "accurate_pass": 27.3723,
                "duels_won": 3.886,
                "total_long_balls": 2.4153,
                "accurate_long_balls": 0.654,
                "total_own_half_passes": 15.9271,
                "accurate_own_half_passes": 13.5226,
                "total_opp_half_passes": 20.8711,
                "accurate_opp_half_passes": 13.8497,
                "crosses_total": 1.0535,
                "crosses_accurate": 0.0,
                "touches": 55.295,
                "possession_lost": 13.3767,
                "dispossessed": 0.3534,
                "duels_lost": 3.4685,
                "aerial_lost": 0.8464,
                "total_contest": 0.5995,
                "won_contest": 0.186,
                "ball_recovery": 3.2248,
                "challenges_lost": 0.8365,
                "fouls": 1.1014,
                "fouls_drawn": 0.3004,
                "blocks": 0.4069,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0144,
                "expected_assists": 0.0231,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.6081,
                "total_progression": 43.353,
                "progressive_carries": 0.8774,
                "key_pass": 0.1582,
                "shots_off_target": 0.3003
              },
              "params": {
                "market_value_eur": 1200000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9916,
                "reference_quality": 0.505,
                "history_matches": 7,
                "history_shrink": 0.4167,
                "market_value_known": true
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1.0174,
                "tackles": 2.0167,
                "tackles_won": 1.2823,
                "clearances": 2.5198,
                "aerial_won": 1.1654,
                "total_shots": 0.3003,
                "rating": 6.7052,
                "minutes": 85.95,
                "total_pass": 36.7982,
                "accurate_pass": 27.3723,
                "duels_won": 3.886,
                "total_long_balls": 2.4153,
                "accurate_long_balls": 0.654,
                "total_own_half_passes": 15.9271,
                "accurate_own_half_passes": 13.5226,
                "total_opp_half_passes": 20.8711,
                "accurate_opp_half_passes": 13.8497,
                "crosses_total": 1.0535,
                "crosses_accurate": 0.0,
                "touches": 55.295,
                "possession_lost": 13.3767,
                "dispossessed": 0.3534,
                "duels_lost": 3.4685,
                "aerial_lost": 0.8464,
                "total_contest": 0.5995,
                "won_contest": 0.186,
                "ball_recovery": 3.2248,
                "challenges_lost": 0.8365,
                "fouls": 1.1014,
                "fouls_drawn": 0.3004,
                "blocks": 0.4069,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0144,
                "expected_assists": 0.0231,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.6081,
                "total_progression": 43.353,
                "progressive_carries": 0.8774,
                "key_pass": 0.1582,
                "shots_off_target": 0.3003
              },
              "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.0174,
                "tackles": 2.0167,
                "tackles_won": 1.2823,
                "clearances": 2.5198,
                "aerial_won": 1.1654,
                "total_shots": 0.3003,
                "rating": 6.7052,
                "minutes": 85.95,
                "total_pass": 36.7982,
                "accurate_pass": 27.3723,
                "duels_won": 3.886,
                "total_long_balls": 2.4153,
                "accurate_long_balls": 0.654,
                "total_own_half_passes": 15.9271,
                "accurate_own_half_passes": 13.5226,
                "total_opp_half_passes": 20.8711,
                "accurate_opp_half_passes": 13.8497,
                "crosses_total": 1.0535,
                "crosses_accurate": 0.0,
                "touches": 55.295,
                "possession_lost": 13.3767,
                "dispossessed": 0.3534,
                "duels_lost": 3.4685,
                "aerial_lost": 0.8464,
                "total_contest": 0.5995,
                "won_contest": 0.186,
                "ball_recovery": 3.2248,
                "challenges_lost": 0.8365,
                "fouls": 1.1014,
                "fouls_drawn": 0.3004,
                "blocks": 0.4069,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0144,
                "expected_assists": 0.0231,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.6081,
                "total_progression": 43.353,
                "progressive_carries": 0.8774,
                "key_pass": 0.1582,
                "shots_off_target": 0.3003,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.813,
                "opponent_faced": "Ante Budimir",
                "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": "Ante Budimir",
                  "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.0174,
                "tackles": 2.0167,
                "tackles_won": 1.2823,
                "clearances": 2.5198,
                "aerial_won": 1.1654,
                "total_shots": 0.3003,
                "rating": 6.7052,
                "minutes": 85.95,
                "total_pass": 36.7982,
                "accurate_pass": 27.3723,
                "duels_won": 3.886,
                "total_long_balls": 2.4153,
                "accurate_long_balls": 0.654,
                "total_own_half_passes": 15.9271,
                "accurate_own_half_passes": 13.5226,
                "total_opp_half_passes": 20.8711,
                "accurate_opp_half_passes": 13.8497,
                "crosses_total": 1.0535,
                "crosses_accurate": 0.0,
                "touches": 55.295,
                "possession_lost": 13.3767,
                "dispossessed": 0.3534,
                "duels_lost": 3.4685,
                "aerial_lost": 0.8464,
                "total_contest": 0.5995,
                "won_contest": 0.186,
                "ball_recovery": 3.2248,
                "challenges_lost": 0.8365,
                "fouls": 1.1014,
                "fouls_drawn": 0.3004,
                "blocks": 0.4069,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0144,
                "expected_assists": 0.0231,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.6081,
                "total_progression": 43.353,
                "progressive_carries": 0.8774,
                "key_pass": 0.1582,
                "shots_off_target": 0.3003,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.813,
                "opponent_faced": "Ante Budimir",
                "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.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "interceptions": 1.0174,
                "tackles": 2.0167,
                "tackles_won": 1.2823,
                "clearances": 2.5198,
                "aerial_won": 1.1654,
                "total_shots": 0.3003,
                "rating": 6.7052,
                "minutes": 85.95,
                "total_pass": 36.7982,
                "accurate_pass": 27.3723,
                "duels_won": 3.886,
                "total_long_balls": 2.4153,
                "accurate_long_balls": 0.654,
                "total_own_half_passes": 15.9271,
                "accurate_own_half_passes": 13.5226,
                "total_opp_half_passes": 20.8711,
                "accurate_opp_half_passes": 13.8497,
                "crosses_total": 1.0535,
                "crosses_accurate": 0.0,
                "touches": 55.295,
                "possession_lost": 13.3767,
                "dispossessed": 0.3534,
                "duels_lost": 3.4685,
                "aerial_lost": 0.8464,
                "total_contest": 0.5995,
                "won_contest": 0.186,
                "ball_recovery": 3.2248,
                "challenges_lost": 0.8365,
                "fouls": 1.1014,
                "fouls_drawn": 0.3004,
                "blocks": 0.4069,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0178,
                "expected_assists": 0.0286,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.6081,
                "total_progression": 43.353,
                "progressive_carries": 0.8774,
                "key_pass": 0.1582,
                "shots_off_target": 0.3003,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.813,
                "opponent_faced": "Ante Budimir",
                "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.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "expected_assists",
                  "before": 0.0231,
                  "after": 0.0286
                }
              ]
            },
            {
              "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": 1.0174,
                "tackles": 2.0167,
                "tackles_won": 1.2823,
                "clearances": 2.5198,
                "aerial_won": 1.1654,
                "total_shots": 0.3003,
                "rating": 6.7052,
                "minutes": 85.95,
                "total_pass": 36.7982,
                "accurate_pass": 27.3723,
                "duels_won": 3.886,
                "total_long_balls": 2.4153,
                "accurate_long_balls": 0.654,
                "total_own_half_passes": 15.9271,
                "accurate_own_half_passes": 13.5226,
                "total_opp_half_passes": 20.8711,
                "accurate_opp_half_passes": 13.8497,
                "crosses_total": 1.0535,
                "crosses_accurate": 0.0,
                "touches": 55.295,
                "possession_lost": 13.3767,
                "dispossessed": 0.3534,
                "duels_lost": 3.4685,
                "aerial_lost": 0.8464,
                "total_contest": 0.5995,
                "won_contest": 0.186,
                "ball_recovery": 3.2248,
                "challenges_lost": 0.8365,
                "fouls": 1.1014,
                "fouls_drawn": 0.3004,
                "blocks": 0.4069,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0178,
                "expected_assists": 0.0286,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.6081,
                "total_progression": 43.353,
                "progressive_carries": 0.8774,
                "key_pass": 0.1582,
                "shots_off_target": 0.3003,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.813,
                "opponent_faced": "Ante Budimir",
                "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": 77.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 2732,
                "fifa_rank": 1604.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "interceptions": 1.0174,
                "tackles": 2.0167,
                "tackles_won": 1.2823,
                "clearances": 2.5198,
                "aerial_won": 1.1654,
                "total_shots": 0.3003,
                "rating": 6.7052,
                "minutes": 85.95,
                "total_pass": 36.7982,
                "accurate_pass": 27.3723,
                "duels_won": 3.886,
                "total_long_balls": 2.4153,
                "accurate_long_balls": 0.654,
                "total_own_half_passes": 15.9271,
                "accurate_own_half_passes": 13.5226,
                "total_opp_half_passes": 20.8711,
                "accurate_opp_half_passes": 13.8497,
                "crosses_total": 1.0535,
                "crosses_accurate": 0.0,
                "touches": 55.295,
                "possession_lost": 13.3767,
                "dispossessed": 0.3534,
                "duels_lost": 3.4685,
                "aerial_lost": 0.8464,
                "total_contest": 0.5995,
                "won_contest": 0.186,
                "ball_recovery": 3.2248,
                "challenges_lost": 0.8365,
                "fouls": 1.1014,
                "fouls_drawn": 0.3004,
                "blocks": 0.4069,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0178,
                "expected_assists": 0.0286,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.6081,
                "total_progression": 43.353,
                "progressive_carries": 0.8774,
                "key_pass": 0.1582,
                "shots_off_target": 0.3003,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.813,
                "opponent_faced": "Ante Budimir",
                "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.0176,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0176,
                "goal_rate": 0.0,
                "scorer_weight": 0.0142,
                "squad_weight_total": 1.5727,
                "weight_share": 0.0091,
                "finishing_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 11,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.0174,
                "tackles": 2.0167,
                "tackles_won": 1.2823,
                "clearances": 2.5198,
                "aerial_won": 1.1654,
                "total_shots": 0.3003,
                "rating": 6.7052,
                "minutes": 85.95,
                "total_pass": 36.7982,
                "accurate_pass": 27.3723,
                "duels_won": 3.886,
                "total_long_balls": 2.4153,
                "accurate_long_balls": 0.654,
                "total_own_half_passes": 15.9271,
                "accurate_own_half_passes": 13.5226,
                "total_opp_half_passes": 20.8711,
                "accurate_opp_half_passes": 13.8497,
                "crosses_total": 1.0535,
                "crosses_accurate": 0.0,
                "touches": 55.295,
                "possession_lost": 13.3767,
                "dispossessed": 0.3534,
                "duels_lost": 3.4685,
                "aerial_lost": 0.8464,
                "total_contest": 0.5995,
                "won_contest": 0.186,
                "ball_recovery": 3.2248,
                "challenges_lost": 0.8365,
                "fouls": 1.1014,
                "fouls_drawn": 0.3004,
                "blocks": 0.4069,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0178,
                "expected_assists": 0.0286,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 11.6081,
                "total_progression": 43.353,
                "progressive_carries": 0.8774,
                "key_pass": 0.1582,
                "shots_off_target": 0.3003,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 0.9,
                "interceptions_in_zone": 0.7,
                "clearances_in_zone": 0.6,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.813,
                "opponent_faced": "Ante Budimir",
                "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.0176,
                "projected_assists": 0,
                "assist_probability": 0.0282,
                "finishing_factor": 0.8,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0282,
                "assist_rate": 0.0,
                "provider_weight": 0.0229,
                "squad_weight_total": 0.9036,
                "weight_share": 0.0253,
                "creation_factor": 0.8,
                "appearance_weight": 1.0,
                "weight_rank": 9,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Julen Agirrezabala": {
          "player_id": 1014412,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 13,
          "height": 187,
          "market_value": 6500000,
          "stats": {
            "saves": 3,
            "goals_prevented": -0.2938,
            "rating": 6.8513,
            "minutes": 90,
            "total_pass": 22,
            "accurate_pass": 17,
            "total_long_balls": 8,
            "accurate_long_balls": 3,
            "touches": 35,
            "clearances": 1,
            "ball_recovery": 9,
            "high_claims": 1,
            "punches": 1.244,
            "aerial_won": 0,
            "sweeper_actions": 2,
            "sweeper_accurate": 2,
            "saves_inside_box": 2,
            "possession_lost": 4.926,
            "duels_won": 1,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 16,
            "accurate_own_half_passes": 15,
            "gk_engine_opponent_lambda": 1.3425,
            "shots_faced": 12.4,
            "expected_saves": 3.04,
            "high_pressure_saves": 1.04,
            "opponent_faced": "Ante Budimir, Rubén García",
            "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": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Valencia",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 16,
                "interceptions": 1,
                "ball_recovery": 8,
                "goals_prevented": -0.6542
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 14,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 9,
                "saves": 4,
                "goals_prevented": -1.331
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416346,
              "match_date": "2026-09-16",
              "home_team": "FC Barcelona",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 19,
                "clearances": 3,
                "ball_recovery": 9,
                "saves": 3,
                "goals_prevented": -2.5941
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 90,
                "rating": 8.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 17,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 9,
                "saves": 7,
                "goals_prevented": 1.1052
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416321,
              "match_date": "2026-09-05",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 16,
                "clearances": 1,
                "ball_recovery": 20,
                "saves": 6,
                "goals_prevented": -0.8677
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416304,
              "match_date": "2026-08-28",
              "home_team": "Real Racing Club",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 14,
                "clearances": 1,
                "ball_recovery": 8,
                "saves": 5,
                "goals_prevented": -0.1012
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416300,
              "match_date": "2026-08-23",
              "home_team": "Getafe",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 14,
                "clearances": 4,
                "duels_won": 2,
                "ball_recovery": 10,
                "goals_prevented": -0.0081
              },
              "has_player_stats": true,
              "league_name": "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": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 16,
                "clearances": 1,
                "ball_recovery": 8,
                "saves": 5,
                "goals_prevented": -0.5844
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "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": 90,
                "rating": 6.1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 25,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 6,
                "saves": 2,
                "goals_prevented": -0.9823
              },
              "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": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 17,
                "clearances": 2,
                "ball_recovery": 5,
                "saves": 1,
                "goals_prevented": -0.7912
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 932,
            "combined_rank_score": 433.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 434.0,
            "sofascore_rating": 6.9111,
            "sofascore_appearances": 18.0,
            "fifa_rank": 433.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8513,
            "source_file": "data/player_rankings.csv",
            "player_name": "Julen Agirrezabala",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Karim Adeyemi",
                  "ranking": 927
                },
                {
                  "player_name": "Marlon Maranhão",
                  "ranking": 928
                },
                {
                  "player_name": "Islom Kenzhaboev",
                  "ranking": 929
                },
                {
                  "player_name": "Isco",
                  "ranking": 930
                },
                {
                  "player_name": "Karim Benzema",
                  "ranking": 931
                }
              ],
              "lower": [
                {
                  "player_name": "Koen Casteels",
                  "ranking": 933
                },
                {
                  "player_name": "Danilo Pereira",
                  "ranking": 934
                },
                {
                  "player_name": "David Soria",
                  "ranking": 935
                },
                {
                  "player_name": "Jasurbek Jaloliddinov",
                  "ranking": 936
                },
                {
                  "player_name": "Kalidou Koulibaly",
                  "ranking": 937
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.78,
          "history_matches": 26,
          "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": 26,
            "data_confidence": 0.78,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 0.9988,
            "fbref_prior_metrics": {
              "squad": "Racing Sant",
              "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 26 historical appearances across 3 target models; FBref 2026-2027 prior blended (La Liga, Racing Sant, 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.617,
                "goals_prevented": -0.2941,
                "rating": 6.8513,
                "minutes": 90.0,
                "total_pass": 21.6277,
                "accurate_pass": 16.7017,
                "total_long_balls": 7.8006,
                "accurate_long_balls": 2.8777,
                "touches": 34.8139,
                "clearances": 1.3875,
                "ball_recovery": 9.0354,
                "high_claims": 1.2533,
                "punches": 1.2455,
                "aerial_won": 0.377,
                "sweeper_actions": 1.6111,
                "sweeper_accurate": 1.5066,
                "saves_inside_box": 2.0408,
                "possession_lost": 4.9319,
                "duels_won": 0.5579,
                "duels_lost": 0.1409,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.1261,
                "total_own_half_passes": 16.0184,
                "accurate_own_half_passes": 15.1252
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 5,
                  "trained_at": "2026-10-17T10:04:09.876591+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 200,
                    "rows": 7041
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Valencia",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1522,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1294,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "FC Barcelona",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.11,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Deportivo Alavés",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0935,
                    "rating": 8.6
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Rayo Vallecano",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0795,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0675,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0574,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0488,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-01-03",
                    "opponent": "Celta Vigo",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0415,
                    "rating": 6.1
                  },
                  {
                    "match_date": "2025-12-19",
                    "opponent": "Mallorca",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.0353,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 1.0,
                  "accurateLongBalls": 2.8777,
                  "save_contribution": 2.6087,
                  "distribution_accuracy": 0.9477,
                  "accurateOwnHalfPasses": 15.1252,
                  "passValueNormalized": 0.0377,
                  "totalOwnHalfPasses": 16.0184
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.6169683933258057,
                    "model_output": 2.617,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "save_contribution",
                        "importance": 0.0393
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.039
                      },
                      {
                        "name": "saves",
                        "importance": 0.0355
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0354
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 2.941,
                      "items": [
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.1472
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0888
                        },
                        {
                          "name": "saves",
                          "contribution": 0.0404
                        },
                        {
                          "name": "save_contribution",
                          "contribution": 0.0385
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0347
                        }
                      ],
                      "others": -0.1322,
                      "total": 2.617,
                      "log_link": true,
                      "margin_base": 1.078763,
                      "item_margins": [
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.051355
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.032296
                        },
                        {
                          "name": "saves",
                          "margin": 0.014807
                        },
                        {
                          "name": "save_contribution",
                          "margin": 0.013942
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.012538
                        }
                      ],
                      "others_margin": -0.049307
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": -0.29413071274757385,
                    "model_output": -0.2941,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "aerialWon",
                        "importance": 0.0405
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.0401
                      },
                      {
                        "name": "goalkeeperValueNormalized",
                        "importance": 0.0394
                      },
                      {
                        "name": "totalOwnHalfPasses",
                        "importance": 0.0381
                      },
                      {
                        "name": "punches",
                        "importance": 0.0363
                      }
                    ],
                    "decomposition": {
                      "base": -0.0281,
                      "items": [
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": -0.0396
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0378
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0323
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0258
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0236
                        }
                      ],
                      "others": -0.1585,
                      "total": -0.2941,
                      "log_link": false,
                      "margin_base": -0.028113,
                      "item_margins": [
                        {
                          "name": "totalOwnHalfPasses",
                          "margin": -0.03955
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.037757
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.032266
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": 0.025833
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.023568
                        }
                      ],
                      "others_margin": -0.15871
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.8512983322143555,
                    "model_output": 6.8513,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0379
                      },
                      {
                        "name": "commanding_index",
                        "importance": 0.0375
                      },
                      {
                        "name": "accurateOwnHalfPasses",
                        "importance": 0.037
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0354
                      },
                      {
                        "name": "sweeper_accuracy",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 6.9974,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0567
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0317
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": -0.025
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": -0.024
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": -0.0236
                        }
                      ],
                      "others": -0.0985,
                      "total": 6.8513,
                      "log_link": false,
                      "margin_base": 6.997403,
                      "item_margins": [
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.056716
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.031736
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "margin": -0.02498
                        },
                        {
                          "name": "distribution_accuracy",
                          "margin": -0.023954
                        },
                        {
                          "name": "accurateLongBalls",
                          "margin": -0.023608
                        }
                      ],
                      "others_margin": -0.098545
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "starter",
                  "history_matches": 26,
                  "role_matches": 26,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9988, quality 0.481)",
              "stats": {
                "saves": 2.6138,
                "goals_prevented": -0.2938,
                "rating": 6.8513,
                "minutes": 90.0,
                "total_pass": 21.6017,
                "accurate_pass": 16.6817,
                "total_long_balls": 7.7912,
                "accurate_long_balls": 2.8742,
                "touches": 34.7721,
                "clearances": 1.3858,
                "ball_recovery": 9.0246,
                "high_claims": 1.2518,
                "punches": 1.244,
                "aerial_won": 0.3765,
                "sweeper_actions": 1.6092,
                "sweeper_accurate": 1.5048,
                "saves_inside_box": 2.0384,
                "possession_lost": 4.926,
                "duels_won": 0.5572,
                "duels_lost": 0.1407,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.1259,
                "total_own_half_passes": 15.9992,
                "accurate_own_half_passes": 15.107
              },
              "params": {
                "market_value_eur": 6500000,
                "quality_factor": 0.4805,
                "boost_factor": 0.9988,
                "reference_quality": 0.505,
                "history_matches": 26,
                "history_shrink": 0.1613,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0210)",
              "stats": {
                "saves": 2.6289,
                "goals_prevented": -0.2938,
                "rating": 6.8513,
                "minutes": 90.0,
                "total_pass": 21.6017,
                "accurate_pass": 16.6817,
                "total_long_balls": 7.7912,
                "accurate_long_balls": 2.8742,
                "touches": 34.7721,
                "clearances": 1.3858,
                "ball_recovery": 9.0246,
                "high_claims": 1.2518,
                "punches": 1.244,
                "aerial_won": 0.3765,
                "sweeper_actions": 1.6092,
                "sweeper_accurate": 1.5048,
                "saves_inside_box": 2.0384,
                "possession_lost": 4.926,
                "duels_won": 0.5572,
                "duels_lost": 0.1407,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.1372,
                "total_own_half_passes": 15.9992,
                "accurate_own_half_passes": 15.107
              },
              "params": {
                "blend_weight": 0.021,
                "history_matches": 26,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 1.0,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Racing Sant"
              },
              "changes": [
                {
                  "stat": "saves",
                  "before": 2.6138,
                  "after": 2.6289
                },
                {
                  "stat": "wasFouled",
                  "before": 0.1259,
                  "after": 0.1372
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 2.6289,
                "goals_prevented": -0.2938,
                "rating": 6.8513,
                "minutes": 90.0,
                "total_pass": 21.6017,
                "accurate_pass": 16.6817,
                "total_long_balls": 7.7912,
                "accurate_long_balls": 2.8742,
                "touches": 34.7721,
                "clearances": 1.3858,
                "ball_recovery": 9.0246,
                "high_claims": 1.2518,
                "punches": 1.244,
                "aerial_won": 0.3765,
                "sweeper_actions": 1.6092,
                "sweeper_accurate": 1.5048,
                "saves_inside_box": 2.0384,
                "possession_lost": 4.926,
                "duels_won": 0.5572,
                "duels_lost": 0.1407,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.1372,
                "total_own_half_passes": 15.9992,
                "accurate_own_half_passes": 15.107
              },
              "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.6289,
                "goals_prevented": -0.2938,
                "rating": 6.8513,
                "minutes": 90.0,
                "total_pass": 21.6017,
                "accurate_pass": 16.6817,
                "total_long_balls": 7.7912,
                "accurate_long_balls": 2.8742,
                "touches": 34.7721,
                "clearances": 1.3858,
                "ball_recovery": 9.0246,
                "high_claims": 1.2518,
                "punches": 1.244,
                "aerial_won": 0.3765,
                "sweeper_actions": 1.6092,
                "sweeper_accurate": 1.5048,
                "saves_inside_box": 2.0384,
                "possession_lost": 4.926,
                "duels_won": 0.5572,
                "duels_lost": 0.1407,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.1372,
                "total_own_half_passes": 15.9992,
                "accurate_own_half_passes": 15.107,
                "gk_engine_opponent_lambda": 1.3425,
                "shots_faced": 12.8,
                "expected_saves": 3.14,
                "high_pressure_saves": 1.07,
                "opponent_faced": "Ante Budimir, Rubén García",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ante Budimir, Rubén García",
                  "matchup_zone": "Goalkeeper shot-stopping context",
                  "opponent_lambda": 1.3425
                }
              }
            },
            {
              "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.6289,
                "goals_prevented": -0.2938,
                "rating": 6.8513,
                "minutes": 90.0,
                "total_pass": 21.6017,
                "accurate_pass": 16.6817,
                "total_long_balls": 7.7912,
                "accurate_long_balls": 2.8742,
                "touches": 34.7721,
                "clearances": 1.3858,
                "ball_recovery": 9.0246,
                "high_claims": 1.2518,
                "punches": 1.244,
                "aerial_won": 0.3765,
                "sweeper_actions": 1.6092,
                "sweeper_accurate": 1.5048,
                "saves_inside_box": 2.0384,
                "possession_lost": 4.926,
                "duels_won": 0.5572,
                "duels_lost": 0.1407,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.1372,
                "total_own_half_passes": 15.9992,
                "accurate_own_half_passes": 15.107,
                "gk_engine_opponent_lambda": 1.3425,
                "shots_faced": 12.8,
                "expected_saves": 3.14,
                "high_pressure_saves": 1.07,
                "opponent_faced": "Ante Budimir, Rubén García",
                "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.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "saves": 2.6289,
                "goals_prevented": -0.2938,
                "rating": 6.8513,
                "minutes": 90.0,
                "total_pass": 21.6017,
                "accurate_pass": 16.6817,
                "total_long_balls": 7.7912,
                "accurate_long_balls": 2.8742,
                "touches": 34.7721,
                "clearances": 1.3858,
                "ball_recovery": 9.0246,
                "high_claims": 1.2518,
                "punches": 1.244,
                "aerial_won": 0.3765,
                "sweeper_actions": 1.6092,
                "sweeper_accurate": 1.5048,
                "saves_inside_box": 2.0384,
                "possession_lost": 4.926,
                "duels_won": 0.5572,
                "duels_lost": 0.1407,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.1372,
                "total_own_half_passes": 15.9992,
                "accurate_own_half_passes": 15.107,
                "gk_engine_opponent_lambda": 1.3425,
                "shots_faced": 12.4,
                "expected_saves": 3.04,
                "high_pressure_saves": 1.04,
                "opponent_faced": "Ante Budimir, Rubén García",
                "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.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "scoreline_reset": true,
                "appearance_weight": 1.0
              },
              "changes": [
                {
                  "stat": "shots_faced",
                  "before": 12.8,
                  "after": 12.4
                },
                {
                  "stat": "expected_saves",
                  "before": 3.14,
                  "after": 3.04
                },
                {
                  "stat": "high_pressure_saves",
                  "before": 1.07,
                  "after": 1.04
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 82.0)",
              "stats": {
                "saves": 2.6289,
                "goals_prevented": -0.2938,
                "rating": 6.8513,
                "minutes": 90.0,
                "total_pass": 21.6017,
                "accurate_pass": 16.6817,
                "total_long_balls": 7.7912,
                "accurate_long_balls": 2.8742,
                "touches": 34.7721,
                "clearances": 1.3858,
                "ball_recovery": 9.0246,
                "high_claims": 1.2518,
                "punches": 1.244,
                "aerial_won": 0.3765,
                "sweeper_actions": 1.6092,
                "sweeper_accurate": 1.5048,
                "saves_inside_box": 2.0384,
                "possession_lost": 4.926,
                "duels_won": 0.5572,
                "duels_lost": 0.1407,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.1372,
                "total_own_half_passes": 15.9992,
                "accurate_own_half_passes": 15.107,
                "gk_engine_opponent_lambda": 1.3425,
                "shots_faced": 12.4,
                "expected_saves": 3.04,
                "high_pressure_saves": 1.04,
                "opponent_faced": "Ante Budimir, Rubén García",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 1.0,
                "creation_factor": 1.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 82.0
              },
              "params": {
                "match_squad_rank": 5,
                "squad_role": "starter",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 932,
                "fifa_rank": 433.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.6289,
                "goals_prevented": -0.2938,
                "rating": 6.8513,
                "minutes": 90.0,
                "total_pass": 21.6017,
                "accurate_pass": 16.6817,
                "total_long_balls": 7.7912,
                "accurate_long_balls": 2.8742,
                "touches": 34.7721,
                "clearances": 1.3858,
                "ball_recovery": 9.0246,
                "high_claims": 1.2518,
                "punches": 1.244,
                "aerial_won": 0.3765,
                "sweeper_actions": 1.6092,
                "sweeper_accurate": 1.5048,
                "saves_inside_box": 2.0384,
                "possession_lost": 4.926,
                "duels_won": 0.5572,
                "duels_lost": 0.1407,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.1372,
                "total_own_half_passes": 15.9992,
                "accurate_own_half_passes": 15.107,
                "gk_engine_opponent_lambda": 1.3425,
                "shots_faced": 12.4,
                "expected_saves": 3.04,
                "high_pressure_saves": 1.04,
                "opponent_faced": "Ante Budimir, Rubén García",
                "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.5727,
                "weight_share": 0.0,
                "finishing_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.6289,
                "goals_prevented": -0.2938,
                "rating": 6.8513,
                "minutes": 90.0,
                "total_pass": 21.6017,
                "accurate_pass": 16.6817,
                "total_long_balls": 7.7912,
                "accurate_long_balls": 2.8742,
                "touches": 34.7721,
                "clearances": 1.3858,
                "ball_recovery": 9.0246,
                "high_claims": 1.2518,
                "punches": 1.244,
                "aerial_won": 0.3765,
                "sweeper_actions": 1.6092,
                "sweeper_accurate": 1.5048,
                "saves_inside_box": 2.0384,
                "possession_lost": 4.926,
                "duels_won": 0.5572,
                "duels_lost": 0.1407,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "fouls": 0.0,
                "fouls_drawn": 0.1372,
                "total_own_half_passes": 15.9992,
                "accurate_own_half_passes": 15.107,
                "gk_engine_opponent_lambda": 1.3425,
                "shots_faced": 12.4,
                "expected_saves": 3.04,
                "high_pressure_saves": 1.04,
                "opponent_faced": "Ante Budimir, Rubén García",
                "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": 0.9036,
                "weight_share": 0.0,
                "creation_factor": 1.0,
                "appearance_weight": 1.0,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "bench_players": {
        "Simon Eriksson": {
          "player_id": 1472960,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 1,
          "height": 194,
          "market_value": 2100000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.022,
            "rating": 6.8,
            "minutes": 4,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "touches": 2,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.0146,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.1171,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "bench_appearance_probability": 0.109,
            "bench_expected_minutes": 4.39,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.257,
            "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": 69.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 5395,
            "combined_rank_score": 3586.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 6957.0,
            "fifa_overall": 69.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "Simon Eriksson",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kerem Demirbay",
                  "ranking": 5390
                },
                {
                  "player_name": "Mbaye Diagne",
                  "ranking": 5391
                },
                {
                  "player_name": "Cengiz Ünder",
                  "ranking": 5392
                },
                {
                  "player_name": "Christopher Opéri",
                  "ranking": 5393
                },
                {
                  "player_name": "Levent Mercan",
                  "ranking": 5394
                }
              ],
              "lower": [
                {
                  "player_name": "Jiří Letáček",
                  "ranking": 5396
                },
                {
                  "player_name": "Emin Bayram",
                  "ranking": 5397
                },
                {
                  "player_name": "Anthony Musaba",
                  "ranking": 5398
                },
                {
                  "player_name": "Archie Brown",
                  "ranking": 5399
                },
                {
                  "player_name": "Gift Orban",
                  "ranking": 5400
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "G_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "bench_expected_minutes": 4.392222187561249,
            "bench_appearance_prob": 0.10873737216187492,
            "market_value_adjustment": 0.4374,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection from market-value prior (€2,100,000) scaled to 4.4 expected mins."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position G (quality 0.44)",
              "stats": {
                "saves": 2.9,
                "goals_prevented": 0.45,
                "rating": 6.8,
                "minutes": 90.0,
                "total_pass": 27.0,
                "accurate_pass": 20.0,
                "total_long_balls": 8.0,
                "accurate_long_balls": 4.0,
                "touches": 32.0,
                "clearances": 0.9,
                "ball_recovery": 1.2,
                "high_claims": 0.5,
                "punches": 0.3,
                "aerial_won": 0.6,
                "sweeper_actions": 1.2,
                "sweeper_accurate": 0.7,
                "saves_inside_box": 1.2,
                "possession_lost": 2.4,
                "duels_won": 0.4,
                "duels_lost": 0.2,
                "total_contest": 0.4,
                "won_contest": 0.2,
                "fouls": 0.2,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 21.0,
                "accurate_own_half_passes": 16.0
              },
              "params": {
                "market_value_eur": 2100000,
                "quality_factor": 0.4374
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 90.0 to 4.4 expected minutes (appearance prob 0.11)",
              "stats": {
                "saves": 0.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39
              },
              "params": {
                "expected_minutes": 4.39,
                "projection_minutes": 90.0,
                "minutes_scale": 0.0488,
                "appearance_probability": 0.109
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "saves": 0.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "appearance_probability": 0.109,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 69.0)",
              "stats": {
                "saves": 0.1415,
                "goals_prevented": 0.022,
                "rating": 6.8,
                "minutes": 4.39,
                "total_pass": 1.3177,
                "accurate_pass": 0.976,
                "total_long_balls": 0.3904,
                "accurate_long_balls": 0.1952,
                "touches": 1.5617,
                "clearances": 0.0439,
                "ball_recovery": 0.0586,
                "high_claims": 0.0244,
                "punches": 0.0146,
                "aerial_won": 0.0293,
                "sweeper_actions": 0.0586,
                "sweeper_accurate": 0.0342,
                "saves_inside_box": 0.0586,
                "possession_lost": 0.1171,
                "duels_won": 0.0195,
                "duels_lost": 0.0098,
                "total_contest": 0.0195,
                "won_contest": 0.0098,
                "fouls": 0.0098,
                "fouls_drawn": 0.0,
                "total_own_half_passes": 1.0249,
                "accurate_own_half_passes": 0.7808,
                "bench_appearance_probability": 0.109,
                "bench_expected_minutes": 4.39,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "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": 69.0
              },
              "params": {
                "match_squad_rank": 7,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 5395,
                "fifa_rank": 6957.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 69.0
              }
            }
          ]
        },
        "Facundo González": {
          "player_id": 1085103,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 16,
          "height": 193,
          "market_value": 3100000,
          "stats": {
            "interceptions": 0,
            "tackles": 1,
            "tackles_won": 0,
            "clearances": 2,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.6212,
            "minutes": 14,
            "total_pass": 19,
            "accurate_pass": 15,
            "duels_won": 2,
            "total_long_balls": 3,
            "accurate_long_balls": 0,
            "total_own_half_passes": 14,
            "accurate_own_half_passes": 13,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 28,
            "possession_lost": 4.0342,
            "dispossessed": 0.0,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0008,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 5,
            "total_progression": 17,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.299,
            "bench_expected_minutes": 13.58,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.257,
            "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": 69.0
          },
          "latest_10_games": [
            {
              "match_id": 16416346,
              "match_date": "2026-09-16",
              "home_team": "FC Barcelona",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 86,
                "rating": 6.0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 20,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 8,
                "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": 16416321,
              "match_date": "2026-09-05",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 55,
                "rating": 5.9,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 15,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "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": 16416304,
              "match_date": "2026-08-28",
              "home_team": "Real Racing Club",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0022,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 31,
                "interceptions": 1,
                "clearances": 6,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416300,
              "match_date": "2026-08-23",
              "home_team": "Getafe",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Getafe",
              "stats": {
                "minutes": 9,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0017,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 6,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 13,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 2,
                "tackles": 1,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 5579,
            "combined_rank_score": 3836.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 698.0,
            "sofascore_rating": 6.7,
            "sofascore_appearances": 1.0,
            "fifa_rank": 6974.0,
            "fifa_overall": 69.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.6212,
            "source_file": "data/player_rankings.csv",
            "player_name": "Facundo González",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ivan Schranz",
                  "ranking": 5574
                },
                {
                  "player_name": "Marcel Tisserand",
                  "ranking": 5575
                },
                {
                  "player_name": "Alex Grant",
                  "ranking": 5576
                },
                {
                  "player_name": "Carlos Rivero",
                  "ranking": 5577
                },
                {
                  "player_name": "Gonzalo Perez",
                  "ranking": 5578
                }
              ],
              "lower": [
                {
                  "player_name": "Cristián Cuevas",
                  "ranking": 5580
                },
                {
                  "player_name": "Paweł Wszołek",
                  "ranking": 5581
                },
                {
                  "player_name": "Giorgi Kvernadze",
                  "ranking": 5582
                },
                {
                  "player_name": "Mateusz Wieteska",
                  "ranking": 5583
                },
                {
                  "player_name": "Ondrej Lingr",
                  "ranking": 5584
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.562,
          "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.562,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 13.577143516617772,
            "bench_appearance_prob": 0.29896106893717145,
            "market_value_adjustment": 0.9901,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost D_service (5 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.4177,
                "tackles": 0.5386,
                "tackles_won": 0.3002,
                "clearances": 1.6944,
                "aerial_won": 0.534,
                "total_shots": 0.136,
                "rating": 6.6212,
                "minutes": 14.42,
                "total_pass": 20.0255,
                "accurate_pass": 15.8636,
                "duels_won": 2.5168,
                "total_long_balls": 2.8174,
                "accurate_long_balls": 0.4645,
                "total_own_half_passes": 14.524,
                "accurate_own_half_passes": 14.1636,
                "total_opp_half_passes": 5.5015,
                "accurate_opp_half_passes": 1.7001,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 29.8406,
                "possession_lost": 4.3274,
                "dispossessed": 0.0,
                "duels_lost": 2.768,
                "aerial_lost": 1.1148,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.95,
                "challenges_lost": 0.1408,
                "fouls": 1.5125,
                "fouls_drawn": 0.6188,
                "blocks": 0.9289,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0008,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.5004,
                "total_progression": 18.5478,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.136
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:05:00.533351+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-16",
                    "opponent": "FC Barcelona",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.2696,
                    "rating": 6.0
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Rayo Vallecano",
                    "minutes": 55.0,
                    "is_starting": true,
                    "weight": 0.2292,
                    "rating": 5.9
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1948,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Getafe",
                    "minutes": 9.0,
                    "is_starting": false,
                    "weight": 0.1656,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Villarreal",
                    "minutes": 13.0,
                    "is_starting": false,
                    "weight": 0.1408,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 5.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 4.3836,
                  "aerialWon": 0.7596,
                  "totalClearance_p90": 5.901,
                  "totalTackle": 1.1384,
                  "defensive_actions": 2.3309
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.41772010922431946,
                    "model_output": 0.4177,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4735
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0441
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0156
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0138
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0091
                        }
                      ],
                      "others": -0.0029,
                      "total": 0.4177,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.798432
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.107828
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.036778
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.032654
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.021336
                        }
                      ],
                      "others_margin": -0.007073
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.5386273264884949,
                    "model_output": 0.5386,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7872
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0305
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0192
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0168
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.013
                        }
                      ],
                      "others": -0.0198,
                      "total": 0.5386,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.834129
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.051792
                        },
                        {
                          "name": "press_vulnerability",
                          "margin": -0.033977
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": 0.029776
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.023012
                        }
                      ],
                      "others_margin": -0.035983
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.30024516582489014,
                    "model_output": 0.3002,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4834
                        },
                        {
                          "name": "challengeLost",
                          "contribution": -0.0219
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": -0.0122
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0101
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0084
                        }
                      ],
                      "others": -0.018,
                      "total": 0.3002,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.8345
                        },
                        {
                          "name": "challengeLost",
                          "margin": -0.060741
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": -0.035477
                        },
                        {
                          "name": "totalClearance_p90",
                          "margin": -0.030513
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.025933
                        }
                      ],
                      "others_margin": -0.058363
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.6943665742874146,
                    "model_output": 1.6944,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.1991
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.237
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.063
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0651
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0546
                        }
                      ],
                      "others": 0.0411,
                      "total": 1.6944,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.023404
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.175724
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.04196
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.041586
                        },
                        {
                          "name": "touches",
                          "margin": 0.033593
                        }
                      ],
                      "others_margin": 0.024494
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.5340129733085632,
                    "model_output": 0.534,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.831
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.121
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0428
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.028
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.021
                        }
                      ],
                      "others": 0.0589,
                      "total": 0.534,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.924631
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.250282
                        },
                        {
                          "name": "totalClearance",
                          "margin": 0.095939
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.058103
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.043286
                        }
                      ],
                      "others_margin": 0.116688
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.13598085939884186,
                    "model_output": 0.136,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1718
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0731
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0231
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0106
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0097
                        }
                      ],
                      "others": -0.0502,
                      "total": 0.136,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.171798
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.073116
                        },
                        {
                          "name": "rating",
                          "margin": -0.023087
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.010602
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.00972
                        }
                      ],
                      "others_margin": -0.050197
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.621153831481934,
                    "model_output": 6.6212,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "totalPass",
                          "contribution": -0.0364
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0341
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.0194
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0134
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0117
                        }
                      ],
                      "others": -0.0485,
                      "total": 6.6212,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "totalPass",
                          "margin": -0.036366
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.034125
                        },
                        {
                          "name": "long_ball_accuracy",
                          "margin": -0.019361
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.013449
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.011745
                        }
                      ],
                      "others_margin": -0.048503
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 5,
                  "role_matches": 2,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9901, quality 0.439)",
              "stats": {
                "interceptions": 0.4136,
                "tackles": 0.5333,
                "tackles_won": 0.2973,
                "clearances": 1.6776,
                "aerial_won": 0.5287,
                "total_shots": 0.1347,
                "rating": 6.6212,
                "minutes": 14.42,
                "total_pass": 19.8272,
                "accurate_pass": 15.7066,
                "duels_won": 2.4919,
                "total_long_balls": 2.7895,
                "accurate_long_balls": 0.4599,
                "total_own_half_passes": 14.3802,
                "accurate_own_half_passes": 14.0234,
                "total_opp_half_passes": 5.447,
                "accurate_opp_half_passes": 1.6833,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 29.5452,
                "possession_lost": 4.2846,
                "dispossessed": 0.0,
                "duels_lost": 2.7406,
                "aerial_lost": 1.1038,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.9406,
                "challenges_lost": 0.1394,
                "fouls": 1.4975,
                "fouls_drawn": 0.6127,
                "blocks": 0.9197,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0008,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.4459,
                "total_progression": 18.3642,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1347
              },
              "params": {
                "market_value_eur": 3100000,
                "quality_factor": 0.4387,
                "boost_factor": 0.9901,
                "reference_quality": 0.505,
                "history_matches": 5,
                "history_shrink": 0.5,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 14.4 to 13.6 expected minutes (appearance prob 0.30)",
              "stats": {
                "interceptions": 0.3894,
                "tackles": 0.5021,
                "tackles_won": 0.2799,
                "clearances": 1.5795,
                "aerial_won": 0.4978,
                "total_shots": 0.1268,
                "rating": 6.6212,
                "minutes": 13.58,
                "total_pass": 18.6683,
                "accurate_pass": 14.7885,
                "duels_won": 2.3462,
                "total_long_balls": 2.6265,
                "accurate_long_balls": 0.433,
                "total_own_half_passes": 13.5397,
                "accurate_own_half_passes": 13.2037,
                "total_opp_half_passes": 5.1286,
                "accurate_opp_half_passes": 1.5849,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.8183,
                "possession_lost": 4.0342,
                "dispossessed": 0.0,
                "duels_lost": 2.5804,
                "aerial_lost": 1.1038,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.8856,
                "challenges_lost": 0.1394,
                "fouls": 1.41,
                "fouls_drawn": 0.5769,
                "blocks": 0.8659,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0008,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.1276,
                "total_progression": 17.2908,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1268,
                "bench_appearance_probability": 0.299,
                "bench_expected_minutes": 13.58
              },
              "params": {
                "expected_minutes": 13.58,
                "projection_minutes": 14.42,
                "minutes_scale": 0.9415,
                "appearance_probability": 0.299
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.3894,
                "tackles": 0.5021,
                "tackles_won": 0.2799,
                "clearances": 1.5795,
                "aerial_won": 0.4978,
                "total_shots": 0.1268,
                "rating": 6.6212,
                "minutes": 13.58,
                "total_pass": 18.6683,
                "accurate_pass": 14.7885,
                "duels_won": 2.3462,
                "total_long_balls": 2.6265,
                "accurate_long_balls": 0.433,
                "total_own_half_passes": 13.5397,
                "accurate_own_half_passes": 13.2037,
                "total_opp_half_passes": 5.1286,
                "accurate_opp_half_passes": 1.5849,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.8183,
                "possession_lost": 4.0342,
                "dispossessed": 0.0,
                "duels_lost": 2.5804,
                "aerial_lost": 1.1038,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.8856,
                "challenges_lost": 0.1394,
                "fouls": 1.41,
                "fouls_drawn": 0.5769,
                "blocks": 0.8659,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0008,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.1276,
                "total_progression": 17.2908,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1268,
                "bench_appearance_probability": 0.299,
                "bench_expected_minutes": 13.58
              },
              "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.3894,
                "tackles": 0.5021,
                "tackles_won": 0.2799,
                "clearances": 1.5795,
                "aerial_won": 0.4978,
                "total_shots": 0.1268,
                "rating": 6.6212,
                "minutes": 13.58,
                "total_pass": 18.6683,
                "accurate_pass": 14.7885,
                "duels_won": 2.3462,
                "total_long_balls": 2.6265,
                "accurate_long_balls": 0.433,
                "total_own_half_passes": 13.5397,
                "accurate_own_half_passes": 13.2037,
                "total_opp_half_passes": 5.1286,
                "accurate_opp_half_passes": 1.5849,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.8183,
                "possession_lost": 4.0342,
                "dispossessed": 0.0,
                "duels_lost": 2.5804,
                "aerial_lost": 1.1038,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.8856,
                "challenges_lost": 0.1394,
                "fouls": 1.41,
                "fouls_drawn": 0.5769,
                "blocks": 0.8659,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0008,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.1276,
                "total_progression": 17.2908,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1268,
                "bench_appearance_probability": 0.299,
                "bench_expected_minutes": 13.58,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "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.299,
                "projected_substitutes": 2,
                "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 69.0)",
              "stats": {
                "interceptions": 0.3894,
                "tackles": 0.5021,
                "tackles_won": 0.2799,
                "clearances": 1.5795,
                "aerial_won": 0.4978,
                "total_shots": 0.1268,
                "rating": 6.6212,
                "minutes": 13.58,
                "total_pass": 18.6683,
                "accurate_pass": 14.7885,
                "duels_won": 2.3462,
                "total_long_balls": 2.6265,
                "accurate_long_balls": 0.433,
                "total_own_half_passes": 13.5397,
                "accurate_own_half_passes": 13.2037,
                "total_opp_half_passes": 5.1286,
                "accurate_opp_half_passes": 1.5849,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 27.8183,
                "possession_lost": 4.0342,
                "dispossessed": 0.0,
                "duels_lost": 2.5804,
                "aerial_lost": 1.1038,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.8856,
                "challenges_lost": 0.1394,
                "fouls": 1.41,
                "fouls_drawn": 0.5769,
                "blocks": 0.8659,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0008,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 5.1276,
                "total_progression": 17.2908,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1268,
                "bench_appearance_probability": 0.299,
                "bench_expected_minutes": 13.58,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "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": 69.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": 5579,
                "fifa_rank": 6974.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 69.0
              }
            }
          ]
        },
        "Pedro Felipe": {
          "player_id": 1485292,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 22,
          "height": 190,
          "market_value": 1500000,
          "stats": {
            "interceptions": 0,
            "tackles": 1,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 0,
            "total_shots": 0,
            "rating": 6.5357,
            "minutes": 14,
            "total_pass": 6,
            "accurate_pass": 5,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 12,
            "possession_lost": 1.8779,
            "dispossessed": 0.0,
            "duels_lost": 2,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assist_rate": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0001,
            "shots_on_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 3,
            "total_progression": 5,
            "progressive_carries": 0,
            "key_pass": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.299,
            "bench_expected_minutes": 13.57,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.257,
            "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": 16416346,
              "match_date": "2026-09-16",
              "home_team": "FC Barcelona",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 59,
                "rating": 5.2,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 10,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 4,
                "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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "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": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 16,
                "rating": 6.7,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 2,
                "clearances": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1780,
            "combined_rank_score": 964.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 698.0,
            "sofascore_rating": 6.7,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1231.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.5357,
            "source_file": "data/player_rankings.csv",
            "player_name": "Pedro Felipe",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Emil Tsenov",
                  "ranking": 1775
                },
                {
                  "player_name": "Maksim Myakish",
                  "ranking": 1776
                },
                {
                  "player_name": "Jun'ai Byfield",
                  "ranking": 1777
                },
                {
                  "player_name": "Nemanja Gudelj",
                  "ranking": 1778
                },
                {
                  "player_name": "Jon Guridi",
                  "ranking": 1779
                }
              ],
              "lower": [
                {
                  "player_name": "Nico Guillén",
                  "ranking": 1781
                },
                {
                  "player_name": "Gabriel Pires",
                  "ranking": 1782
                },
                {
                  "player_name": "Yuri",
                  "ranking": 1783
                },
                {
                  "player_name": "William Furtado",
                  "ranking": 1784
                },
                {
                  "player_name": "Carlos Del Valle",
                  "ranking": 1785
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "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": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 13.572222187561248,
            "bench_appearance_prob": 0.2987373721618749,
            "market_value_adjustment": 0.9873,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost D_service (3 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.3214,
                "tackles": 0.6452,
                "tackles_won": 0.4014,
                "clearances": 0.7463,
                "aerial_won": 0.4363,
                "total_shots": 0.1215,
                "rating": 6.5357,
                "minutes": 12.33,
                "total_pass": 5.8377,
                "accurate_pass": 4.7794,
                "duels_won": 0.7775,
                "total_long_balls": 0.3304,
                "accurate_long_balls": 0.3304,
                "total_own_half_passes": 4.7298,
                "accurate_own_half_passes": 4.4489,
                "total_opp_half_passes": 1.1079,
                "accurate_opp_half_passes": 0.3304,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.6754,
                "possession_lost": 1.7279,
                "dispossessed": 0.0,
                "duels_lost": 1.9436,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7191,
                "challenges_lost": 0.7775,
                "fouls": 1.1662,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0001,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.447,
                "total_progression": 4.6827,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1215
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:05:00.533351+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 625,
                    "rows": 21030
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-16",
                    "opponent": "FC Barcelona",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 5.2
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Deportivo Alavés",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.3304,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Villarreal",
                    "minutes": 16.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "totalClearance": 1.8358,
                  "aerialWon": 0.0,
                  "totalClearance_p90": 3.9517,
                  "totalTackle": 0.7775,
                  "defensive_actions": 0.7775
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.32144275307655334,
                    "model_output": 0.3214,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2924
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0396
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0252
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0247
                      },
                      {
                        "name": "touches",
                        "importance": 0.0228
                      }
                    ],
                    "decomposition": {
                      "base": 0.8609,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4787
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": -0.0329
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0153
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0131
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0117
                        }
                      ],
                      "others": -0.0374,
                      "total": 0.3214,
                      "log_link": true,
                      "margin_base": -0.149807,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.812101
                        },
                        {
                          "name": "interceptionWon",
                          "margin": -0.089946
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.044855
                        },
                        {
                          "name": "rating",
                          "margin": 0.038402
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": 0.033178
                        }
                      ],
                      "others_margin": -0.109807
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 0.6451594829559326,
                    "model_output": 0.6452,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2589
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0677
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.049
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.044
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0277
                      }
                    ],
                    "decomposition": {
                      "base": 1.3915,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.7505
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0275
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": -0.022
                        },
                        {
                          "name": "totalTackle",
                          "contribution": -0.0199
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0183
                        }
                      ],
                      "others": 0.0003,
                      "total": 0.6452,
                      "log_link": true,
                      "margin_base": 0.330386,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.775077
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.042062
                        },
                        {
                          "name": "totalTackle_p90",
                          "margin": -0.03349
                        },
                        {
                          "name": "totalTackle",
                          "margin": -0.031298
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.028725
                        }
                      ],
                      "others_margin": 0.000435
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.4013734757900238,
                    "model_output": 0.4014,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2078
                      },
                      {
                        "name": "totalTackle",
                        "importance": 0.0673
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0422
                      },
                      {
                        "name": "totalTackle_p90",
                        "importance": 0.0415
                      },
                      {
                        "name": "press_vulnerability",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.8542,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4753
                        },
                        {
                          "name": "challengeLost",
                          "contribution": 0.0233
                        },
                        {
                          "name": "errorLeadToAShot",
                          "contribution": -0.02
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0134
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0126
                        }
                      ],
                      "others": 0.0184,
                      "total": 0.4014,
                      "log_link": true,
                      "margin_base": -0.157629,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.812822
                        },
                        {
                          "name": "challengeLost",
                          "margin": 0.059594
                        },
                        {
                          "name": "errorLeadToAShot",
                          "margin": -0.05107
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": 0.034585
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.032246
                        }
                      ],
                      "others_margin": 0.046725
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 0.7463424801826477,
                    "model_output": 0.7463,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2949
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.1597
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0875
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0328
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0204
                      }
                    ],
                    "decomposition": {
                      "base": 3.4327,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -2.3206
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.2039
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.1502
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0448
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0401
                        }
                      ],
                      "others": -0.007,
                      "total": 0.7463,
                      "log_link": true,
                      "margin_base": 1.233356,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -1.127096
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.202518
                        },
                        {
                          "name": "totalLongBalls",
                          "margin": -0.18071
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.060874
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.054698
                        }
                      ],
                      "others_margin": -0.009427
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.4362521767616272,
                    "model_output": 0.4363,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1614
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.1583
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0863
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0406
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0302
                      }
                    ],
                    "decomposition": {
                      "base": 1.3773,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.8138
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1599
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0376
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0333
                        },
                        {
                          "name": "rating",
                          "contribution": 0.0314
                        }
                      ],
                      "others": -0.003,
                      "total": 0.4363,
                      "log_link": true,
                      "margin_base": 0.320134,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.893778
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.333761
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": 0.088993
                        },
                        {
                          "name": "totalClearance",
                          "margin": -0.078375
                        },
                        {
                          "name": "rating",
                          "margin": 0.07412
                        }
                      ],
                      "others_margin": -0.006869
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.12150128930807114,
                    "model_output": 0.1215,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.105
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0687
                      },
                      {
                        "name": "history_matches",
                        "importance": 0.033
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0307
                      },
                      {
                        "name": "rating",
                        "importance": 0.0296
                      }
                    ],
                    "decomposition": {
                      "base": 0.4745,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1826
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0773
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0235
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0101
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0096
                        }
                      ],
                      "others": -0.0499,
                      "total": 0.1215,
                      "log_link": false,
                      "margin_base": 0.474501,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.182601
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.077295
                        },
                        {
                          "name": "rating",
                          "margin": -0.023498
                        },
                        {
                          "name": "progressive_carries_p90",
                          "margin": -0.010109
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.009565
                        }
                      ],
                      "others_margin": -0.049932
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.535727500915527,
                    "model_output": 6.5357,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0634
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0627
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0603
                      },
                      {
                        "name": "touches",
                        "importance": 0.0395
                      },
                      {
                        "name": "rating",
                        "importance": 0.0354
                      }
                    ],
                    "decomposition": {
                      "base": 6.7847,
                      "items": [
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0494
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0392
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0341
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0172
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0157
                        }
                      ],
                      "others": -0.0934,
                      "total": 6.5357,
                      "log_link": false,
                      "margin_base": 6.784704,
                      "item_margins": [
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.049415
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.039236
                        },
                        {
                          "name": "accuratePass",
                          "margin": -0.034121
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.017239
                        },
                        {
                          "name": "rating",
                          "margin": -0.015691
                        }
                      ],
                      "others_margin": -0.093273
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 3,
                  "role_matches": 1,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9873, quality 0.437)",
              "stats": {
                "interceptions": 0.3174,
                "tackles": 0.637,
                "tackles_won": 0.3963,
                "clearances": 0.7369,
                "aerial_won": 0.4307,
                "total_shots": 0.12,
                "rating": 6.5357,
                "minutes": 12.33,
                "total_pass": 5.7636,
                "accurate_pass": 4.7187,
                "duels_won": 0.7676,
                "total_long_balls": 0.3262,
                "accurate_long_balls": 0.3262,
                "total_own_half_passes": 4.6697,
                "accurate_own_half_passes": 4.3924,
                "total_opp_half_passes": 1.0938,
                "accurate_opp_half_passes": 0.3262,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 10.5398,
                "possession_lost": 1.706,
                "dispossessed": 0.0,
                "duels_lost": 1.9189,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.71,
                "challenges_lost": 0.7676,
                "fouls": 1.1514,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0001,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.4159,
                "total_progression": 4.6232,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.12
              },
              "params": {
                "market_value_eur": 1500000,
                "quality_factor": 0.4374,
                "boost_factor": 0.9873,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 12.3 to 13.6 expected minutes (appearance prob 0.30)",
              "stats": {
                "interceptions": 0.3494,
                "tackles": 0.7012,
                "tackles_won": 0.4362,
                "clearances": 0.8111,
                "aerial_won": 0.4741,
                "total_shots": 0.1321,
                "rating": 6.5357,
                "minutes": 13.57,
                "total_pass": 6.3443,
                "accurate_pass": 5.1941,
                "duels_won": 0.8449,
                "total_long_balls": 0.3591,
                "accurate_long_balls": 0.3591,
                "total_own_half_passes": 5.1402,
                "accurate_own_half_passes": 4.8349,
                "total_opp_half_passes": 1.204,
                "accurate_opp_half_passes": 0.3591,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 11.6017,
                "possession_lost": 1.8779,
                "dispossessed": 0.0,
                "duels_lost": 2.1122,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7815,
                "challenges_lost": 0.7676,
                "fouls": 1.2674,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0001,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.6593,
                "total_progression": 5.089,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1321,
                "bench_appearance_probability": 0.299,
                "bench_expected_minutes": 13.57
              },
              "params": {
                "expected_minutes": 13.57,
                "projection_minutes": 12.33,
                "minutes_scale": 1.1007,
                "appearance_probability": 0.299
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0.3494,
                "tackles": 0.7012,
                "tackles_won": 0.4362,
                "clearances": 0.8111,
                "aerial_won": 0.4741,
                "total_shots": 0.1321,
                "rating": 6.5357,
                "minutes": 13.57,
                "total_pass": 6.3443,
                "accurate_pass": 5.1941,
                "duels_won": 0.8449,
                "total_long_balls": 0.3591,
                "accurate_long_balls": 0.3591,
                "total_own_half_passes": 5.1402,
                "accurate_own_half_passes": 4.8349,
                "total_opp_half_passes": 1.204,
                "accurate_opp_half_passes": 0.3591,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 11.6017,
                "possession_lost": 1.8779,
                "dispossessed": 0.0,
                "duels_lost": 2.1122,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7815,
                "challenges_lost": 0.7676,
                "fouls": 1.2674,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goals": 0.0,
                "goal_rate": 0.0,
                "assists": 0.0,
                "assist_rate": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0001,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.6593,
                "total_progression": 5.089,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1321,
                "bench_appearance_probability": 0.299,
                "bench_expected_minutes": 13.57
              },
              "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.3494,
                "tackles": 0.7012,
                "tackles_won": 0.4362,
                "clearances": 0.8111,
                "aerial_won": 0.4741,
                "total_shots": 0.1321,
                "rating": 6.5357,
                "minutes": 13.57,
                "total_pass": 6.3443,
                "accurate_pass": 5.1941,
                "duels_won": 0.8449,
                "total_long_balls": 0.3591,
                "accurate_long_balls": 0.3591,
                "total_own_half_passes": 5.1402,
                "accurate_own_half_passes": 4.8349,
                "total_opp_half_passes": 1.204,
                "accurate_opp_half_passes": 0.3591,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 11.6017,
                "possession_lost": 1.8779,
                "dispossessed": 0.0,
                "duels_lost": 2.1122,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7815,
                "challenges_lost": 0.7676,
                "fouls": 1.2674,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0001,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.6593,
                "total_progression": 5.089,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1321,
                "bench_appearance_probability": 0.299,
                "bench_expected_minutes": 13.57,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "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.299,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 18 by projected rating, fifa_overall 78.0)",
              "stats": {
                "interceptions": 0.3494,
                "tackles": 0.7012,
                "tackles_won": 0.4362,
                "clearances": 0.8111,
                "aerial_won": 0.4741,
                "total_shots": 0.1321,
                "rating": 6.5357,
                "minutes": 13.57,
                "total_pass": 6.3443,
                "accurate_pass": 5.1941,
                "duels_won": 0.8449,
                "total_long_balls": 0.3591,
                "accurate_long_balls": 0.3591,
                "total_own_half_passes": 5.1402,
                "accurate_own_half_passes": 4.8349,
                "total_opp_half_passes": 1.204,
                "accurate_opp_half_passes": 0.3591,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 11.6017,
                "possession_lost": 1.8779,
                "dispossessed": 0.0,
                "duels_lost": 2.1122,
                "aerial_lost": 0.0,
                "total_contest": 0.0,
                "won_contest": 0.0,
                "ball_recovery": 0.7815,
                "challenges_lost": 0.7676,
                "fouls": 1.2674,
                "fouls_drawn": 0.0,
                "blocks": 0.0,
                "goal_rate": 0.0,
                "goals": 0,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0001,
                "shots_on_target": 0.0,
                "big_chances_created": 0.0,
                "xgot": 0.0,
                "ball_carries": 2.6593,
                "total_progression": 5.089,
                "progressive_carries": 0.0,
                "key_pass": 0.0,
                "shots_off_target": 0.1321,
                "bench_appearance_probability": 0.299,
                "bench_expected_minutes": 13.57,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "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": 18,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 1780,
                "fifa_rank": 1231.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 78.0
              }
            }
          ]
        },
        "Gustavo Puerta": {
          "player_id": 1174889,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 8,
          "height": 171,
          "market_value": 19200000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0414,
            "assist_rate": 0.0529,
            "assists": 0,
            "expected_goals": 0.0308,
            "goal_rate": 0.0575,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.989,
            "minutes": 23,
            "total_pass": 72,
            "accurate_pass": 66,
            "duels_won": 8,
            "total_long_balls": 2,
            "accurate_long_balls": 2,
            "total_own_half_passes": 34,
            "accurate_own_half_passes": 31,
            "total_opp_half_passes": 38,
            "accurate_opp_half_passes": 35,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 99,
            "possession_lost": 14.4497,
            "dispossessed": 1.4194,
            "duels_lost": 11,
            "aerial_won": 0,
            "aerial_lost": 2,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 3,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 4,
            "fouls_drawn": 4,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 26,
            "total_progression": 55,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.322,
            "bench_expected_minutes": 22.71,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.257,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16416304,
              "match_date": "2026-08-28",
              "home_team": "Real Racing Club",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Elche",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.2809,
                "total_shots": 0,
                "total_pass": 62,
                "accurate_pass": 53,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "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": 16416300,
              "match_date": "2026-08-23",
              "home_team": "Getafe",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Getafe",
              "stats": {
                "minutes": 88,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0288,
                "total_shots": 0,
                "total_pass": 51,
                "accurate_pass": 49,
                "tackles": 3,
                "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": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0527,
                "expected_assists": 0.0891,
                "total_shots": 2,
                "total_pass": 63,
                "accurate_pass": 61,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 10
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3575,
            "combined_rank_score": 1536.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2915.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.989,
            "source_file": "data/player_rankings.csv",
            "player_name": "Gustavo Puerta",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Philip Zinckernagel",
                  "ranking": 3570
                },
                {
                  "player_name": "Cristian Roldan",
                  "ranking": 3571
                },
                {
                  "player_name": "Joaquín Pereyra",
                  "ranking": 3572
                },
                {
                  "player_name": "Moise Bombito",
                  "ranking": 3573
                },
                {
                  "player_name": "Germán Berterame",
                  "ranking": 3574
                }
              ],
              "lower": [
                {
                  "player_name": "Martín Ojeda",
                  "ranking": 3576
                },
                {
                  "player_name": "Maximiliano Gómez",
                  "ranking": 3577
                },
                {
                  "player_name": "David Douděra",
                  "ranking": 3578
                },
                {
                  "player_name": "Daniel Peretz",
                  "ranking": 3579
                },
                {
                  "player_name": "Callum McGregor",
                  "ranking": 3580
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.467,
          "history_matches": 3,
          "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": 3,
            "data_confidence": 0.467,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 22.707562348292583,
            "bench_appearance_prob": 0.322,
            "market_value_adjustment": 1.0221,
            "fbref_prior_metrics": {
              "squad": "Racing Sant",
              "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 M_service (3 historical appearances) to 22.7 expected mins (appearance prob 0.32); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.5059,
                "expected_assists": 0.0339,
                "assists": 0.0471,
                "assist_rate": 0.0471,
                "expected_goals": 0.0253,
                "goals": 0.0513,
                "goal_rate": 0.0513,
                "shots_on_target": 0.1156,
                "total_shots": 0.3647,
                "rating": 6.989,
                "minutes": 19.0,
                "total_pass": 58.6463,
                "accurate_pass": 53.9252,
                "duels_won": 6.4227,
                "total_long_balls": 1.3392,
                "accurate_long_balls": 1.3392,
                "total_own_half_passes": 27.8212,
                "accurate_own_half_passes": 25.5967,
                "total_opp_half_passes": 30.8251,
                "accurate_opp_half_passes": 28.3285,
                "crosses_total": 0.3304,
                "crosses_accurate": 0.0,
                "touches": 80.8639,
                "possession_lost": 11.829,
                "dispossessed": 1.3887,
                "duels_lost": 8.6433,
                "aerial_won": 0.0,
                "aerial_lost": 1.9417,
                "interceptions": 0.5617,
                "tackles_won": 1.0583,
                "tackles": 2.4383,
                "clearances": 0.6696,
                "total_contest": 1.7687,
                "won_contest": 0.7191,
                "challenges_lost": 1.2721,
                "fouls": 3.38,
                "fouls_drawn": 3.2653,
                "blocks": 0.3887,
                "big_chances_created": 0.2809,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 21.2886,
                "total_progression": 44.6451,
                "progressive_carries": 0.5617,
                "shots_off_target": 0.2491
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-17T10:05:52.581708+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Elche",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Getafe",
                    "minutes": 88.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 7.3
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.5617,
                  "creative_index": 0.5787,
                  "expectedGoals": 0.0148,
                  "expectedAssists": 0.1437,
                  "onTargetScoringAttempt": 0.0
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5059065818786621,
                    "model_output": 0.5059,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3996
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0572
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0516
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0376
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.021
                        }
                      ],
                      "others": -0.0377,
                      "total": 0.5059,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.593369
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.109767
                        },
                        {
                          "name": "creative_index",
                          "margin": 0.089587
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.064531
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": -0.037884
                        }
                      ],
                      "others_margin": -0.071785
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03387013077735901,
                    "model_output": 0.0339,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0434
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.0066
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0054
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0045
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0021
                        }
                      ],
                      "others": 0.0013,
                      "total": 0.0339,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.706653
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.169534
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.164631
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.137975
                        },
                        {
                          "name": "cross_creative_contribution",
                          "margin": -0.06154
                        }
                      ],
                      "others_margin": 0.036764
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.047127604484558105,
                    "model_output": 0.0471,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.02
                        },
                        {
                          "name": "totalCross",
                          "contribution": -0.008
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.007
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0055
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0045
                        }
                      ],
                      "others": -0.0041,
                      "total": 0.0471,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.259735
                        },
                        {
                          "name": "totalCross",
                          "margin": -0.126148
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.125745
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.111506
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.091678
                        }
                      ],
                      "others_margin": -0.084367
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.025277739390730858,
                    "model_output": 0.0253,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0391
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.017
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0044
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0036
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0019
                        }
                      ],
                      "others": -0.003,
                      "total": 0.0253,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.536235
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.368308
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.12317
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.111464
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.06355
                        }
                      ],
                      "others_margin": -0.113778
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.05126240849494934,
                    "model_output": 0.0513,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0261
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0121
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0083
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0052
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0039
                        }
                      ],
                      "others": 0.0091,
                      "total": 0.0513,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.310019
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.185514
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.149142
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.106394
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.088254
                        }
                      ],
                      "others_margin": 0.193473
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.1155727282166481,
                    "model_output": 0.1156,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1441
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0332
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0202
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0139
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.009
                        }
                      ],
                      "others": -0.0077,
                      "total": 0.1156,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.584056
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.201735
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.146029
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.114519
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.075783
                        }
                      ],
                      "others_margin": -0.065611
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.3646281361579895,
                    "model_output": 0.3646,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3153
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1593
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0801
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.038
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0327
                        }
                      ],
                      "others": -0.1657,
                      "total": 0.3646,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.315299
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.159313
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": 0.080087
                        },
                        {
                          "name": "minutesPlayed",
                          "margin": -0.037957
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": -0.032703
                        }
                      ],
                      "others_margin": -0.165722
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.989039421081543,
                    "model_output": 6.989,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "rating",
                          "contribution": 0.1285
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1033
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0778
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0204
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0151
                        }
                      ],
                      "others": -0.0026,
                      "total": 6.989,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "rating",
                          "margin": 0.128524
                        },
                        {
                          "name": "is_starting_11",
                          "margin": -0.103327
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.077841
                        },
                        {
                          "name": "touches",
                          "margin": 0.020427
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.015101
                        }
                      ],
                      "others_margin": -0.002583
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 3,
                  "role_matches": 0,
                  "minutes_source": "position_median",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0221, quality 0.623)",
              "stats": {
                "key_pass": 0.5171,
                "expected_assists": 0.0346,
                "assists": 0.0482,
                "assist_rate": 0.0482,
                "expected_goals": 0.0258,
                "goals": 0.0524,
                "goal_rate": 0.0524,
                "shots_on_target": 0.1181,
                "total_shots": 0.3727,
                "rating": 6.989,
                "minutes": 19.0,
                "total_pass": 59.9424,
                "accurate_pass": 55.1169,
                "duels_won": 6.5646,
                "total_long_balls": 1.3688,
                "accurate_long_balls": 1.3688,
                "total_own_half_passes": 28.436,
                "accurate_own_half_passes": 26.1624,
                "total_opp_half_passes": 31.5063,
                "accurate_opp_half_passes": 28.9546,
                "crosses_total": 0.3377,
                "crosses_accurate": 0.0,
                "touches": 82.651,
                "possession_lost": 12.0904,
                "dispossessed": 1.4194,
                "duels_lost": 8.8343,
                "aerial_won": 0.0,
                "aerial_lost": 1.9846,
                "interceptions": 0.5741,
                "tackles_won": 1.0817,
                "tackles": 2.4922,
                "clearances": 0.6844,
                "total_contest": 1.8078,
                "won_contest": 0.735,
                "challenges_lost": 1.3002,
                "fouls": 3.4547,
                "fouls_drawn": 3.3375,
                "blocks": 0.3973,
                "big_chances_created": 0.2871,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 21.7591,
                "total_progression": 45.6318,
                "progressive_carries": 0.5741,
                "shots_off_target": 0.2546
              },
              "params": {
                "market_value_eur": 19200000,
                "quality_factor": 0.6231,
                "boost_factor": 1.0221,
                "reference_quality": 0.505,
                "history_matches": 3,
                "history_shrink": 0.625,
                "market_value_known": true
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0813)",
              "stats": {
                "key_pass": 0.5171,
                "expected_assists": 0.0346,
                "assists": 0.0443,
                "assist_rate": 0.0443,
                "expected_goals": 0.0258,
                "goals": 0.0481,
                "goal_rate": 0.0481,
                "shots_on_target": 0.1085,
                "total_shots": 0.3539,
                "rating": 6.989,
                "minutes": 19.0,
                "total_pass": 59.9424,
                "accurate_pass": 55.1169,
                "duels_won": 6.5646,
                "total_long_balls": 1.3688,
                "accurate_long_balls": 1.3688,
                "total_own_half_passes": 28.436,
                "accurate_own_half_passes": 26.1624,
                "total_opp_half_passes": 31.5063,
                "accurate_opp_half_passes": 28.9546,
                "crosses_total": 0.316,
                "crosses_accurate": 0.0,
                "touches": 82.651,
                "possession_lost": 12.0904,
                "dispossessed": 1.4194,
                "duels_lost": 8.8343,
                "aerial_won": 0.0,
                "aerial_lost": 1.9846,
                "interceptions": 0.5389,
                "tackles_won": 1.011,
                "tackles": 2.4922,
                "clearances": 0.6844,
                "total_contest": 1.8078,
                "won_contest": 0.735,
                "challenges_lost": 1.3002,
                "fouls": 3.2312,
                "fouls_drawn": 3.1178,
                "blocks": 0.3973,
                "big_chances_created": 0.2871,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 21.7591,
                "total_progression": 45.6318,
                "progressive_carries": 0.5741,
                "shots_off_target": 0.2546
              },
              "params": {
                "blend_weight": 0.0813,
                "history_matches": 3,
                "season_overlap_discount": 1.0,
                "per90_to_match_factor": 0.2111,
                "prior_reliability": 0.2,
                "competition": "La Liga",
                "squad": "Racing Sant"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 3.4547,
                  "after": 3.2312
                },
                {
                  "stat": "wasFouled",
                  "before": 3.3375,
                  "after": 3.1178
                },
                {
                  "stat": "wonTackle",
                  "before": 1.0817,
                  "after": 1.011
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.5741,
                  "after": 0.5389
                },
                {
                  "stat": "totalCross",
                  "before": 0.3377,
                  "after": 0.316
                },
                {
                  "stat": "totalShots",
                  "before": 0.3727,
                  "after": 0.3539
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.1181,
                  "after": 0.1085
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 19.0 to 22.7 expected minutes (appearance prob 0.32)",
              "stats": {
                "key_pass": 0.618,
                "expected_assists": 0.0414,
                "assists": 0.0529,
                "assist_rate": 0.0529,
                "expected_goals": 0.0308,
                "goals": 0.0575,
                "goal_rate": 0.0575,
                "shots_on_target": 0.1297,
                "total_shots": 0.434,
                "rating": 6.989,
                "minutes": 22.71,
                "total_pass": 71.6393,
                "accurate_pass": 65.8721,
                "duels_won": 7.8456,
                "total_long_balls": 1.6359,
                "accurate_long_balls": 1.6359,
                "total_own_half_passes": 33.9849,
                "accurate_own_half_passes": 31.2676,
                "total_opp_half_passes": 37.6543,
                "accurate_opp_half_passes": 34.6047,
                "crosses_total": 0.3777,
                "crosses_accurate": 0.0,
                "touches": 98.7791,
                "possession_lost": 14.4497,
                "dispossessed": 1.4194,
                "duels_lost": 10.5582,
                "aerial_won": 0.0,
                "aerial_lost": 1.9846,
                "interceptions": 0.6441,
                "tackles_won": 1.2083,
                "tackles": 2.9785,
                "clearances": 0.818,
                "total_contest": 2.1606,
                "won_contest": 0.8784,
                "challenges_lost": 1.3002,
                "fouls": 3.8617,
                "fouls_drawn": 3.7262,
                "blocks": 0.4748,
                "big_chances_created": 0.3431,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 26.0051,
                "total_progression": 54.5362,
                "progressive_carries": 0.6861,
                "shots_off_target": 0.3043,
                "bench_appearance_probability": 0.322,
                "bench_expected_minutes": 22.71
              },
              "params": {
                "expected_minutes": 22.71,
                "projection_minutes": 19.0,
                "minutes_scale": 1.1951,
                "appearance_probability": 0.322
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.618,
                "expected_assists": 0.0414,
                "assists": 0.0529,
                "assist_rate": 0.0529,
                "expected_goals": 0.0308,
                "goals": 0.0575,
                "goal_rate": 0.0575,
                "shots_on_target": 0.1297,
                "total_shots": 0.434,
                "rating": 6.989,
                "minutes": 22.71,
                "total_pass": 71.6393,
                "accurate_pass": 65.8721,
                "duels_won": 7.8456,
                "total_long_balls": 1.6359,
                "accurate_long_balls": 1.6359,
                "total_own_half_passes": 33.9849,
                "accurate_own_half_passes": 31.2676,
                "total_opp_half_passes": 37.6543,
                "accurate_opp_half_passes": 34.6047,
                "crosses_total": 0.3777,
                "crosses_accurate": 0.0,
                "touches": 98.7791,
                "possession_lost": 14.4497,
                "dispossessed": 1.4194,
                "duels_lost": 10.5582,
                "aerial_won": 0.0,
                "aerial_lost": 1.9846,
                "interceptions": 0.6441,
                "tackles_won": 1.2083,
                "tackles": 2.9785,
                "clearances": 0.818,
                "total_contest": 2.1606,
                "won_contest": 0.8784,
                "challenges_lost": 1.3002,
                "fouls": 3.8617,
                "fouls_drawn": 3.7262,
                "blocks": 0.4748,
                "big_chances_created": 0.3431,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 26.0051,
                "total_progression": 54.5362,
                "progressive_carries": 0.6861,
                "shots_off_target": 0.3043,
                "bench_appearance_probability": 0.322,
                "bench_expected_minutes": 22.71
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": true
              }
            },
            {
              "step": "not_projected_to_play",
              "description": "Not among the projected substitutes: no share of the team's goals or assists",
              "stats": {
                "key_pass": 0.618,
                "expected_assists": 0.0414,
                "assist_rate": 0.0529,
                "assists": 0,
                "expected_goals": 0.0308,
                "goal_rate": 0.0575,
                "goals": 0,
                "shots_on_target": 0.1297,
                "total_shots": 0.434,
                "rating": 6.989,
                "minutes": 22.71,
                "total_pass": 71.6393,
                "accurate_pass": 65.8721,
                "duels_won": 7.8456,
                "total_long_balls": 1.6359,
                "accurate_long_balls": 1.6359,
                "total_own_half_passes": 33.9849,
                "accurate_own_half_passes": 31.2676,
                "total_opp_half_passes": 37.6543,
                "accurate_opp_half_passes": 34.6047,
                "crosses_total": 0.3777,
                "crosses_accurate": 0.0,
                "touches": 98.7791,
                "possession_lost": 14.4497,
                "dispossessed": 1.4194,
                "duels_lost": 10.5582,
                "aerial_won": 0.0,
                "aerial_lost": 1.9846,
                "interceptions": 0.6441,
                "tackles_won": 1.2083,
                "tackles": 2.9785,
                "clearances": 0.818,
                "total_contest": 2.1606,
                "won_contest": 0.8784,
                "challenges_lost": 1.3002,
                "fouls": 3.8617,
                "fouls_drawn": 3.7262,
                "blocks": 0.4748,
                "big_chances_created": 0.3431,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 26.0051,
                "total_progression": 54.5362,
                "progressive_carries": 0.6861,
                "shots_off_target": 0.3043,
                "bench_appearance_probability": 0.322,
                "bench_expected_minutes": 22.71,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "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.322,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 74.0)",
              "stats": {
                "key_pass": 0.618,
                "expected_assists": 0.0414,
                "assist_rate": 0.0529,
                "assists": 0,
                "expected_goals": 0.0308,
                "goal_rate": 0.0575,
                "goals": 0,
                "shots_on_target": 0.1297,
                "total_shots": 0.434,
                "rating": 6.989,
                "minutes": 22.71,
                "total_pass": 71.6393,
                "accurate_pass": 65.8721,
                "duels_won": 7.8456,
                "total_long_balls": 1.6359,
                "accurate_long_balls": 1.6359,
                "total_own_half_passes": 33.9849,
                "accurate_own_half_passes": 31.2676,
                "total_opp_half_passes": 37.6543,
                "accurate_opp_half_passes": 34.6047,
                "crosses_total": 0.3777,
                "crosses_accurate": 0.0,
                "touches": 98.7791,
                "possession_lost": 14.4497,
                "dispossessed": 1.4194,
                "duels_lost": 10.5582,
                "aerial_won": 0.0,
                "aerial_lost": 1.9846,
                "interceptions": 0.6441,
                "tackles_won": 1.2083,
                "tackles": 2.9785,
                "clearances": 0.818,
                "total_contest": 2.1606,
                "won_contest": 0.8784,
                "challenges_lost": 1.3002,
                "fouls": 3.8617,
                "fouls_drawn": 3.7262,
                "blocks": 0.4748,
                "big_chances_created": 0.3431,
                "big_chances_missed": 0.0,
                "xgot": 0.0,
                "ball_carries": 26.0051,
                "total_progression": 54.5362,
                "progressive_carries": 0.6861,
                "shots_off_target": 0.3043,
                "bench_appearance_probability": 0.322,
                "bench_expected_minutes": 22.71,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 74.0
              },
              "params": {
                "match_squad_rank": 2,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3575,
                "fifa_rank": 2915.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            }
          ]
        },
        "André Almeida": {
          "player_id": 845693,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 8,
          "height": 176,
          "market_value": 6200000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0594,
            "assist_rate": 0.0805,
            "assists": 0,
            "expected_goals": 0.0292,
            "goal_rate": 0.0392,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 0,
            "rating": 6.7593,
            "minutes": 22,
            "total_pass": 17,
            "accurate_pass": 15,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 11,
            "accurate_opp_half_passes": 10,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 23,
            "possession_lost": 4.6122,
            "dispossessed": 0.3622,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.002,
            "ball_carries": 8,
            "total_progression": 35,
            "progressive_carries": 1,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.506,
            "bench_expected_minutes": 22.13,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.257,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16421064,
              "match_date": "2026-10-11",
              "home_team": "Real Racing Club",
              "away_team": "Valencia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Valencia",
              "stats": {
                "minutes": 61,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.059,
                "expected_assists": 0.0356,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 34,
                "accurate_pass": 31,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 63,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0418,
                "total_shots": 0,
                "total_pass": 63,
                "accurate_pass": 59,
                "key_pass": 3,
                "tackles": 2,
                "tackles_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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 24,
                "rating": 5.8,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0023,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 13,
                "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": 16416321,
              "match_date": "2026-09-05",
              "home_team": "Rayo Vallecano",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 35,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.449,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 30,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 14083739,
              "match_date": "2026-05-23",
              "home_team": "Valencia",
              "away_team": "FC Barcelona",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Valencia",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0013,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 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": 0,
              "team": "Valencia",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 17,
                "rating": 7.0,
                "assist_rate": 1.0,
                "assists": 1,
                "expected_assists": 0.0447,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 4,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "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": 15,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0105,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true
            },
            {
              "match_id": 14081817,
              "match_date": "2026-04-05",
              "home_team": "Valencia",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 63,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.0394,
                "expected_assists": 0.0182,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 25,
                "accurate_pass": 22,
                "key_pass": 1,
                "clearances": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true
            },
            {
              "match_id": 14083684,
              "match_date": "2026-03-21",
              "home_team": "Sevilla",
              "away_team": "Valencia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Valencia",
              "opponent": "Sevilla",
              "stats": {
                "minutes": 80,
                "rating": 7.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1739,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 22,
                "key_pass": 2,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "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": 34,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0764,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 30,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true
            }
          ],
          "ranking": {
            "global_player_rank": 3700,
            "combined_rank_score": 1656.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 418.0,
            "sofascore_rating": 6.925,
            "sofascore_appearances": 22.0,
            "fifa_rank": 2894.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7593,
            "source_file": "data/player_rankings.csv",
            "player_name": "André Almeida",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Samuel Dahl",
                  "ranking": 3695
                },
                {
                  "player_name": "Alan Lescano",
                  "ranking": 3696
                },
                {
                  "player_name": "Dénes Dibusz",
                  "ranking": 3697
                },
                {
                  "player_name": "Luciano Juba",
                  "ranking": 3698
                },
                {
                  "player_name": "Jean Lucas",
                  "ranking": 3699
                }
              ],
              "lower": [
                {
                  "player_name": "Jean-Ricner Bellegarde",
                  "ranking": 3701
                },
                {
                  "player_name": "Kervin Arriaga",
                  "ranking": 3702
                },
                {
                  "player_name": "Bryan Gil",
                  "ranking": 3703
                },
                {
                  "player_name": "Taiwo Awoniyi",
                  "ranking": 3704
                },
                {
                  "player_name": "Ismail Jakobs",
                  "ranking": 3705
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.75,
          "history_matches": 26,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "M_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "keyPass",
              "expectedAssists",
              "totalCross",
              "accurateCross",
              "duelWon",
              "duelLost",
              "aerialWon",
              "ballRecovery",
              "touches",
              "interceptionWon",
              "wonTackle",
              "possessionLostCtrl",
              "dispossessed",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "rating",
              "pass_accuracy",
              "duel_win_rate",
              "opp_half_pass_pct",
              "creative_index",
              "touches_p90",
              "totalPass_p90",
              "keyPass_p90",
              "duelWon_p90",
              "ballRecovery_p90",
              "ballCarriesCount_p90",
              "creative_efficiency",
              "cross_accuracy",
              "cross_creative_contribution",
              "defensive_midfield_actions",
              "press_vulnerability",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "totalShots",
              "rating"
            ],
            "history_matches": 26,
            "data_confidence": 0.75,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.128465634082904,
            "bench_appearance_prob": 0.5058393470037683,
            "market_value_adjustment": 0.9986,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (26 historical appearances) to 22.1 expected mins (appearance prob 0.51)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 8 target models",
              "stats": {
                "key_pass": 0.6597,
                "expected_assists": 0.0535,
                "assists": 0.0724,
                "assist_rate": 0.0724,
                "expected_goals": 0.0262,
                "goals": 0.0353,
                "goal_rate": 0.0353,
                "shots_on_target": 0.1119,
                "total_shots": 0.426,
                "rating": 6.7593,
                "minutes": 19.88,
                "total_pass": 15.636,
                "accurate_pass": 13.4639,
                "duels_won": 1.9104,
                "total_long_balls": 1.0128,
                "accurate_long_balls": 0.6774,
                "total_own_half_passes": 5.3975,
                "accurate_own_half_passes": 4.7077,
                "total_opp_half_passes": 10.2385,
                "accurate_opp_half_passes": 8.7562,
                "crosses_total": 1.0221,
                "crosses_accurate": 0.3092,
                "touches": 20.8808,
                "possession_lost": 4.1494,
                "dispossessed": 0.3627,
                "duels_lost": 1.1744,
                "aerial_won": 0.1438,
                "aerial_lost": 0.0,
                "interceptions": 0.2094,
                "tackles_won": 0.463,
                "tackles": 0.9783,
                "clearances": 0.0,
                "total_contest": 0.7759,
                "won_contest": 0.3945,
                "challenges_lost": 0.0,
                "fouls": 0.4303,
                "fouls_drawn": 0.3939,
                "blocks": 0.0,
                "big_chances_created": 0.0644,
                "big_chances_missed": 0.0,
                "xgot": 0.0018,
                "ball_carries": 7.3119,
                "total_progression": 31.1245,
                "progressive_carries": 0.5803,
                "shots_off_target": 0.3141
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 7,
                  "trained_at": "2026-10-17T10:05:52.581708+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 895,
                    "rows": 24017
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Valencia",
                    "minutes": 61.0,
                    "is_starting": true,
                    "weight": 0.1522,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Celta Vigo",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.1294,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Deportivo Alavés",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.11,
                    "rating": 5.8
                  },
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Rayo Vallecano",
                    "minutes": 35.0,
                    "is_starting": false,
                    "weight": 0.0935,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-05-23",
                    "opponent": "FC Barcelona",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 0.0795,
                    "rating": 0.0
                  },
                  {
                    "match_date": "2026-05-17",
                    "opponent": "Real Sociedad",
                    "minutes": 17.0,
                    "is_starting": false,
                    "weight": 0.0675,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-04-25",
                    "opponent": "Girona FC",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.0574,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-04-05",
                    "opponent": "Celta Vigo",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.0488,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-03-21",
                    "opponent": "Sevilla",
                    "minutes": 80.0,
                    "is_starting": true,
                    "weight": 0.0415,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-03-14",
                    "opponent": "Real Oviedo",
                    "minutes": 34.0,
                    "is_starting": false,
                    "weight": 0.0353,
                    "rating": 7.4
                  }
                ],
                "feature_row": {
                  "history_matches": 20.0,
                  "is_starting_11": 0.0,
                  "totalShots": 0.4396,
                  "creative_index": 0.3756,
                  "expectedGoals": 0.0187,
                  "expectedAssists": 0.0908,
                  "onTargetScoringAttempt": 0.2217
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.6596736907958984,
                    "model_output": 0.6597,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.16
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1359
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0622
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0532
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0278
                      }
                    ],
                    "decomposition": {
                      "base": 0.893,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3819
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0319
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0248
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0239
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0201
                        }
                      ],
                      "others": 0.0975,
                      "total": 0.6597,
                      "log_link": true,
                      "margin_base": -0.113189,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.55806
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.060473
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.046721
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.045044
                        },
                        {
                          "name": "creative_efficiency",
                          "margin": 0.036426
                        }
                      ],
                      "others_margin": 0.160018
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.053511861711740494,
                    "model_output": 0.0535,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "creative_index",
                        "importance": 0.1089
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.1043
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.1031
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0607
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0542
                      }
                    ],
                    "decomposition": {
                      "base": 0.0856,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0381
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.003
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0023
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0022
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0015
                        }
                      ],
                      "others": 0.0074,
                      "total": 0.0535,
                      "log_link": true,
                      "margin_base": -2.457601,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.588414
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.064204
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.049601
                        },
                        {
                          "name": "creative_index",
                          "margin": -0.047038
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.03301
                        }
                      ],
                      "others_margin": 0.146795
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.07241713255643845,
                    "model_output": 0.0724,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "expectedAssists",
                        "importance": 0.057
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.052
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0321
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0301
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0295
                      }
                    ],
                    "decomposition": {
                      "base": 0.0872,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0201
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0081
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0054
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0048
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0053
                        }
                      ],
                      "others": 0.0087,
                      "total": 0.0724,
                      "log_link": true,
                      "margin_base": -2.439072,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.262149
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.128879
                        },
                        {
                          "name": "ballRecovery_p90",
                          "margin": -0.095874
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "margin": 0.086238
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.086217
                        }
                      ],
                      "others_margin": 0.128207
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.026240289211273193,
                    "model_output": 0.0262,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "expectedGoals",
                        "importance": 0.1269
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0844
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0755
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0372
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0272
                      }
                    ],
                    "decomposition": {
                      "base": 0.0943,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.04
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0173
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.007
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0032
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.001
                        }
                      ],
                      "others": -0.006,
                      "total": 0.0262,
                      "log_link": true,
                      "margin_base": -2.361326,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.551437
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.382657
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.208849
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.100733
                        },
                        {
                          "name": "passValueNormalized",
                          "margin": -0.031794
                        }
                      ],
                      "others_margin": -0.205129
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.03525858372449875,
                    "model_output": 0.0353,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.0894
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0486
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0452
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0389
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0266
                      }
                    ],
                    "decomposition": {
                      "base": 0.0978,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0384
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0137
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0082
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0023
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0024
                        }
                      ],
                      "others": -0.0069,
                      "total": 0.0353,
                      "log_link": true,
                      "margin_base": -2.324947,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.499304
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.26187
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.198967
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.059329
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.059055
                        }
                      ],
                      "others_margin": -0.178343
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.11191020160913467,
                    "model_output": 0.1119,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.1038
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0848
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0823
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0306
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 0.3257,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1457
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0387
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0198
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0162
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.009
                        }
                      ],
                      "others": -0.0024,
                      "total": 0.1119,
                      "log_link": true,
                      "margin_base": -1.121688,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.592886
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.241875
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": -0.151002
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.143399
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.081764
                        }
                      ],
                      "others_margin": -0.020971
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.4259844422340393,
                    "model_output": 0.426,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1304
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.1272
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0577
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0476
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0242
                      }
                    ],
                    "decomposition": {
                      "base": 0.9955,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3781
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.2254
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0524
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0288
                        },
                        {
                          "name": "interceptionWon",
                          "contribution": 0.0214
                        }
                      ],
                      "others": -0.011,
                      "total": 0.426,
                      "log_link": false,
                      "margin_base": 0.995535,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.378133
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.225402
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "margin": 0.052436
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.028751
                        },
                        {
                          "name": "interceptionWon",
                          "margin": 0.021377
                        }
                      ],
                      "others_margin": -0.011077
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.759276866912842,
                    "model_output": 6.7593,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "rating",
                        "importance": 0.0934
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0793
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0569
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0427
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0284
                      }
                    ],
                    "decomposition": {
                      "base": 6.8531,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1077
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0314
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.024
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.012
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": 0.0076
                        }
                      ],
                      "others": 0.0017,
                      "total": 6.7593,
                      "log_link": false,
                      "margin_base": 6.853057,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.107678
                        },
                        {
                          "name": "rating",
                          "margin": -0.031403
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "margin": 0.024032
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.012033
                        },
                        {
                          "name": "totalPass_p90",
                          "margin": 0.007631
                        }
                      ],
                      "others_margin": 0.001605
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 26,
                  "role_matches": 13,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9986, quality 0.477)",
              "stats": {
                "key_pass": 0.6588,
                "expected_assists": 0.0534,
                "assists": 0.0723,
                "assist_rate": 0.0723,
                "expected_goals": 0.0262,
                "goals": 0.0352,
                "goal_rate": 0.0352,
                "shots_on_target": 0.1118,
                "total_shots": 0.4255,
                "rating": 6.7593,
                "minutes": 19.88,
                "total_pass": 15.6141,
                "accurate_pass": 13.4451,
                "duels_won": 1.9077,
                "total_long_balls": 1.0114,
                "accurate_long_balls": 0.6765,
                "total_own_half_passes": 5.3899,
                "accurate_own_half_passes": 4.7011,
                "total_opp_half_passes": 10.2242,
                "accurate_opp_half_passes": 8.7439,
                "crosses_total": 1.0207,
                "crosses_accurate": 0.3088,
                "touches": 20.8516,
                "possession_lost": 4.1436,
                "dispossessed": 0.3622,
                "duels_lost": 1.1728,
                "aerial_won": 0.1436,
                "aerial_lost": 0.0,
                "interceptions": 0.2091,
                "tackles_won": 0.4624,
                "tackles": 0.9769,
                "clearances": 0.0,
                "total_contest": 0.7748,
                "won_contest": 0.3939,
                "challenges_lost": 0.0,
                "fouls": 0.4297,
                "fouls_drawn": 0.3933,
                "blocks": 0.0,
                "big_chances_created": 0.0643,
                "big_chances_missed": 0.0,
                "xgot": 0.0018,
                "ball_carries": 7.3017,
                "total_progression": 31.0809,
                "progressive_carries": 0.5795,
                "shots_off_target": 0.3137
              },
              "params": {
                "market_value_eur": 6200000,
                "quality_factor": 0.4769,
                "boost_factor": 0.9986,
                "reference_quality": 0.505,
                "history_matches": 26,
                "history_shrink": 0.1613,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 19.9 to 22.1 expected minutes (appearance prob 0.51)",
              "stats": {
                "key_pass": 0.7333,
                "expected_assists": 0.0594,
                "assists": 0.0805,
                "assist_rate": 0.0805,
                "expected_goals": 0.0292,
                "goals": 0.0392,
                "goal_rate": 0.0392,
                "shots_on_target": 0.1244,
                "total_shots": 0.4736,
                "rating": 6.7593,
                "minutes": 22.13,
                "total_pass": 17.3801,
                "accurate_pass": 14.9658,
                "duels_won": 2.1235,
                "total_long_balls": 1.1258,
                "accurate_long_balls": 0.753,
                "total_own_half_passes": 5.9995,
                "accurate_own_half_passes": 5.2328,
                "total_opp_half_passes": 11.3806,
                "accurate_opp_half_passes": 9.7329,
                "crosses_total": 1.1361,
                "crosses_accurate": 0.3437,
                "touches": 23.21,
                "possession_lost": 4.6122,
                "dispossessed": 0.3622,
                "duels_lost": 1.3054,
                "aerial_won": 0.1598,
                "aerial_lost": 0.0,
                "interceptions": 0.2327,
                "tackles_won": 0.5147,
                "tackles": 1.0874,
                "clearances": 0.0,
                "total_contest": 0.8624,
                "won_contest": 0.4385,
                "challenges_lost": 0.0,
                "fouls": 0.4783,
                "fouls_drawn": 0.4378,
                "blocks": 0.0,
                "big_chances_created": 0.0716,
                "big_chances_missed": 0.0,
                "xgot": 0.002,
                "ball_carries": 8.1275,
                "total_progression": 34.5962,
                "progressive_carries": 0.645,
                "shots_off_target": 0.3492,
                "bench_appearance_probability": 0.506,
                "bench_expected_minutes": 22.13
              },
              "params": {
                "expected_minutes": 22.13,
                "projection_minutes": 19.88,
                "minutes_scale": 1.1131,
                "appearance_probability": 0.506
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0.7333,
                "expected_assists": 0.0594,
                "assists": 0.0805,
                "assist_rate": 0.0805,
                "expected_goals": 0.0292,
                "goals": 0.0392,
                "goal_rate": 0.0392,
                "shots_on_target": 0.1244,
                "total_shots": 0.4736,
                "rating": 6.7593,
                "minutes": 22.13,
                "total_pass": 17.3801,
                "accurate_pass": 14.9658,
                "duels_won": 2.1235,
                "total_long_balls": 1.1258,
                "accurate_long_balls": 0.753,
                "total_own_half_passes": 5.9995,
                "accurate_own_half_passes": 5.2328,
                "total_opp_half_passes": 11.3806,
                "accurate_opp_half_passes": 9.7329,
                "crosses_total": 1.1361,
                "crosses_accurate": 0.3437,
                "touches": 23.21,
                "possession_lost": 4.6122,
                "dispossessed": 0.3622,
                "duels_lost": 1.3054,
                "aerial_won": 0.1598,
                "aerial_lost": 0.0,
                "interceptions": 0.2327,
                "tackles_won": 0.5147,
                "tackles": 1.0874,
                "clearances": 0.0,
                "total_contest": 0.8624,
                "won_contest": 0.4385,
                "challenges_lost": 0.0,
                "fouls": 0.4783,
                "fouls_drawn": 0.4378,
                "blocks": 0.0,
                "big_chances_created": 0.0716,
                "big_chances_missed": 0.0,
                "xgot": 0.002,
                "ball_carries": 8.1275,
                "total_progression": 34.5962,
                "progressive_carries": 0.645,
                "shots_off_target": 0.3492,
                "bench_appearance_probability": 0.506,
                "bench_expected_minutes": 22.13
              },
              "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.7333,
                "expected_assists": 0.0594,
                "assist_rate": 0.0805,
                "assists": 0,
                "expected_goals": 0.0292,
                "goal_rate": 0.0392,
                "goals": 0,
                "shots_on_target": 0.1244,
                "total_shots": 0.4736,
                "rating": 6.7593,
                "minutes": 22.13,
                "total_pass": 17.3801,
                "accurate_pass": 14.9658,
                "duels_won": 2.1235,
                "total_long_balls": 1.1258,
                "accurate_long_balls": 0.753,
                "total_own_half_passes": 5.9995,
                "accurate_own_half_passes": 5.2328,
                "total_opp_half_passes": 11.3806,
                "accurate_opp_half_passes": 9.7329,
                "crosses_total": 1.1361,
                "crosses_accurate": 0.3437,
                "touches": 23.21,
                "possession_lost": 4.6122,
                "dispossessed": 0.3622,
                "duels_lost": 1.3054,
                "aerial_won": 0.1598,
                "aerial_lost": 0.0,
                "interceptions": 0.2327,
                "tackles_won": 0.5147,
                "tackles": 1.0874,
                "clearances": 0.0,
                "total_contest": 0.8624,
                "won_contest": 0.4385,
                "challenges_lost": 0.0,
                "fouls": 0.4783,
                "fouls_drawn": 0.4378,
                "blocks": 0.0,
                "big_chances_created": 0.0716,
                "big_chances_missed": 0.0,
                "xgot": 0.002,
                "ball_carries": 8.1275,
                "total_progression": 34.5962,
                "progressive_carries": 0.645,
                "shots_off_target": 0.3492,
                "bench_appearance_probability": 0.506,
                "bench_expected_minutes": 22.13,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "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.506,
                "projected_substitutes": 2,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 74.0)",
              "stats": {
                "key_pass": 0.7333,
                "expected_assists": 0.0594,
                "assist_rate": 0.0805,
                "assists": 0,
                "expected_goals": 0.0292,
                "goal_rate": 0.0392,
                "goals": 0,
                "shots_on_target": 0.1244,
                "total_shots": 0.4736,
                "rating": 6.7593,
                "minutes": 22.13,
                "total_pass": 17.3801,
                "accurate_pass": 14.9658,
                "duels_won": 2.1235,
                "total_long_balls": 1.1258,
                "accurate_long_balls": 0.753,
                "total_own_half_passes": 5.9995,
                "accurate_own_half_passes": 5.2328,
                "total_opp_half_passes": 11.3806,
                "accurate_opp_half_passes": 9.7329,
                "crosses_total": 1.1361,
                "crosses_accurate": 0.3437,
                "touches": 23.21,
                "possession_lost": 4.6122,
                "dispossessed": 0.3622,
                "duels_lost": 1.3054,
                "aerial_won": 0.1598,
                "aerial_lost": 0.0,
                "interceptions": 0.2327,
                "tackles_won": 0.5147,
                "tackles": 1.0874,
                "clearances": 0.0,
                "total_contest": 0.8624,
                "won_contest": 0.4385,
                "challenges_lost": 0.0,
                "fouls": 0.4783,
                "fouls_drawn": 0.4378,
                "blocks": 0.0,
                "big_chances_created": 0.0716,
                "big_chances_missed": 0.0,
                "xgot": 0.002,
                "ball_carries": 8.1275,
                "total_progression": 34.5962,
                "progressive_carries": 0.645,
                "shots_off_target": 0.3492,
                "bench_appearance_probability": 0.506,
                "bench_expected_minutes": 22.13,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 74.0
              },
              "params": {
                "match_squad_rank": 9,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3700,
                "fifa_rank": 2894.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 74.0
              }
            }
          ]
        },
        "Andrés Martín": {
          "player_id": 922939,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 178,
          "market_value": 8199999,
          "stats": {
            "expected_goals": 0.0833,
            "goal_rate": 0.1023,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0664,
            "key_pass": 1,
            "rating": 6.7397,
            "minutes": 26,
            "total_pass": 25,
            "accurate_pass": 19,
            "duels_won": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 13,
            "crosses_total": 3,
            "crosses_accurate": 0,
            "touches": 44,
            "possession_lost": 13.0957,
            "dispossessed": 0.6988,
            "duels_lost": 5,
            "aerial_lost": 0,
            "total_contest": 3,
            "won_contest": 1,
            "ball_recovery": 4,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.4111,
            "offsides": 0,
            "ball_carries": 13,
            "total_progression": 49,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.57,
            "bench_expected_minutes": 25.54,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.257,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0775,
            "projected_assists": 0,
            "assist_probability": 0.0627,
            "finishing_factor": 0.9055,
            "creation_factor": 0.8,
            "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": "home",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Valencia",
              "stats": {
                "minutes": 29,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1201,
                "expected_assists": 0.0176,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 15,
                "accurate_pass": 12,
                "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": 16416304,
              "match_date": "2026-08-28",
              "home_team": "Real Racing Club",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Elche",
              "stats": {
                "minutes": 59,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1443,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 14,
                "key_pass": 3,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416300,
              "match_date": "2026-08-23",
              "home_team": "Getafe",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 5.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.2234,
                "expected_assists": 0.0423,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 34,
                "accurate_pass": 27,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.1338,
                "expected_assists": 0.3458,
                "total_shots": 6,
                "shots_on_target": 1,
                "shots_off_target": 3,
                "total_pass": 29,
                "accurate_pass": 20,
                "key_pass": 3,
                "tackles": 3,
                "interceptions": 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"
            }
          ],
          "ranking": {
            "global_player_rank": 2264,
            "combined_rank_score": 827.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 91.0,
            "sofascore_rating": 7.5,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1564.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7397,
            "source_file": "data/player_rankings.csv",
            "player_name": "Andrés Martín",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mikel Vesga",
                  "ranking": 2259
                },
                {
                  "player_name": "Malo Gusto",
                  "ranking": 2260
                },
                {
                  "player_name": "Aldrix Jara",
                  "ranking": 2261
                },
                {
                  "player_name": "Yehor Yarmoliuk",
                  "ranking": 2262
                },
                {
                  "player_name": "Chimy Ávila",
                  "ranking": 2263
                }
              ],
              "lower": [
                {
                  "player_name": "Brais Méndez",
                  "ranking": 2265
                },
                {
                  "player_name": "Bafodé Diakité",
                  "ranking": 2266
                },
                {
                  "player_name": "Kwasi Sibo",
                  "ranking": 2267
                },
                {
                  "player_name": "Jordan Henderson",
                  "ranking": 2268
                },
                {
                  "player_name": "Andoni Gorosabel",
                  "ranking": 2269
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.5,
          "history_matches": 4,
          "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": 4,
            "data_confidence": 0.5,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.544307952762857,
            "bench_appearance_prob": 0.5701958160346754,
            "market_value_adjustment": 0.9993,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (4 historical appearances) to 25.5 expected mins (appearance prob 0.57)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1065,
                "goals": 0.0922,
                "goal_rate": 0.0922,
                "shots_on_target": 0.4706,
                "total_shots": 1.0549,
                "expected_assists": 0.0848,
                "key_pass": 0.7184,
                "rating": 6.7397,
                "minutes": 23.0,
                "total_pass": 22.5394,
                "accurate_pass": 17.4762,
                "duels_won": 3.4429,
                "total_long_balls": 0.1927,
                "accurate_long_balls": 0.1927,
                "total_opp_half_passes": 16.2261,
                "accurate_opp_half_passes": 11.8491,
                "crosses_total": 2.9385,
                "crosses_accurate": 0.1927,
                "touches": 39.5434,
                "possession_lost": 11.7996,
                "dispossessed": 0.6993,
                "duels_lost": 4.5888,
                "aerial_lost": 0.3138,
                "total_contest": 2.558,
                "won_contest": 1.2597,
                "ball_recovery": 3.7518,
                "challenges_lost": 1.6652,
                "fouls": 0.6122,
                "fouls_drawn": 1.1116,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.6522,
                "tackles_won": 0.2267,
                "tackles": 1.0716,
                "clearances": 0.2667,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4535,
                "xgot": 0.5257,
                "offsides": 0.4935,
                "ball_carries": 11.7759,
                "total_progression": 44.1333,
                "progressive_carries": 2.1587,
                "shots_off_target": 0.5842
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:06:24.593912+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Valencia",
                    "minutes": 29.0,
                    "is_starting": false,
                    "weight": 0.3138,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Elche",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.2667,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2267,
                    "rating": 5.6
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1927,
                    "rating": 7.5
                  }
                ],
                "feature_row": {
                  "history_matches": 4.0,
                  "is_starting_11": 0.0,
                  "totalOppositionHalfPasses": 16.2261,
                  "expectedGoals": 0.5336,
                  "accurateOppositionHalfPasses": 11.8491,
                  "accuratePass": 17.4762,
                  "totalShots": 2.4641
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.10645781457424164,
                    "model_output": 0.1065,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0875
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0317
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.0101
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0077
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0065
                        }
                      ],
                      "others": -0.0239,
                      "total": 0.1065,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.584835
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.252822
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": -0.073688
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.060228
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.051427
                        }
                      ],
                      "others_margin": -0.203588
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.09219110757112503,
                    "model_output": 0.0922,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0937
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0251
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.021
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0068
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0055
                        }
                      ],
                      "others": -0.0203,
                      "total": 0.0922,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.61777
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.206344
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.169339
                        },
                        {
                          "name": "goals",
                          "margin": -0.061533
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.050141
                        }
                      ],
                      "others_margin": -0.198944
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.47064608335494995,
                    "model_output": 0.4706,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.199
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0489
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0328
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0303
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": 0.0259
                        }
                      ],
                      "others": 0.0597,
                      "total": 0.4706,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.462248
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.134963
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.088348
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.081851
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": 0.065112
                        }
                      ],
                      "others_margin": 0.13557
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.054850459098816,
                    "model_output": 1.0549,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5801
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.187
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0694
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": 0.0385
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0383
                        }
                      ],
                      "others": 0.0046,
                      "total": 1.0549,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.58007
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.186957
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.069399
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": 0.038504
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.038314
                        }
                      ],
                      "others_margin": 0.004533
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.08482008427381516,
                    "model_output": 0.0848,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0206
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.008
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0045
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0039
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0041
                        }
                      ],
                      "others": 0.0207,
                      "total": 0.0848,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.386291
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.167573
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.083306
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.066839
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.065775
                        }
                      ],
                      "others_margin": 0.281086
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.7184383273124695,
                    "model_output": 0.7184,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2391
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.06
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0595
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0307
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0307
                        }
                      ],
                      "others": 0.1032,
                      "total": 0.7184,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.438736
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.129444
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.113636
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.054017
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.051229
                        }
                      ],
                      "others_margin": 0.155197
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.739655494689941,
                    "model_output": 6.7397,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1188
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0594
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0335
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0295
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0234
                        }
                      ],
                      "others": 0.0127,
                      "total": 6.7397,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.118786
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.059355
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.033459
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.029527
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.02345
                        }
                      ],
                      "others_margin": 0.012567
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 4,
                  "role_matches": 1,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9993, quality 0.501)",
              "stats": {
                "expected_goals": 0.1064,
                "goals": 0.0921,
                "goal_rate": 0.0921,
                "shots_on_target": 0.4703,
                "total_shots": 1.0541,
                "expected_assists": 0.0848,
                "key_pass": 0.7179,
                "rating": 6.7397,
                "minutes": 23.0,
                "total_pass": 22.5236,
                "accurate_pass": 17.464,
                "duels_won": 3.4405,
                "total_long_balls": 0.1926,
                "accurate_long_balls": 0.1926,
                "total_opp_half_passes": 16.2147,
                "accurate_opp_half_passes": 11.8408,
                "crosses_total": 2.9364,
                "crosses_accurate": 0.1926,
                "touches": 39.5157,
                "possession_lost": 11.7913,
                "dispossessed": 0.6988,
                "duels_lost": 4.5856,
                "aerial_lost": 0.3136,
                "total_contest": 2.5562,
                "won_contest": 1.2588,
                "ball_recovery": 3.7492,
                "challenges_lost": 1.664,
                "fouls": 0.6118,
                "fouls_drawn": 1.1108,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.6517,
                "tackles_won": 0.2265,
                "tackles": 1.0708,
                "clearances": 0.2665,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4532,
                "xgot": 0.5253,
                "offsides": 0.4932,
                "ball_carries": 11.7677,
                "total_progression": 44.1024,
                "progressive_carries": 2.1572,
                "shots_off_target": 0.5838
              },
              "params": {
                "market_value_eur": 8199999,
                "quality_factor": 0.5011,
                "boost_factor": 0.9993,
                "reference_quality": 0.505,
                "history_matches": 4,
                "history_shrink": 0.5556,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.0 to 25.5 expected minutes (appearance prob 0.57)",
              "stats": {
                "expected_goals": 0.1182,
                "goals": 0.1023,
                "goal_rate": 0.1023,
                "shots_on_target": 0.5223,
                "total_shots": 1.1707,
                "expected_assists": 0.0942,
                "key_pass": 0.7973,
                "rating": 6.7397,
                "minutes": 25.54,
                "total_pass": 25.0152,
                "accurate_pass": 19.3959,
                "duels_won": 3.8211,
                "total_long_balls": 0.2139,
                "accurate_long_balls": 0.2139,
                "total_opp_half_passes": 18.0084,
                "accurate_opp_half_passes": 13.1507,
                "crosses_total": 3.2612,
                "crosses_accurate": 0.2139,
                "touches": 43.887,
                "possession_lost": 13.0957,
                "dispossessed": 0.6988,
                "duels_lost": 5.0929,
                "aerial_lost": 0.3136,
                "total_contest": 2.839,
                "won_contest": 1.3981,
                "ball_recovery": 4.1639,
                "challenges_lost": 1.664,
                "fouls": 0.6795,
                "fouls_drawn": 1.2337,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.7238,
                "tackles_won": 0.2516,
                "tackles": 1.1893,
                "clearances": 0.296,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5033,
                "xgot": 0.5834,
                "offsides": 0.4932,
                "ball_carries": 13.0695,
                "total_progression": 48.9811,
                "progressive_carries": 2.3958,
                "shots_off_target": 0.6484,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 25.54
              },
              "params": {
                "expected_minutes": 25.54,
                "projection_minutes": 23.0,
                "minutes_scale": 1.1106,
                "appearance_probability": 0.57
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1182,
                "goals": 0.1023,
                "goal_rate": 0.1023,
                "shots_on_target": 0.5223,
                "total_shots": 1.1707,
                "expected_assists": 0.0942,
                "key_pass": 0.7973,
                "rating": 6.7397,
                "minutes": 25.54,
                "total_pass": 25.0152,
                "accurate_pass": 19.3959,
                "duels_won": 3.8211,
                "total_long_balls": 0.2139,
                "accurate_long_balls": 0.2139,
                "total_opp_half_passes": 18.0084,
                "accurate_opp_half_passes": 13.1507,
                "crosses_total": 3.2612,
                "crosses_accurate": 0.2139,
                "touches": 43.887,
                "possession_lost": 13.0957,
                "dispossessed": 0.6988,
                "duels_lost": 5.0929,
                "aerial_lost": 0.3136,
                "total_contest": 2.839,
                "won_contest": 1.3981,
                "ball_recovery": 4.1639,
                "challenges_lost": 1.664,
                "fouls": 0.6795,
                "fouls_drawn": 1.2337,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.7238,
                "tackles_won": 0.2516,
                "tackles": 1.1893,
                "clearances": 0.296,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5033,
                "xgot": 0.5834,
                "offsides": 0.4932,
                "ball_carries": 13.0695,
                "total_progression": 48.9811,
                "progressive_carries": 2.3958,
                "shots_off_target": 0.6484,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 25.54
              },
              "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.1182,
                "goal_rate": 0.1023,
                "goals": 0,
                "shots_on_target": 0.5223,
                "total_shots": 1.1707,
                "expected_assists": 0.0942,
                "key_pass": 0.7973,
                "rating": 6.7397,
                "minutes": 25.54,
                "total_pass": 25.0152,
                "accurate_pass": 19.3959,
                "duels_won": 3.8211,
                "total_long_balls": 0.2139,
                "accurate_long_balls": 0.2139,
                "total_opp_half_passes": 18.0084,
                "accurate_opp_half_passes": 13.1507,
                "crosses_total": 3.2612,
                "crosses_accurate": 0.2139,
                "touches": 43.887,
                "possession_lost": 13.0957,
                "dispossessed": 0.6988,
                "duels_lost": 5.0929,
                "aerial_lost": 0.3136,
                "total_contest": 2.839,
                "won_contest": 1.3981,
                "ball_recovery": 4.1639,
                "challenges_lost": 1.664,
                "fouls": 0.6795,
                "fouls_drawn": 1.2337,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7238,
                "tackles_won": 0.2516,
                "tackles": 1.1893,
                "clearances": 0.296,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5033,
                "xgot": 0.5834,
                "offsides": 0.4932,
                "ball_carries": 13.0695,
                "total_progression": 48.9811,
                "progressive_carries": 2.3958,
                "shots_off_target": 0.6484,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 25.54,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "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.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "expected_goals": 0.0833,
                "goal_rate": 0.1023,
                "goals": 0,
                "shots_on_target": 0.5223,
                "total_shots": 1.1707,
                "expected_assists": 0.0664,
                "key_pass": 0.7973,
                "rating": 6.7397,
                "minutes": 25.54,
                "total_pass": 25.0152,
                "accurate_pass": 19.3959,
                "duels_won": 3.8211,
                "total_long_balls": 0.2139,
                "accurate_long_balls": 0.2139,
                "total_opp_half_passes": 18.0084,
                "accurate_opp_half_passes": 13.1507,
                "crosses_total": 3.2612,
                "crosses_accurate": 0.2139,
                "touches": 43.887,
                "possession_lost": 13.0957,
                "dispossessed": 0.6988,
                "duels_lost": 5.0929,
                "aerial_lost": 0.3136,
                "total_contest": 2.839,
                "won_contest": 1.3981,
                "ball_recovery": 4.1639,
                "challenges_lost": 1.664,
                "fouls": 0.6795,
                "fouls_drawn": 1.2337,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7238,
                "tackles_won": 0.2516,
                "tackles": 1.1893,
                "clearances": 0.296,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5033,
                "xgot": 0.4111,
                "offsides": 0.4932,
                "ball_carries": 13.0695,
                "total_progression": 48.9811,
                "progressive_carries": 2.3958,
                "shots_off_target": 0.6484,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 25.54,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9055,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "scoreline_reset": true,
                "appearance_weight": 0.57
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1182,
                  "after": 0.0833
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0942,
                  "after": 0.0664
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 77.0)",
              "stats": {
                "expected_goals": 0.0833,
                "goal_rate": 0.1023,
                "goals": 0,
                "shots_on_target": 0.5223,
                "total_shots": 1.1707,
                "expected_assists": 0.0664,
                "key_pass": 0.7973,
                "rating": 6.7397,
                "minutes": 25.54,
                "total_pass": 25.0152,
                "accurate_pass": 19.3959,
                "duels_won": 3.8211,
                "total_long_balls": 0.2139,
                "accurate_long_balls": 0.2139,
                "total_opp_half_passes": 18.0084,
                "accurate_opp_half_passes": 13.1507,
                "crosses_total": 3.2612,
                "crosses_accurate": 0.2139,
                "touches": 43.887,
                "possession_lost": 13.0957,
                "dispossessed": 0.6988,
                "duels_lost": 5.0929,
                "aerial_lost": 0.3136,
                "total_contest": 2.839,
                "won_contest": 1.3981,
                "ball_recovery": 4.1639,
                "challenges_lost": 1.664,
                "fouls": 0.6795,
                "fouls_drawn": 1.2337,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7238,
                "tackles_won": 0.2516,
                "tackles": 1.1893,
                "clearances": 0.296,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5033,
                "xgot": 0.4111,
                "offsides": 0.4932,
                "ball_carries": 13.0695,
                "total_progression": 48.9811,
                "progressive_carries": 2.3958,
                "shots_off_target": 0.6484,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 25.54,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9055,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 11,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2264,
                "fifa_rank": 1564.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0833,
                "goal_rate": 0.1023,
                "goals": 0,
                "shots_on_target": 0.5223,
                "total_shots": 1.1707,
                "expected_assists": 0.0664,
                "key_pass": 0.7973,
                "rating": 6.7397,
                "minutes": 25.54,
                "total_pass": 25.0152,
                "accurate_pass": 19.3959,
                "duels_won": 3.8211,
                "total_long_balls": 0.2139,
                "accurate_long_balls": 0.2139,
                "total_opp_half_passes": 18.0084,
                "accurate_opp_half_passes": 13.1507,
                "crosses_total": 3.2612,
                "crosses_accurate": 0.2139,
                "touches": 43.887,
                "possession_lost": 13.0957,
                "dispossessed": 0.6988,
                "duels_lost": 5.0929,
                "aerial_lost": 0.3136,
                "total_contest": 2.839,
                "won_contest": 1.3981,
                "ball_recovery": 4.1639,
                "challenges_lost": 1.664,
                "fouls": 0.6795,
                "fouls_drawn": 1.2337,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7238,
                "tackles_won": 0.2516,
                "tackles": 1.1893,
                "clearances": 0.296,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5033,
                "xgot": 0.4111,
                "offsides": 0.4932,
                "ball_carries": 13.0695,
                "total_progression": 48.9811,
                "progressive_carries": 2.3958,
                "shots_off_target": 0.6484,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 25.54,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0775,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9055,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0775,
                "goal_rate": 0.1023,
                "scorer_weight": 0.0754,
                "squad_weight_total": 1.5727,
                "weight_share": 0.048,
                "finishing_factor": 0.9055,
                "appearance_weight": 0.57,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.0833,
                "goal_rate": 0.1023,
                "goals": 0,
                "shots_on_target": 0.5223,
                "total_shots": 1.1707,
                "expected_assists": 0.0664,
                "key_pass": 0.7973,
                "rating": 6.7397,
                "minutes": 25.54,
                "total_pass": 25.0152,
                "accurate_pass": 19.3959,
                "duels_won": 3.8211,
                "total_long_balls": 0.2139,
                "accurate_long_balls": 0.2139,
                "total_opp_half_passes": 18.0084,
                "accurate_opp_half_passes": 13.1507,
                "crosses_total": 3.2612,
                "crosses_accurate": 0.2139,
                "touches": 43.887,
                "possession_lost": 13.0957,
                "dispossessed": 0.6988,
                "duels_lost": 5.0929,
                "aerial_lost": 0.3136,
                "total_contest": 2.839,
                "won_contest": 1.3981,
                "ball_recovery": 4.1639,
                "challenges_lost": 1.664,
                "fouls": 0.6795,
                "fouls_drawn": 1.2337,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7238,
                "tackles_won": 0.2516,
                "tackles": 1.1893,
                "clearances": 0.296,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5033,
                "xgot": 0.4111,
                "offsides": 0.4932,
                "ball_carries": 13.0695,
                "total_progression": 48.9811,
                "progressive_carries": 2.3958,
                "shots_off_target": 0.6484,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 25.54,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0775,
                "projected_assists": 0,
                "assist_probability": 0.0627,
                "finishing_factor": 0.9055,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0627,
                "assist_rate": 0.0,
                "provider_weight": 0.0531,
                "squad_weight_total": 0.9036,
                "weight_share": 0.0588,
                "creation_factor": 0.8,
                "appearance_weight": 0.57,
                "weight_rank": 7,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Giorgi Guliashvili": {
          "player_id": 965257,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 7,
          "height": 179,
          "market_value": 3400000,
          "stats": {
            "expected_goals": 0.0904,
            "goal_rate": 0.1258,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0096,
            "key_pass": 0,
            "rating": 6.5953,
            "minutes": 25,
            "total_pass": 4,
            "accurate_pass": 4,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 1.3725,
            "dispossessed": 0.5012,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 3,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.56,
            "bench_expected_minutes": 25.31,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.257,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0835,
            "projected_assists": 0,
            "assist_probability": 0.0095,
            "finishing_factor": 0.9734,
            "creation_factor": 0.8,
            "fifa_overall": 69.0
          },
          "latest_10_games": [
            {
              "match_id": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 15,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3663,
                "expected_assists": 0.0036,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 3,
                "accurate_pass": 3,
                "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": 16416346,
              "match_date": "2026-09-16",
              "home_team": "FC Barcelona",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 12,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 15,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 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": 16416304,
              "match_date": "2026-08-28",
              "home_team": "Real Racing Club",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Elche",
              "stats": {
                "minutes": 21,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1,
                "clearances": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 5690,
            "combined_rank_score": 3969.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 976.0,
            "sofascore_rating": 6.3,
            "sofascore_appearances": 1.0,
            "fifa_rank": 6962.0,
            "fifa_overall": 69.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.5953,
            "source_file": "data/player_rankings.csv",
            "player_name": "Giorgi Guliashvili",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "James McConnell",
                  "ranking": 5685
                },
                {
                  "player_name": "Bryan Rabello",
                  "ranking": 5686
                },
                {
                  "player_name": "Jherson Mosquera",
                  "ranking": 5687
                },
                {
                  "player_name": "Luka Ilić",
                  "ranking": 5688
                },
                {
                  "player_name": "Dominic Hyam",
                  "ranking": 5689
                }
              ],
              "lower": [
                {
                  "player_name": "Joao Grimaldo",
                  "ranking": 5691
                },
                {
                  "player_name": "Ben Whiteman",
                  "ranking": 5692
                },
                {
                  "player_name": "Emiliano Ancheta",
                  "ranking": 5693
                },
                {
                  "player_name": "Marc Bola",
                  "ranking": 5694
                },
                {
                  "player_name": "Dael Fry",
                  "ranking": 5695
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.5,
          "history_matches": 4,
          "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": 4,
            "data_confidence": 0.5,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.31189584546643,
            "bench_appearance_prob": 0.5596316293393832,
            "market_value_adjustment": 0.9896,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (4 historical appearances) to 25.3 expected mins (appearance prob 0.56)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0881,
                "goals": 0.0849,
                "goal_rate": 0.0849,
                "shots_on_target": 0.2267,
                "total_shots": 0.5014,
                "expected_assists": 0.0094,
                "key_pass": 0.2251,
                "rating": 6.5953,
                "minutes": 16.9,
                "total_pass": 2.8073,
                "accurate_pass": 2.6146,
                "duels_won": 1.0871,
                "total_long_balls": 0.2267,
                "accurate_long_balls": 0.2267,
                "total_opp_half_passes": 1.3609,
                "accurate_opp_half_passes": 1.1682,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 5.5196,
                "possession_lost": 0.926,
                "dispossessed": 0.5065,
                "duels_lost": 1.3985,
                "aerial_lost": 0.6993,
                "total_contest": 0.5806,
                "won_contest": 0.5806,
                "ball_recovery": 0.7602,
                "challenges_lost": 0.0,
                "fouls": 0.1927,
                "fouls_drawn": 0.5065,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1927,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3138,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6276,
                "total_progression": 2.0065,
                "progressive_carries": 0.3138,
                "shots_off_target": 0.2747
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:06:24.593912+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Celta Vigo",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.3138,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "FC Barcelona",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.2667,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Deportivo Alavés",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.2267,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Elche",
                    "minutes": 21.0,
                    "is_starting": false,
                    "weight": 0.1927,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 4.0,
                  "is_starting_11": 0.0,
                  "totalOppositionHalfPasses": 1.3609,
                  "expectedGoals": 0.1149,
                  "accurateOppositionHalfPasses": 1.1682,
                  "accuratePass": 2.6146,
                  "totalShots": 0.3138
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.08807600289583206,
                    "model_output": 0.0881,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0822
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0124
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0107
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0071
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0062
                        }
                      ],
                      "others": -0.005,
                      "total": 0.0881,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.537806
                        },
                        {
                          "name": "goals",
                          "margin": -0.113595
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.109537
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.07394
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.064648
                        }
                      ],
                      "others_margin": -0.055992
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.08493202924728394,
                    "model_output": 0.0849,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0834
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0174
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0086
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0059
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0052
                        }
                      ],
                      "others": 0.002,
                      "total": 0.0849,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.527896
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.156426
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.087964
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.065327
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.060457
                        }
                      ],
                      "others_margin": 0.024954
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2266843169927597,
                    "model_output": 0.2267,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2212
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0242
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.014
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0129
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0122
                        }
                      ],
                      "others": -0.0264,
                      "total": 0.2267,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.530118
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.079601
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.049096
                        },
                        {
                          "name": "goals",
                          "margin": -0.047498
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.047166
                        }
                      ],
                      "others_margin": -0.11017
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.501358151435852,
                    "model_output": 0.5014,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.471
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1397
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0784
                        },
                        {
                          "name": "big_chance_conversion",
                          "contribution": 0.0456
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0318
                        }
                      ],
                      "others": -0.1971,
                      "total": 0.5014,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.471043
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.139729
                        },
                        {
                          "name": "goals",
                          "margin": -0.078437
                        },
                        {
                          "name": "big_chance_conversion",
                          "margin": 0.045647
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.031813
                        }
                      ],
                      "others_margin": -0.197107
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.009406071156263351,
                    "model_output": 0.0094,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0225
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0113
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0069
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0032
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0022
                        }
                      ],
                      "others": -0.0087,
                      "total": 0.0094,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.430205
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.317126
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.25651
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.147603
                        },
                        {
                          "name": "rating",
                          "margin": -0.116766
                        }
                      ],
                      "others_margin": -0.652681
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.22510506212711334,
                    "model_output": 0.2251,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2642
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0402
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0319
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0272
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0178
                        }
                      ],
                      "others": -0.067,
                      "total": 0.2251,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.49806
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.10334
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.090508
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.084117
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.059305
                        }
                      ],
                      "others_margin": -0.260396
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.595261096954346,
                    "model_output": 6.5953,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0429
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0217
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.016
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0151
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0131
                        }
                      ],
                      "others": -0.0629,
                      "total": 6.5953,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.042871
                        },
                        {
                          "name": "rating",
                          "margin": -0.021706
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.016036
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.015056
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.013127
                        }
                      ],
                      "others_margin": -0.062947
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 4,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9896, quality 0.442)",
              "stats": {
                "expected_goals": 0.0872,
                "goals": 0.084,
                "goal_rate": 0.084,
                "shots_on_target": 0.2243,
                "total_shots": 0.4962,
                "expected_assists": 0.0093,
                "key_pass": 0.2228,
                "rating": 6.5953,
                "minutes": 16.9,
                "total_pass": 2.7781,
                "accurate_pass": 2.5874,
                "duels_won": 1.0758,
                "total_long_balls": 0.2243,
                "accurate_long_balls": 0.2243,
                "total_opp_half_passes": 1.3467,
                "accurate_opp_half_passes": 1.1561,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 5.4622,
                "possession_lost": 0.9164,
                "dispossessed": 0.5012,
                "duels_lost": 1.384,
                "aerial_lost": 0.692,
                "total_contest": 0.5746,
                "won_contest": 0.5746,
                "ball_recovery": 0.7523,
                "challenges_lost": 0.0,
                "fouls": 0.1907,
                "fouls_drawn": 0.5012,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1907,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3105,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6107,
                "total_progression": 1.9856,
                "progressive_carries": 0.3105,
                "shots_off_target": 0.2718
              },
              "params": {
                "market_value_eur": 3400000,
                "quality_factor": 0.4424,
                "boost_factor": 0.9896,
                "reference_quality": 0.505,
                "history_matches": 4,
                "history_shrink": 0.5556,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 16.9 to 25.3 expected minutes (appearance prob 0.56)",
              "stats": {
                "expected_goals": 0.1306,
                "goals": 0.1258,
                "goal_rate": 0.1258,
                "shots_on_target": 0.3359,
                "total_shots": 0.7432,
                "expected_assists": 0.0139,
                "key_pass": 0.3337,
                "rating": 6.5953,
                "minutes": 25.31,
                "total_pass": 4.1609,
                "accurate_pass": 3.8753,
                "duels_won": 1.6113,
                "total_long_balls": 0.3359,
                "accurate_long_balls": 0.3359,
                "total_opp_half_passes": 2.017,
                "accurate_opp_half_passes": 1.7315,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.181,
                "possession_lost": 1.3725,
                "dispossessed": 0.5012,
                "duels_lost": 2.0729,
                "aerial_lost": 0.692,
                "total_contest": 0.8606,
                "won_contest": 0.8606,
                "ball_recovery": 1.1268,
                "challenges_lost": 0.0,
                "fouls": 0.2856,
                "fouls_drawn": 0.7507,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2856,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.465,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.4124,
                "total_progression": 2.9739,
                "progressive_carries": 0.465,
                "shots_off_target": 0.4071,
                "bench_appearance_probability": 0.56,
                "bench_expected_minutes": 25.31
              },
              "params": {
                "expected_minutes": 25.31,
                "projection_minutes": 16.9,
                "minutes_scale": 1.4977,
                "appearance_probability": 0.56
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1306,
                "goals": 0.1258,
                "goal_rate": 0.1258,
                "shots_on_target": 0.3359,
                "total_shots": 0.7432,
                "expected_assists": 0.0139,
                "key_pass": 0.3337,
                "rating": 6.5953,
                "minutes": 25.31,
                "total_pass": 4.1609,
                "accurate_pass": 3.8753,
                "duels_won": 1.6113,
                "total_long_balls": 0.3359,
                "accurate_long_balls": 0.3359,
                "total_opp_half_passes": 2.017,
                "accurate_opp_half_passes": 1.7315,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.181,
                "possession_lost": 1.3725,
                "dispossessed": 0.5012,
                "duels_lost": 2.0729,
                "aerial_lost": 0.692,
                "total_contest": 0.8606,
                "won_contest": 0.8606,
                "ball_recovery": 1.1268,
                "challenges_lost": 0.0,
                "fouls": 0.2856,
                "fouls_drawn": 0.7507,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2856,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.465,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.4124,
                "total_progression": 2.9739,
                "progressive_carries": 0.465,
                "shots_off_target": 0.4071,
                "bench_appearance_probability": 0.56,
                "bench_expected_minutes": 25.31
              },
              "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.1306,
                "goal_rate": 0.1258,
                "goals": 0,
                "shots_on_target": 0.3359,
                "total_shots": 0.7432,
                "expected_assists": 0.0139,
                "key_pass": 0.3337,
                "rating": 6.5953,
                "minutes": 25.31,
                "total_pass": 4.1609,
                "accurate_pass": 3.8753,
                "duels_won": 1.6113,
                "total_long_balls": 0.3359,
                "accurate_long_balls": 0.3359,
                "total_opp_half_passes": 2.017,
                "accurate_opp_half_passes": 1.7315,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.181,
                "possession_lost": 1.3725,
                "dispossessed": 0.5012,
                "duels_lost": 2.0729,
                "aerial_lost": 0.692,
                "total_contest": 0.8606,
                "won_contest": 0.8606,
                "ball_recovery": 1.1268,
                "challenges_lost": 0.0,
                "fouls": 0.2856,
                "fouls_drawn": 0.7507,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2856,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.465,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.4124,
                "total_progression": 2.9739,
                "progressive_carries": 0.465,
                "shots_off_target": 0.4071,
                "bench_appearance_probability": 0.56,
                "bench_expected_minutes": 25.31,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "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.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "expected_goals": 0.0904,
                "goal_rate": 0.1258,
                "goals": 0,
                "shots_on_target": 0.3359,
                "total_shots": 0.7432,
                "expected_assists": 0.0096,
                "key_pass": 0.3337,
                "rating": 6.5953,
                "minutes": 25.31,
                "total_pass": 4.1609,
                "accurate_pass": 3.8753,
                "duels_won": 1.6113,
                "total_long_balls": 0.3359,
                "accurate_long_balls": 0.3359,
                "total_opp_half_passes": 2.017,
                "accurate_opp_half_passes": 1.7315,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.181,
                "possession_lost": 1.3725,
                "dispossessed": 0.5012,
                "duels_lost": 2.0729,
                "aerial_lost": 0.692,
                "total_contest": 0.8606,
                "won_contest": 0.8606,
                "ball_recovery": 1.1268,
                "challenges_lost": 0.0,
                "fouls": 0.2856,
                "fouls_drawn": 0.7507,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2856,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.465,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.4124,
                "total_progression": 2.9739,
                "progressive_carries": 0.465,
                "shots_off_target": 0.4071,
                "bench_appearance_probability": 0.56,
                "bench_expected_minutes": 25.31,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9734,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "scoreline_reset": true,
                "appearance_weight": 0.56
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1306,
                  "after": 0.0904
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 69.0)",
              "stats": {
                "expected_goals": 0.0904,
                "goal_rate": 0.1258,
                "goals": 0,
                "shots_on_target": 0.3359,
                "total_shots": 0.7432,
                "expected_assists": 0.0096,
                "key_pass": 0.3337,
                "rating": 6.5953,
                "minutes": 25.31,
                "total_pass": 4.1609,
                "accurate_pass": 3.8753,
                "duels_won": 1.6113,
                "total_long_balls": 0.3359,
                "accurate_long_balls": 0.3359,
                "total_opp_half_passes": 2.017,
                "accurate_opp_half_passes": 1.7315,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.181,
                "possession_lost": 1.3725,
                "dispossessed": 0.5012,
                "duels_lost": 2.0729,
                "aerial_lost": 0.692,
                "total_contest": 0.8606,
                "won_contest": 0.8606,
                "ball_recovery": 1.1268,
                "challenges_lost": 0.0,
                "fouls": 0.2856,
                "fouls_drawn": 0.7507,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2856,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.465,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.4124,
                "total_progression": 2.9739,
                "progressive_carries": 0.465,
                "shots_off_target": 0.4071,
                "bench_appearance_probability": 0.56,
                "bench_expected_minutes": 25.31,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9734,
                "creation_factor": 0.8,
                "fifa_overall": 69.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": 5690,
                "fifa_rank": 6962.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 69.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.0904,
                "goal_rate": 0.1258,
                "goals": 0,
                "shots_on_target": 0.3359,
                "total_shots": 0.7432,
                "expected_assists": 0.0096,
                "key_pass": 0.3337,
                "rating": 6.5953,
                "minutes": 25.31,
                "total_pass": 4.1609,
                "accurate_pass": 3.8753,
                "duels_won": 1.6113,
                "total_long_balls": 0.3359,
                "accurate_long_balls": 0.3359,
                "total_opp_half_passes": 2.017,
                "accurate_opp_half_passes": 1.7315,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.181,
                "possession_lost": 1.3725,
                "dispossessed": 0.5012,
                "duels_lost": 2.0729,
                "aerial_lost": 0.692,
                "total_contest": 0.8606,
                "won_contest": 0.8606,
                "ball_recovery": 1.1268,
                "challenges_lost": 0.0,
                "fouls": 0.2856,
                "fouls_drawn": 0.7507,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2856,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.465,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.4124,
                "total_progression": 2.9739,
                "progressive_carries": 0.465,
                "shots_off_target": 0.4071,
                "bench_appearance_probability": 0.56,
                "bench_expected_minutes": 25.31,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0835,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9734,
                "creation_factor": 0.8,
                "fifa_overall": 69.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0835,
                "goal_rate": 0.1258,
                "scorer_weight": 0.088,
                "squad_weight_total": 1.5727,
                "weight_share": 0.056,
                "finishing_factor": 0.9734,
                "appearance_weight": 0.56,
                "weight_rank": 5,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.0904,
                "goal_rate": 0.1258,
                "goals": 0,
                "shots_on_target": 0.3359,
                "total_shots": 0.7432,
                "expected_assists": 0.0096,
                "key_pass": 0.3337,
                "rating": 6.5953,
                "minutes": 25.31,
                "total_pass": 4.1609,
                "accurate_pass": 3.8753,
                "duels_won": 1.6113,
                "total_long_balls": 0.3359,
                "accurate_long_balls": 0.3359,
                "total_opp_half_passes": 2.017,
                "accurate_opp_half_passes": 1.7315,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.181,
                "possession_lost": 1.3725,
                "dispossessed": 0.5012,
                "duels_lost": 2.0729,
                "aerial_lost": 0.692,
                "total_contest": 0.8606,
                "won_contest": 0.8606,
                "ball_recovery": 1.1268,
                "challenges_lost": 0.0,
                "fouls": 0.2856,
                "fouls_drawn": 0.7507,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2856,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.465,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.4124,
                "total_progression": 2.9739,
                "progressive_carries": 0.465,
                "shots_off_target": 0.4071,
                "bench_appearance_probability": 0.56,
                "bench_expected_minutes": 25.31,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0835,
                "projected_assists": 0,
                "assist_probability": 0.0095,
                "finishing_factor": 0.9734,
                "creation_factor": 0.8,
                "fifa_overall": 69.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0095,
                "assist_rate": 0.0,
                "provider_weight": 0.0077,
                "squad_weight_total": 0.9036,
                "weight_share": 0.0085,
                "creation_factor": 0.8,
                "appearance_weight": 0.56,
                "weight_rank": 12,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "substitutes": {
        "Andrés Martín": {
          "player_id": 922939,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 178,
          "market_value": 8199999,
          "stats": {
            "expected_goals": 0.0833,
            "goal_rate": 0.1023,
            "goals": 0,
            "shots_on_target": 1,
            "total_shots": 2,
            "expected_assists": 0.0664,
            "key_pass": 1,
            "rating": 6.7397,
            "minutes": 26,
            "total_pass": 25,
            "accurate_pass": 19,
            "duels_won": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 13,
            "crosses_total": 3,
            "crosses_accurate": 0,
            "touches": 44,
            "possession_lost": 13.0957,
            "dispossessed": 0.6988,
            "duels_lost": 5,
            "aerial_lost": 0,
            "total_contest": 3,
            "won_contest": 1,
            "ball_recovery": 4,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.4111,
            "offsides": 0,
            "ball_carries": 13,
            "total_progression": 49,
            "progressive_carries": 2,
            "shots_off_target": 1,
            "bench_appearance_probability": 0.57,
            "bench_expected_minutes": 25.54,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.257,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0775,
            "projected_assists": 0,
            "assist_probability": 0.0627,
            "finishing_factor": 0.9055,
            "creation_factor": 0.8,
            "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": "home",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Valencia",
              "stats": {
                "minutes": 29,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.1201,
                "expected_assists": 0.0176,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 15,
                "accurate_pass": 12,
                "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": 16416304,
              "match_date": "2026-08-28",
              "home_team": "Real Racing Club",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Elche",
              "stats": {
                "minutes": 59,
                "rating": 7.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.1443,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 14,
                "key_pass": 3,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416300,
              "match_date": "2026-08-23",
              "home_team": "Getafe",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Getafe",
              "stats": {
                "minutes": 90,
                "rating": 5.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.2234,
                "expected_assists": 0.0423,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 34,
                "accurate_pass": 27,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421061,
              "match_date": "2026-08-16",
              "home_team": "Real Racing Club",
              "away_team": "Villarreal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Racing Club",
              "opponent": "Villarreal",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "goal_rate": 1.0,
                "goals": 1,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 1.1338,
                "expected_assists": 0.3458,
                "total_shots": 6,
                "shots_on_target": 1,
                "shots_off_target": 3,
                "total_pass": 29,
                "accurate_pass": 20,
                "key_pass": 3,
                "tackles": 3,
                "interceptions": 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"
            }
          ],
          "ranking": {
            "global_player_rank": 2264,
            "combined_rank_score": 827.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 91.0,
            "sofascore_rating": 7.5,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1564.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.7397,
            "source_file": "data/player_rankings.csv",
            "player_name": "Andrés Martín",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mikel Vesga",
                  "ranking": 2259
                },
                {
                  "player_name": "Malo Gusto",
                  "ranking": 2260
                },
                {
                  "player_name": "Aldrix Jara",
                  "ranking": 2261
                },
                {
                  "player_name": "Yehor Yarmoliuk",
                  "ranking": 2262
                },
                {
                  "player_name": "Chimy Ávila",
                  "ranking": 2263
                }
              ],
              "lower": [
                {
                  "player_name": "Brais Méndez",
                  "ranking": 2265
                },
                {
                  "player_name": "Bafodé Diakité",
                  "ranking": 2266
                },
                {
                  "player_name": "Kwasi Sibo",
                  "ranking": 2267
                },
                {
                  "player_name": "Jordan Henderson",
                  "ranking": 2268
                },
                {
                  "player_name": "Andoni Gorosabel",
                  "ranking": 2269
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.5,
          "history_matches": 4,
          "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": 4,
            "data_confidence": 0.5,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.544307952762857,
            "bench_appearance_prob": 0.5701958160346754,
            "market_value_adjustment": 0.9993,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (4 historical appearances) to 25.5 expected mins (appearance prob 0.57)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.1065,
                "goals": 0.0922,
                "goal_rate": 0.0922,
                "shots_on_target": 0.4706,
                "total_shots": 1.0549,
                "expected_assists": 0.0848,
                "key_pass": 0.7184,
                "rating": 6.7397,
                "minutes": 23.0,
                "total_pass": 22.5394,
                "accurate_pass": 17.4762,
                "duels_won": 3.4429,
                "total_long_balls": 0.1927,
                "accurate_long_balls": 0.1927,
                "total_opp_half_passes": 16.2261,
                "accurate_opp_half_passes": 11.8491,
                "crosses_total": 2.9385,
                "crosses_accurate": 0.1927,
                "touches": 39.5434,
                "possession_lost": 11.7996,
                "dispossessed": 0.6993,
                "duels_lost": 4.5888,
                "aerial_lost": 0.3138,
                "total_contest": 2.558,
                "won_contest": 1.2597,
                "ball_recovery": 3.7518,
                "challenges_lost": 1.6652,
                "fouls": 0.6122,
                "fouls_drawn": 1.1116,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.6522,
                "tackles_won": 0.2267,
                "tackles": 1.0716,
                "clearances": 0.2667,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4535,
                "xgot": 0.5257,
                "offsides": 0.4935,
                "ball_carries": 11.7759,
                "total_progression": 44.1333,
                "progressive_carries": 2.1587,
                "shots_off_target": 0.5842
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:06:24.593912+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-10-11",
                    "opponent": "Valencia",
                    "minutes": 29.0,
                    "is_starting": false,
                    "weight": 0.3138,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Elche",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.2667,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-23",
                    "opponent": "Getafe",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2267,
                    "rating": 5.6
                  },
                  {
                    "match_date": "2026-08-16",
                    "opponent": "Villarreal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.1927,
                    "rating": 7.5
                  }
                ],
                "feature_row": {
                  "history_matches": 4.0,
                  "is_starting_11": 0.0,
                  "totalOppositionHalfPasses": 16.2261,
                  "expectedGoals": 0.5336,
                  "accurateOppositionHalfPasses": 11.8491,
                  "accuratePass": 17.4762,
                  "totalShots": 2.4641
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.10645781457424164,
                    "model_output": 0.1065,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0875
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0317
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.0101
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0077
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0065
                        }
                      ],
                      "others": -0.0239,
                      "total": 0.1065,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.584835
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.252822
                        },
                        {
                          "name": "duel_win_rate",
                          "margin": -0.073688
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.060228
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.051427
                        }
                      ],
                      "others_margin": -0.203588
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.09219110757112503,
                    "model_output": 0.0922,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0937
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0251
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.021
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0068
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0055
                        }
                      ],
                      "others": -0.0203,
                      "total": 0.0922,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.61777
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.206344
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.169339
                        },
                        {
                          "name": "goals",
                          "margin": -0.061533
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.050141
                        }
                      ],
                      "others_margin": -0.198944
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.47064608335494995,
                    "model_output": 0.4706,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.199
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0489
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0328
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": 0.0303
                        },
                        {
                          "name": "shot_accuracy",
                          "contribution": 0.0259
                        }
                      ],
                      "others": 0.0597,
                      "total": 0.4706,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.462248
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.134963
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.088348
                        },
                        {
                          "name": "expectedGoals",
                          "margin": 0.081851
                        },
                        {
                          "name": "shot_accuracy",
                          "margin": 0.065112
                        }
                      ],
                      "others_margin": 0.13557
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 1.054850459098816,
                    "model_output": 1.0549,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.5801
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.187
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0694
                        },
                        {
                          "name": "shotOffTarget",
                          "contribution": 0.0385
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0383
                        }
                      ],
                      "others": 0.0046,
                      "total": 1.0549,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.58007
                        },
                        {
                          "name": "totalShots",
                          "margin": 0.186957
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.069399
                        },
                        {
                          "name": "shotOffTarget",
                          "margin": 0.038504
                        },
                        {
                          "name": "ballRecovery",
                          "margin": -0.038314
                        }
                      ],
                      "others_margin": 0.004533
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.08482008427381516,
                    "model_output": 0.0848,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0206
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.008
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0045
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0039
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0041
                        }
                      ],
                      "others": 0.0207,
                      "total": 0.0848,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.386291
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.167573
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.083306
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.066839
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.065775
                        }
                      ],
                      "others_margin": 0.281086
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.7184383273124695,
                    "model_output": 0.7184,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2391
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.06
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": 0.0595
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0307
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0307
                        }
                      ],
                      "others": 0.1032,
                      "total": 0.7184,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.438736
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": 0.129444
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": 0.113636
                        },
                        {
                          "name": "expectedAssists",
                          "margin": 0.054017
                        },
                        {
                          "name": "keyPass",
                          "margin": 0.051229
                        }
                      ],
                      "others_margin": 0.155197
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.739655494689941,
                    "model_output": 6.7397,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1188
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": 0.0594
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0335
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": 0.0295
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0234
                        }
                      ],
                      "others": 0.0127,
                      "total": 6.7397,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.118786
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": 0.059355
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "margin": -0.033459
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": 0.029527
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": 0.02345
                        }
                      ],
                      "others_margin": 0.012567
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 4,
                  "role_matches": 1,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "all_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9993, quality 0.501)",
              "stats": {
                "expected_goals": 0.1064,
                "goals": 0.0921,
                "goal_rate": 0.0921,
                "shots_on_target": 0.4703,
                "total_shots": 1.0541,
                "expected_assists": 0.0848,
                "key_pass": 0.7179,
                "rating": 6.7397,
                "minutes": 23.0,
                "total_pass": 22.5236,
                "accurate_pass": 17.464,
                "duels_won": 3.4405,
                "total_long_balls": 0.1926,
                "accurate_long_balls": 0.1926,
                "total_opp_half_passes": 16.2147,
                "accurate_opp_half_passes": 11.8408,
                "crosses_total": 2.9364,
                "crosses_accurate": 0.1926,
                "touches": 39.5157,
                "possession_lost": 11.7913,
                "dispossessed": 0.6988,
                "duels_lost": 4.5856,
                "aerial_lost": 0.3136,
                "total_contest": 2.5562,
                "won_contest": 1.2588,
                "ball_recovery": 3.7492,
                "challenges_lost": 1.664,
                "fouls": 0.6118,
                "fouls_drawn": 1.1108,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.6517,
                "tackles_won": 0.2265,
                "tackles": 1.0708,
                "clearances": 0.2665,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.4532,
                "xgot": 0.5253,
                "offsides": 0.4932,
                "ball_carries": 11.7677,
                "total_progression": 44.1024,
                "progressive_carries": 2.1572,
                "shots_off_target": 0.5838
              },
              "params": {
                "market_value_eur": 8199999,
                "quality_factor": 0.5011,
                "boost_factor": 0.9993,
                "reference_quality": 0.505,
                "history_matches": 4,
                "history_shrink": 0.5556,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 23.0 to 25.5 expected minutes (appearance prob 0.57)",
              "stats": {
                "expected_goals": 0.1182,
                "goals": 0.1023,
                "goal_rate": 0.1023,
                "shots_on_target": 0.5223,
                "total_shots": 1.1707,
                "expected_assists": 0.0942,
                "key_pass": 0.7973,
                "rating": 6.7397,
                "minutes": 25.54,
                "total_pass": 25.0152,
                "accurate_pass": 19.3959,
                "duels_won": 3.8211,
                "total_long_balls": 0.2139,
                "accurate_long_balls": 0.2139,
                "total_opp_half_passes": 18.0084,
                "accurate_opp_half_passes": 13.1507,
                "crosses_total": 3.2612,
                "crosses_accurate": 0.2139,
                "touches": 43.887,
                "possession_lost": 13.0957,
                "dispossessed": 0.6988,
                "duels_lost": 5.0929,
                "aerial_lost": 0.3136,
                "total_contest": 2.839,
                "won_contest": 1.3981,
                "ball_recovery": 4.1639,
                "challenges_lost": 1.664,
                "fouls": 0.6795,
                "fouls_drawn": 1.2337,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.7238,
                "tackles_won": 0.2516,
                "tackles": 1.1893,
                "clearances": 0.296,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5033,
                "xgot": 0.5834,
                "offsides": 0.4932,
                "ball_carries": 13.0695,
                "total_progression": 48.9811,
                "progressive_carries": 2.3958,
                "shots_off_target": 0.6484,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 25.54
              },
              "params": {
                "expected_minutes": 25.54,
                "projection_minutes": 23.0,
                "minutes_scale": 1.1106,
                "appearance_probability": 0.57
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1182,
                "goals": 0.1023,
                "goal_rate": 0.1023,
                "shots_on_target": 0.5223,
                "total_shots": 1.1707,
                "expected_assists": 0.0942,
                "key_pass": 0.7973,
                "rating": 6.7397,
                "minutes": 25.54,
                "total_pass": 25.0152,
                "accurate_pass": 19.3959,
                "duels_won": 3.8211,
                "total_long_balls": 0.2139,
                "accurate_long_balls": 0.2139,
                "total_opp_half_passes": 18.0084,
                "accurate_opp_half_passes": 13.1507,
                "crosses_total": 3.2612,
                "crosses_accurate": 0.2139,
                "touches": 43.887,
                "possession_lost": 13.0957,
                "dispossessed": 0.6988,
                "duels_lost": 5.0929,
                "aerial_lost": 0.3136,
                "total_contest": 2.839,
                "won_contest": 1.3981,
                "ball_recovery": 4.1639,
                "challenges_lost": 1.664,
                "fouls": 0.6795,
                "fouls_drawn": 1.2337,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.7238,
                "tackles_won": 0.2516,
                "tackles": 1.1893,
                "clearances": 0.296,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5033,
                "xgot": 0.5834,
                "offsides": 0.4932,
                "ball_carries": 13.0695,
                "total_progression": 48.9811,
                "progressive_carries": 2.3958,
                "shots_off_target": 0.6484,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 25.54
              },
              "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.1182,
                "goal_rate": 0.1023,
                "goals": 0,
                "shots_on_target": 0.5223,
                "total_shots": 1.1707,
                "expected_assists": 0.0942,
                "key_pass": 0.7973,
                "rating": 6.7397,
                "minutes": 25.54,
                "total_pass": 25.0152,
                "accurate_pass": 19.3959,
                "duels_won": 3.8211,
                "total_long_balls": 0.2139,
                "accurate_long_balls": 0.2139,
                "total_opp_half_passes": 18.0084,
                "accurate_opp_half_passes": 13.1507,
                "crosses_total": 3.2612,
                "crosses_accurate": 0.2139,
                "touches": 43.887,
                "possession_lost": 13.0957,
                "dispossessed": 0.6988,
                "duels_lost": 5.0929,
                "aerial_lost": 0.3136,
                "total_contest": 2.839,
                "won_contest": 1.3981,
                "ball_recovery": 4.1639,
                "challenges_lost": 1.664,
                "fouls": 0.6795,
                "fouls_drawn": 1.2337,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7238,
                "tackles_won": 0.2516,
                "tackles": 1.1893,
                "clearances": 0.296,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5033,
                "xgot": 0.5834,
                "offsides": 0.4932,
                "ball_carries": 13.0695,
                "total_progression": 48.9811,
                "progressive_carries": 2.3958,
                "shots_off_target": 0.6484,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 25.54,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "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.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "expected_goals": 0.0833,
                "goal_rate": 0.1023,
                "goals": 0,
                "shots_on_target": 0.5223,
                "total_shots": 1.1707,
                "expected_assists": 0.0664,
                "key_pass": 0.7973,
                "rating": 6.7397,
                "minutes": 25.54,
                "total_pass": 25.0152,
                "accurate_pass": 19.3959,
                "duels_won": 3.8211,
                "total_long_balls": 0.2139,
                "accurate_long_balls": 0.2139,
                "total_opp_half_passes": 18.0084,
                "accurate_opp_half_passes": 13.1507,
                "crosses_total": 3.2612,
                "crosses_accurate": 0.2139,
                "touches": 43.887,
                "possession_lost": 13.0957,
                "dispossessed": 0.6988,
                "duels_lost": 5.0929,
                "aerial_lost": 0.3136,
                "total_contest": 2.839,
                "won_contest": 1.3981,
                "ball_recovery": 4.1639,
                "challenges_lost": 1.664,
                "fouls": 0.6795,
                "fouls_drawn": 1.2337,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7238,
                "tackles_won": 0.2516,
                "tackles": 1.1893,
                "clearances": 0.296,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5033,
                "xgot": 0.4111,
                "offsides": 0.4932,
                "ball_carries": 13.0695,
                "total_progression": 48.9811,
                "progressive_carries": 2.3958,
                "shots_off_target": 0.6484,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 25.54,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9055,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "scoreline_reset": true,
                "appearance_weight": 0.57
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1182,
                  "after": 0.0833
                },
                {
                  "stat": "expected_assists",
                  "before": 0.0942,
                  "after": 0.0664
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 77.0)",
              "stats": {
                "expected_goals": 0.0833,
                "goal_rate": 0.1023,
                "goals": 0,
                "shots_on_target": 0.5223,
                "total_shots": 1.1707,
                "expected_assists": 0.0664,
                "key_pass": 0.7973,
                "rating": 6.7397,
                "minutes": 25.54,
                "total_pass": 25.0152,
                "accurate_pass": 19.3959,
                "duels_won": 3.8211,
                "total_long_balls": 0.2139,
                "accurate_long_balls": 0.2139,
                "total_opp_half_passes": 18.0084,
                "accurate_opp_half_passes": 13.1507,
                "crosses_total": 3.2612,
                "crosses_accurate": 0.2139,
                "touches": 43.887,
                "possession_lost": 13.0957,
                "dispossessed": 0.6988,
                "duels_lost": 5.0929,
                "aerial_lost": 0.3136,
                "total_contest": 2.839,
                "won_contest": 1.3981,
                "ball_recovery": 4.1639,
                "challenges_lost": 1.664,
                "fouls": 0.6795,
                "fouls_drawn": 1.2337,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7238,
                "tackles_won": 0.2516,
                "tackles": 1.1893,
                "clearances": 0.296,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5033,
                "xgot": 0.4111,
                "offsides": 0.4932,
                "ball_carries": 13.0695,
                "total_progression": 48.9811,
                "progressive_carries": 2.3958,
                "shots_off_target": 0.6484,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 25.54,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9055,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 11,
                "squad_role": "substitute",
                "squad_rank_basis": "projected_rating",
                "affects_projection": false,
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2264,
                "fifa_rank": 1564.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)",
              "stats": {
                "expected_goals": 0.0833,
                "goal_rate": 0.1023,
                "goals": 0,
                "shots_on_target": 0.5223,
                "total_shots": 1.1707,
                "expected_assists": 0.0664,
                "key_pass": 0.7973,
                "rating": 6.7397,
                "minutes": 25.54,
                "total_pass": 25.0152,
                "accurate_pass": 19.3959,
                "duels_won": 3.8211,
                "total_long_balls": 0.2139,
                "accurate_long_balls": 0.2139,
                "total_opp_half_passes": 18.0084,
                "accurate_opp_half_passes": 13.1507,
                "crosses_total": 3.2612,
                "crosses_accurate": 0.2139,
                "touches": 43.887,
                "possession_lost": 13.0957,
                "dispossessed": 0.6988,
                "duels_lost": 5.0929,
                "aerial_lost": 0.3136,
                "total_contest": 2.839,
                "won_contest": 1.3981,
                "ball_recovery": 4.1639,
                "challenges_lost": 1.664,
                "fouls": 0.6795,
                "fouls_drawn": 1.2337,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7238,
                "tackles_won": 0.2516,
                "tackles": 1.1893,
                "clearances": 0.296,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5033,
                "xgot": 0.4111,
                "offsides": 0.4932,
                "ball_carries": 13.0695,
                "total_progression": 48.9811,
                "progressive_carries": 2.3958,
                "shots_off_target": 0.6484,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 25.54,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0775,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9055,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0775,
                "goal_rate": 0.1023,
                "scorer_weight": 0.0754,
                "squad_weight_total": 1.5727,
                "weight_share": 0.048,
                "finishing_factor": 0.9055,
                "appearance_weight": 0.57,
                "weight_rank": 6,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.0833,
                "goal_rate": 0.1023,
                "goals": 0,
                "shots_on_target": 0.5223,
                "total_shots": 1.1707,
                "expected_assists": 0.0664,
                "key_pass": 0.7973,
                "rating": 6.7397,
                "minutes": 25.54,
                "total_pass": 25.0152,
                "accurate_pass": 19.3959,
                "duels_won": 3.8211,
                "total_long_balls": 0.2139,
                "accurate_long_balls": 0.2139,
                "total_opp_half_passes": 18.0084,
                "accurate_opp_half_passes": 13.1507,
                "crosses_total": 3.2612,
                "crosses_accurate": 0.2139,
                "touches": 43.887,
                "possession_lost": 13.0957,
                "dispossessed": 0.6988,
                "duels_lost": 5.0929,
                "aerial_lost": 0.3136,
                "total_contest": 2.839,
                "won_contest": 1.3981,
                "ball_recovery": 4.1639,
                "challenges_lost": 1.664,
                "fouls": 0.6795,
                "fouls_drawn": 1.2337,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.7238,
                "tackles_won": 0.2516,
                "tackles": 1.1893,
                "clearances": 0.296,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.5033,
                "xgot": 0.4111,
                "offsides": 0.4932,
                "ball_carries": 13.0695,
                "total_progression": 48.9811,
                "progressive_carries": 2.3958,
                "shots_off_target": 0.6484,
                "bench_appearance_probability": 0.57,
                "bench_expected_minutes": 25.54,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0775,
                "projected_assists": 0,
                "assist_probability": 0.0627,
                "finishing_factor": 0.9055,
                "creation_factor": 0.8,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0627,
                "assist_rate": 0.0,
                "provider_weight": 0.0531,
                "squad_weight_total": 0.9036,
                "weight_share": 0.0588,
                "creation_factor": 0.8,
                "appearance_weight": 0.57,
                "weight_rank": 7,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "Giorgi Guliashvili": {
          "player_id": 965257,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 7,
          "height": 179,
          "market_value": 3400000,
          "stats": {
            "expected_goals": 0.0904,
            "goal_rate": 0.1258,
            "goals": 0,
            "shots_on_target": 0,
            "total_shots": 1,
            "expected_assists": 0.0096,
            "key_pass": 0,
            "rating": 6.5953,
            "minutes": 25,
            "total_pass": 4,
            "accurate_pass": 4,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 1.3725,
            "dispossessed": 0.5012,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "assist_rate": 0.0,
            "assists": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 3,
            "progressive_carries": 0,
            "shots_off_target": 0,
            "bench_appearance_probability": 0.56,
            "bench_expected_minutes": 25.31,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.257,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0835,
            "projected_assists": 0,
            "assist_probability": 0.0095,
            "finishing_factor": 0.9734,
            "creation_factor": 0.8,
            "fifa_overall": 69.0
          },
          "latest_10_games": [
            {
              "match_id": 16416344,
              "match_date": "2026-09-19",
              "home_team": "Celta Vigo",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 15,
                "rating": 6.4,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_goals": 0.3663,
                "expected_assists": 0.0036,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 3,
                "accurate_pass": 3,
                "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": 16416346,
              "match_date": "2026-09-16",
              "home_team": "FC Barcelona",
              "away_team": "Real Racing Club",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "FC Barcelona",
              "stats": {
                "minutes": 12,
                "rating": 6.6,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_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": 16416328,
              "match_date": "2026-09-12",
              "home_team": "Real Racing Club",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 15,
                "rating": 6.5,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 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": 16416304,
              "match_date": "2026-08-28",
              "home_team": "Real Racing Club",
              "away_team": "Elche",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Real Racing Club",
              "opponent": "Elche",
              "stats": {
                "minutes": 21,
                "rating": 6.3,
                "assist_rate": 0.0,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1,
                "clearances": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 5690,
            "combined_rank_score": 3969.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 976.0,
            "sofascore_rating": 6.3,
            "sofascore_appearances": 1.0,
            "fifa_rank": 6962.0,
            "fifa_overall": 69.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "ranking_match": "player_id",
            "projected_match_rating": 6.5953,
            "source_file": "data/player_rankings.csv",
            "player_name": "Giorgi Guliashvili",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "James McConnell",
                  "ranking": 5685
                },
                {
                  "player_name": "Bryan Rabello",
                  "ranking": 5686
                },
                {
                  "player_name": "Jherson Mosquera",
                  "ranking": 5687
                },
                {
                  "player_name": "Luka Ilić",
                  "ranking": 5688
                },
                {
                  "player_name": "Dominic Hyam",
                  "ranking": 5689
                }
              ],
              "lower": [
                {
                  "player_name": "Joao Grimaldo",
                  "ranking": 5691
                },
                {
                  "player_name": "Ben Whiteman",
                  "ranking": 5692
                },
                {
                  "player_name": "Emiliano Ancheta",
                  "ranking": 5693
                },
                {
                  "player_name": "Marc Bola",
                  "ranking": 5694
                },
                {
                  "player_name": "Dael Fry",
                  "ranking": 5695
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.5,
          "history_matches": 4,
          "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": 4,
            "data_confidence": 0.5,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.31189584546643,
            "bench_appearance_prob": 0.5596316293393832,
            "market_value_adjustment": 0.9896,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (4 historical appearances) to 25.3 expected mins (appearance prob 0.56)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 7 target models",
              "stats": {
                "expected_goals": 0.0881,
                "goals": 0.0849,
                "goal_rate": 0.0849,
                "shots_on_target": 0.2267,
                "total_shots": 0.5014,
                "expected_assists": 0.0094,
                "key_pass": 0.2251,
                "rating": 6.5953,
                "minutes": 16.9,
                "total_pass": 2.8073,
                "accurate_pass": 2.6146,
                "duels_won": 1.0871,
                "total_long_balls": 0.2267,
                "accurate_long_balls": 0.2267,
                "total_opp_half_passes": 1.3609,
                "accurate_opp_half_passes": 1.1682,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 5.5196,
                "possession_lost": 0.926,
                "dispossessed": 0.5065,
                "duels_lost": 1.3985,
                "aerial_lost": 0.6993,
                "total_contest": 0.5806,
                "won_contest": 0.5806,
                "ball_recovery": 0.7602,
                "challenges_lost": 0.0,
                "fouls": 0.1927,
                "fouls_drawn": 0.5065,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1927,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3138,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6276,
                "total_progression": 2.0065,
                "progressive_carries": 0.3138,
                "shots_off_target": 0.2747
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 6,
                  "trained_at": "2026-10-17T10:06:24.593912+00:00",
                  "trained_on": {
                    "matches": 1369,
                    "players": 607,
                    "rows": 16160
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-19",
                    "opponent": "Celta Vigo",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.3138,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-09-16",
                    "opponent": "FC Barcelona",
                    "minutes": 12.0,
                    "is_starting": false,
                    "weight": 0.2667,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-09-12",
                    "opponent": "Deportivo Alavés",
                    "minutes": 15.0,
                    "is_starting": false,
                    "weight": 0.2267,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-28",
                    "opponent": "Elche",
                    "minutes": 21.0,
                    "is_starting": false,
                    "weight": 0.1927,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 4.0,
                  "is_starting_11": 0.0,
                  "totalOppositionHalfPasses": 1.3609,
                  "expectedGoals": 0.1149,
                  "accurateOppositionHalfPasses": 1.1682,
                  "accuratePass": 2.6146,
                  "totalShots": 0.3138
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.08807600289583206,
                    "model_output": 0.0881,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2914
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.08
                      },
                      {
                        "name": "goals",
                        "importance": 0.0314
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.031
                      },
                      {
                        "name": "ballCarriesCount_p90",
                        "importance": 0.0259
                      }
                    ],
                    "decomposition": {
                      "base": 0.1975,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0822
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0124
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0107
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0071
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0062
                        }
                      ],
                      "others": -0.005,
                      "total": 0.0881,
                      "log_link": true,
                      "margin_base": -1.621917,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.537806
                        },
                        {
                          "name": "goals",
                          "margin": -0.113595
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.109537
                        },
                        {
                          "name": "touches_p90",
                          "margin": 0.07394
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.064648
                        }
                      ],
                      "others_margin": -0.055992
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.08493202924728394,
                    "model_output": 0.0849,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1405
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0774
                      },
                      {
                        "name": "goals",
                        "importance": 0.051
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0285
                      },
                      {
                        "name": "rating",
                        "importance": 0.0262
                      }
                    ],
                    "decomposition": {
                      "base": 0.2034,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0834
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0174
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0086
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0059
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0052
                        }
                      ],
                      "others": 0.002,
                      "total": 0.0849,
                      "log_link": true,
                      "margin_base": -1.59279,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.527896
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.156426
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.087964
                        },
                        {
                          "name": "pass_accuracy",
                          "margin": -0.065327
                        },
                        {
                          "name": "aerialWon",
                          "margin": -0.060457
                        }
                      ],
                      "others_margin": 0.024954
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.2266843169927597,
                    "model_output": 0.2267,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1975
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.065
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0557
                      },
                      {
                        "name": "goals",
                        "importance": 0.0474
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0299
                      }
                    ],
                    "decomposition": {
                      "base": 0.5376,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2212
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0242
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.014
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0129
                        },
                        {
                          "name": "expectedGoals",
                          "contribution": -0.0122
                        }
                      ],
                      "others": -0.0264,
                      "total": 0.2267,
                      "log_link": true,
                      "margin_base": -0.620549,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.530118
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.079601
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.049096
                        },
                        {
                          "name": "goals",
                          "margin": -0.047498
                        },
                        {
                          "name": "expectedGoals",
                          "margin": -0.047166
                        }
                      ],
                      "others_margin": -0.11017
                    }
                  },
                  {
                    "target": "totalShots",
                    "predicted": 0.501358151435852,
                    "model_output": 0.5014,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.2847
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.061
                      },
                      {
                        "name": "expectedGoals",
                        "importance": 0.0433
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0377
                      },
                      {
                        "name": "goals",
                        "importance": 0.0252
                      }
                    ],
                    "decomposition": {
                      "base": 1.3738,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.471
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.1397
                        },
                        {
                          "name": "goals",
                          "contribution": -0.0784
                        },
                        {
                          "name": "big_chance_conversion",
                          "contribution": 0.0456
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0318
                        }
                      ],
                      "others": -0.1971,
                      "total": 0.5014,
                      "log_link": false,
                      "margin_base": 1.37384,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.471043
                        },
                        {
                          "name": "totalShots",
                          "margin": -0.139729
                        },
                        {
                          "name": "goals",
                          "margin": -0.078437
                        },
                        {
                          "name": "big_chance_conversion",
                          "margin": 0.045647
                        },
                        {
                          "name": "totalShots_p90",
                          "margin": -0.031813
                        }
                      ],
                      "others_margin": -0.197107
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.009406071156263351,
                    "model_output": 0.0094,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.1263
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0725
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0596
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0595
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0576
                      }
                    ],
                    "decomposition": {
                      "base": 0.0642,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0225
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0113
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0069
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0032
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0022
                        }
                      ],
                      "others": -0.0087,
                      "total": 0.0094,
                      "log_link": true,
                      "margin_base": -2.745511,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.430205
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.317126
                        },
                        {
                          "name": "expectedAssists",
                          "margin": -0.25651
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.147603
                        },
                        {
                          "name": "rating",
                          "margin": -0.116766
                        }
                      ],
                      "others_margin": -0.652681
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.22510506212711334,
                    "model_output": 0.2251,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.1476
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.1377
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0844
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0598
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0346
                      }
                    ],
                    "decomposition": {
                      "base": 0.6734,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2642
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0402
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0319
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "contribution": -0.0272
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0178
                        }
                      ],
                      "others": -0.067,
                      "total": 0.2251,
                      "log_link": true,
                      "margin_base": -0.395462,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.49806
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "margin": -0.10334
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.090508
                        },
                        {
                          "name": "accurateOppositionHalfPasses",
                          "margin": -0.084117
                        },
                        {
                          "name": "totalPass",
                          "margin": -0.059305
                        }
                      ],
                      "others_margin": -0.260396
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.595261096954346,
                    "model_output": 6.5953,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0494
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0487
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0428
                      },
                      {
                        "name": "rating",
                        "importance": 0.0414
                      }
                    ],
                    "decomposition": {
                      "base": 6.767,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0429
                        },
                        {
                          "name": "rating",
                          "contribution": -0.0217
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.016
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0151
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0131
                        }
                      ],
                      "others": -0.0629,
                      "total": 6.5953,
                      "log_link": false,
                      "margin_base": 6.767002,
                      "item_margins": [
                        {
                          "name": "is_starting_11",
                          "margin": -0.042871
                        },
                        {
                          "name": "rating",
                          "margin": -0.021706
                        },
                        {
                          "name": "possessionLostCtrl",
                          "margin": -0.016036
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "margin": -0.015056
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "margin": -0.013127
                        }
                      ],
                      "others_margin": -0.062947
                    }
                  }
                ],
                "prediction_basis": {
                  "source": "xgboost_regressor",
                  "role": "substitute",
                  "history_matches": 4,
                  "role_matches": 4,
                  "minutes_source": "role_history_shrunk",
                  "volume_basis": "role_history"
                },
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the recency-weighted average of his appearances in this role (starter / substitute). Missing provider values count as 0 only when the provider recorded that stat for the match."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9896, quality 0.442)",
              "stats": {
                "expected_goals": 0.0872,
                "goals": 0.084,
                "goal_rate": 0.084,
                "shots_on_target": 0.2243,
                "total_shots": 0.4962,
                "expected_assists": 0.0093,
                "key_pass": 0.2228,
                "rating": 6.5953,
                "minutes": 16.9,
                "total_pass": 2.7781,
                "accurate_pass": 2.5874,
                "duels_won": 1.0758,
                "total_long_balls": 0.2243,
                "accurate_long_balls": 0.2243,
                "total_opp_half_passes": 1.3467,
                "accurate_opp_half_passes": 1.1561,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 5.4622,
                "possession_lost": 0.9164,
                "dispossessed": 0.5012,
                "duels_lost": 1.384,
                "aerial_lost": 0.692,
                "total_contest": 0.5746,
                "won_contest": 0.5746,
                "ball_recovery": 0.7523,
                "challenges_lost": 0.0,
                "fouls": 0.1907,
                "fouls_drawn": 0.5012,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.1907,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.3105,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 1.6107,
                "total_progression": 1.9856,
                "progressive_carries": 0.3105,
                "shots_off_target": 0.2718
              },
              "params": {
                "market_value_eur": 3400000,
                "quality_factor": 0.4424,
                "boost_factor": 0.9896,
                "reference_quality": 0.505,
                "history_matches": 4,
                "history_shrink": 0.5556,
                "market_value_known": true
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled from 16.9 to 25.3 expected minutes (appearance prob 0.56)",
              "stats": {
                "expected_goals": 0.1306,
                "goals": 0.1258,
                "goal_rate": 0.1258,
                "shots_on_target": 0.3359,
                "total_shots": 0.7432,
                "expected_assists": 0.0139,
                "key_pass": 0.3337,
                "rating": 6.5953,
                "minutes": 25.31,
                "total_pass": 4.1609,
                "accurate_pass": 3.8753,
                "duels_won": 1.6113,
                "total_long_balls": 0.3359,
                "accurate_long_balls": 0.3359,
                "total_opp_half_passes": 2.017,
                "accurate_opp_half_passes": 1.7315,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.181,
                "possession_lost": 1.3725,
                "dispossessed": 0.5012,
                "duels_lost": 2.0729,
                "aerial_lost": 0.692,
                "total_contest": 0.8606,
                "won_contest": 0.8606,
                "ball_recovery": 1.1268,
                "challenges_lost": 0.0,
                "fouls": 0.2856,
                "fouls_drawn": 0.7507,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2856,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.465,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.4124,
                "total_progression": 2.9739,
                "progressive_carries": 0.465,
                "shots_off_target": 0.4071,
                "bench_appearance_probability": 0.56,
                "bench_expected_minutes": 25.31
              },
              "params": {
                "expected_minutes": 25.31,
                "projection_minutes": 16.9,
                "minutes_scale": 1.4977,
                "appearance_probability": 0.56
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1306,
                "goals": 0.1258,
                "goal_rate": 0.1258,
                "shots_on_target": 0.3359,
                "total_shots": 0.7432,
                "expected_assists": 0.0139,
                "key_pass": 0.3337,
                "rating": 6.5953,
                "minutes": 25.31,
                "total_pass": 4.1609,
                "accurate_pass": 3.8753,
                "duels_won": 1.6113,
                "total_long_balls": 0.3359,
                "accurate_long_balls": 0.3359,
                "total_opp_half_passes": 2.017,
                "accurate_opp_half_passes": 1.7315,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.181,
                "possession_lost": 1.3725,
                "dispossessed": 0.5012,
                "duels_lost": 2.0729,
                "aerial_lost": 0.692,
                "total_contest": 0.8606,
                "won_contest": 0.8606,
                "ball_recovery": 1.1268,
                "challenges_lost": 0.0,
                "fouls": 0.2856,
                "fouls_drawn": 0.7507,
                "assists": 0.0,
                "assist_rate": 0.0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2856,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.465,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.4124,
                "total_progression": 2.9739,
                "progressive_carries": 0.465,
                "shots_off_target": 0.4071,
                "bench_appearance_probability": 0.56,
                "bench_expected_minutes": 25.31
              },
              "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.1306,
                "goal_rate": 0.1258,
                "goals": 0,
                "shots_on_target": 0.3359,
                "total_shots": 0.7432,
                "expected_assists": 0.0139,
                "key_pass": 0.3337,
                "rating": 6.5953,
                "minutes": 25.31,
                "total_pass": 4.1609,
                "accurate_pass": 3.8753,
                "duels_won": 1.6113,
                "total_long_balls": 0.3359,
                "accurate_long_balls": 0.3359,
                "total_opp_half_passes": 2.017,
                "accurate_opp_half_passes": 1.7315,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.181,
                "possession_lost": 1.3725,
                "dispossessed": 0.5012,
                "duels_lost": 2.0729,
                "aerial_lost": 0.692,
                "total_contest": 0.8606,
                "won_contest": 0.8606,
                "ball_recovery": 1.1268,
                "challenges_lost": 0.0,
                "fouls": 0.2856,
                "fouls_drawn": 0.7507,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2856,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.465,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.4124,
                "total_progression": 2.9739,
                "progressive_carries": 0.465,
                "shots_off_target": 0.4071,
                "bench_appearance_probability": 0.56,
                "bench_expected_minutes": 25.31,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "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.39 (squad xG sum 1.1244, xG scale 1.2362, xA scale 1.2362, team xA 0.92 = 0.66 x lambda)",
              "stats": {
                "expected_goals": 0.0904,
                "goal_rate": 0.1258,
                "goals": 0,
                "shots_on_target": 0.3359,
                "total_shots": 0.7432,
                "expected_assists": 0.0096,
                "key_pass": 0.3337,
                "rating": 6.5953,
                "minutes": 25.31,
                "total_pass": 4.1609,
                "accurate_pass": 3.8753,
                "duels_won": 1.6113,
                "total_long_balls": 0.3359,
                "accurate_long_balls": 0.3359,
                "total_opp_half_passes": 2.017,
                "accurate_opp_half_passes": 1.7315,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.181,
                "possession_lost": 1.3725,
                "dispossessed": 0.5012,
                "duels_lost": 2.0729,
                "aerial_lost": 0.692,
                "total_contest": 0.8606,
                "won_contest": 0.8606,
                "ball_recovery": 1.1268,
                "challenges_lost": 0.0,
                "fouls": 0.2856,
                "fouls_drawn": 0.7507,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2856,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.465,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.4124,
                "total_progression": 2.9739,
                "progressive_carries": 0.465,
                "shots_off_target": 0.4071,
                "bench_appearance_probability": 0.56,
                "bench_expected_minutes": 25.31,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9734,
                "creation_factor": 0.8
              },
              "params": {
                "team_lambda": 1.39,
                "squad_xg_sum": 1.1244,
                "squad_xa_sum": 0.7429,
                "team_expected_assists": 0.9183,
                "team_xa_to_xg_ratio": 0.6607,
                "bench_appearance_weighted": true,
                "xg_scale": 1.2362,
                "xa_scale": 1.2362,
                "opponent_lambda": 1.305,
                "scoreline_reset": true,
                "appearance_weight": 0.56
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1306,
                  "after": 0.0904
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Display-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 69.0)",
              "stats": {
                "expected_goals": 0.0904,
                "goal_rate": 0.1258,
                "goals": 0,
                "shots_on_target": 0.3359,
                "total_shots": 0.7432,
                "expected_assists": 0.0096,
                "key_pass": 0.3337,
                "rating": 6.5953,
                "minutes": 25.31,
                "total_pass": 4.1609,
                "accurate_pass": 3.8753,
                "duels_won": 1.6113,
                "total_long_balls": 0.3359,
                "accurate_long_balls": 0.3359,
                "total_opp_half_passes": 2.017,
                "accurate_opp_half_passes": 1.7315,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.181,
                "possession_lost": 1.3725,
                "dispossessed": 0.5012,
                "duels_lost": 2.0729,
                "aerial_lost": 0.692,
                "total_contest": 0.8606,
                "won_contest": 0.8606,
                "ball_recovery": 1.1268,
                "challenges_lost": 0.0,
                "fouls": 0.2856,
                "fouls_drawn": 0.7507,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2856,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.465,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.4124,
                "total_progression": 2.9739,
                "progressive_carries": 0.465,
                "shots_off_target": 0.4071,
                "bench_appearance_probability": 0.56,
                "bench_expected_minutes": 25.31,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9734,
                "creation_factor": 0.8,
                "fifa_overall": 69.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": 5690,
                "fifa_rank": 6962.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "ranking_match": "player_id",
                "fifa_overall": 69.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.0904,
                "goal_rate": 0.1258,
                "goals": 0,
                "shots_on_target": 0.3359,
                "total_shots": 0.7432,
                "expected_assists": 0.0096,
                "key_pass": 0.3337,
                "rating": 6.5953,
                "minutes": 25.31,
                "total_pass": 4.1609,
                "accurate_pass": 3.8753,
                "duels_won": 1.6113,
                "total_long_balls": 0.3359,
                "accurate_long_balls": 0.3359,
                "total_opp_half_passes": 2.017,
                "accurate_opp_half_passes": 1.7315,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.181,
                "possession_lost": 1.3725,
                "dispossessed": 0.5012,
                "duels_lost": 2.0729,
                "aerial_lost": 0.692,
                "total_contest": 0.8606,
                "won_contest": 0.8606,
                "ball_recovery": 1.1268,
                "challenges_lost": 0.0,
                "fouls": 0.2856,
                "fouls_drawn": 0.7507,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2856,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.465,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.4124,
                "total_progression": 2.9739,
                "progressive_carries": 0.465,
                "shots_off_target": 0.4071,
                "bench_appearance_probability": 0.56,
                "bench_expected_minutes": 25.31,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0835,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "finishing_factor": 0.9734,
                "creation_factor": 0.8,
                "fifa_overall": 69.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0835,
                "goal_rate": 0.1258,
                "scorer_weight": 0.088,
                "squad_weight_total": 1.5727,
                "weight_share": 0.056,
                "finishing_factor": 0.9734,
                "appearance_weight": 0.56,
                "weight_rank": 5,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Yassir Zabiri",
                    "weight": 0.7002,
                    "already": 0,
                    "effective_weight": 0.7002,
                    "runner_up": "Pablo García",
                    "runner_up_effective_weight": 0.2193
                  }
                ]
              }
            },
            {
              "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.0904,
                "goal_rate": 0.1258,
                "goals": 0,
                "shots_on_target": 0.3359,
                "total_shots": 0.7432,
                "expected_assists": 0.0096,
                "key_pass": 0.3337,
                "rating": 6.5953,
                "minutes": 25.31,
                "total_pass": 4.1609,
                "accurate_pass": 3.8753,
                "duels_won": 1.6113,
                "total_long_balls": 0.3359,
                "accurate_long_balls": 0.3359,
                "total_opp_half_passes": 2.017,
                "accurate_opp_half_passes": 1.7315,
                "crosses_total": 0.0,
                "crosses_accurate": 0.0,
                "touches": 8.181,
                "possession_lost": 1.3725,
                "dispossessed": 0.5012,
                "duels_lost": 2.0729,
                "aerial_lost": 0.692,
                "total_contest": 0.8606,
                "won_contest": 0.8606,
                "ball_recovery": 1.1268,
                "challenges_lost": 0.0,
                "fouls": 0.2856,
                "fouls_drawn": 0.7507,
                "assist_rate": 0.0,
                "assists": 0,
                "interceptions": 0.0,
                "tackles_won": 0.0,
                "tackles": 0.0,
                "clearances": 0.2856,
                "blocks": 0.0,
                "big_chances_created": 0.0,
                "big_chances_missed": 0.465,
                "xgot": 0.0,
                "offsides": 0.0,
                "ball_carries": 2.4124,
                "total_progression": 2.9739,
                "progressive_carries": 0.465,
                "shots_off_target": 0.4071,
                "bench_appearance_probability": 0.56,
                "bench_expected_minutes": 25.31,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.257,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0835,
                "projected_assists": 0,
                "assist_probability": 0.0095,
                "finishing_factor": 0.9734,
                "creation_factor": 0.8,
                "fifa_overall": 69.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0095,
                "assist_rate": 0.0,
                "provider_weight": 0.0077,
                "squad_weight_total": 0.9036,
                "weight_share": 0.0085,
                "creation_factor": 0.8,
                "appearance_weight": 0.56,
                "weight_rank": 12,
                "eligible_players": 12,
                "allocation_rounds": [
                  {
                    "n": 1,
                    "player": "Iñigo Vicente",
                    "weight": 0.2841,
                    "already": 0,
                    "effective_weight": 0.2841,
                    "runner_up": "Jorge Salinas",
                    "runner_up_effective_weight": 0.1846,
                    "blocked_own_goal": [
                      "Yassir Zabiri"
                    ]
                  }
                ]
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.39,
        "expected_assists": 0.92,
        "total_shots": 15,
        "shots_on_target": 3,
        "total_passes": 444,
        "interceptions": 6,
        "tackles": 16,
        "avg_rating": 6.81,
        "possession_estimated_pct": 49.3,
        "pressing_actions_per_90": 6.0
      }
    }
  },
  "antagonist_report": {
    "home_attacking_duels": [
      {
        "attacker": "Rubén García",
        "attacker_role": "LW",
        "attacker_market_value": 1700000,
        "attacker_height": 171,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Pablo Ramón"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.437,
        "duel_zone": "Left Wing vs Right Back — Flank Battle",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.42,
        "xg_contribution": 0.1007,
        "xg_multiplier": 0.9118,
        "shots_in_zone": 1.8,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.1,
        "aerial_duels": 2,
        "aerial_won": 0.8,
        "crosses_in_zone": 1.9,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Pablo Ramón",
            "role": "RB",
            "market_value": 1500000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.6,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 1.2,
            "defensive_success_rate": 0.58
          }
        ],
        "duel_analysis": "Rubén García (LW) faces tough defensive resistance against Pablo Ramón in a direct 1v1 contest. Duel win probability: 42%.  Matchup xG multiplier ×0.91 (×1.00 = his usual level). Projected xG contribution: 0.101 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Ante Budimir",
        "attacker_role": "ST",
        "attacker_market_value": 2600000,
        "attacker_height": 190,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Jeanuël Belocian",
          "Alvaro Mantilla"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.497,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.187,
        "xg_contribution": 0.4115,
        "xg_multiplier": 0.9806,
        "shots_in_zone": 2.1,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 2.0,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Jeanuël Belocian",
            "role": "CB",
            "market_value": 12900000,
            "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.5,
            "defensive_success_rate": 0.813
          },
          {
            "player": "Alvaro Mantilla",
            "role": "CB",
            "market_value": 1200000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.813
          }
        ],
        "duel_analysis": "Ante Budimir (ST) is evenly matched against Jeanuël Belocian and Alvaro Mantilla in a 2-defender block. Duel win probability: 19%.  Matchup xG multiplier ×0.98 (×1.00 = his usual level). Projected xG contribution: 0.411 — with neither side clearly dominant."
      },
      {
        "attacker": "Iker Muñoz",
        "attacker_role": "CDM",
        "attacker_market_value": 1800000,
        "attacker_height": 179,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Íñigo Sáinz-Maza"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.437,
        "duel_zone": "CDM vs CDM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.4,
        "xg_contribution": 0.0347,
        "xg_multiplier": 0.9706,
        "shots_in_zone": 1.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 1.0,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Íñigo Sáinz-Maza",
            "role": "CDM",
            "market_value": 1000000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.6,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.6
          }
        ],
        "duel_analysis": "Iker Muñoz (CDM) is evenly matched against Íñigo Sáinz-Maza in a direct 1v1 contest. Duel win probability: 40%.  Matchup xG multiplier ×0.97 (×1.00 = his usual level). Projected xG contribution: 0.035 — with neither side clearly dominant."
      },
      {
        "attacker": "Moi Gómez",
        "attacker_role": "CM",
        "attacker_market_value": 1600000,
        "attacker_height": 174,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Íñigo Sáinz-Maza"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.437,
        "duel_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.41,
        "xg_contribution": 0.0349,
        "xg_multiplier": 0.9412,
        "shots_in_zone": 1.6,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Íñigo Sáinz-Maza",
            "role": "CDM",
            "market_value": 1000000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.6,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.59
          }
        ],
        "duel_analysis": "Moi Gómez (CM) is evenly matched against Íñigo Sáinz-Maza in a direct 1v1 contest. Duel win probability: 41%.  Matchup xG multiplier ×0.94 (×1.00 = his usual level). Projected xG contribution: 0.035 — with neither side clearly dominant."
      },
      {
        "attacker": "Jon Moncayola",
        "attacker_role": "CM",
        "attacker_market_value": 7300000,
        "attacker_height": 182,
        "attacker_skill_quality": 0.49,
        "defenders": [
          "Íñigo Sáinz-Maza"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.437,
        "duel_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.47,
        "xg_contribution": 0.0437,
        "xg_multiplier": 1.0296,
        "shots_in_zone": 1.7,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.8,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Íñigo Sáinz-Maza",
            "role": "CDM",
            "market_value": 1000000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.5,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.53
          }
        ],
        "duel_analysis": "Jon Moncayola (CM) is evenly matched against Íñigo Sáinz-Maza in a direct 1v1 contest. Duel win probability: 47%.  Matchup xG multiplier ×1.03 (×1.00 = his usual level). Projected xG contribution: 0.044 — with neither side clearly dominant."
      },
      {
        "attacker": "Lucas Torró",
        "attacker_role": "CM",
        "attacker_market_value": 2700000,
        "attacker_height": 190,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Íñigo Sáinz-Maza"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.437,
        "duel_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.474,
        "xg_contribution": 0.0879,
        "xg_multiplier": 1.0353,
        "shots_in_zone": 1.7,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.8,
        "aerial_duels": 2,
        "aerial_won": 1.3,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Íñigo Sáinz-Maza",
            "role": "CDM",
            "market_value": 1000000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.5,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.526
          }
        ],
        "duel_analysis": "Lucas Torró (CM) is evenly matched against Íñigo Sáinz-Maza in a direct 1v1 contest. Duel win probability: 47%.  Matchup xG multiplier ×1.04 (×1.00 = his usual level). Projected xG contribution: 0.088 — with neither side clearly dominant."
      }
    ],
    "away_attacking_duels": [
      {
        "attacker": "Yassir Zabiri",
        "attacker_role": "ST",
        "attacker_market_value": 22000000,
        "attacker_height": 182,
        "attacker_skill_quality": 0.65,
        "defenders": [
          "Enzo Boyomo",
          "Alejandro Catena"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.506,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.23,
        "xg_contribution": 0.4541,
        "xg_multiplier": 1.0437,
        "shots_in_zone": 2.2,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.4,
        "aerial_duels": 3,
        "aerial_won": 1.7,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Enzo Boyomo",
            "role": "CB",
            "market_value": 14600000,
            "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.7,
            "defensive_success_rate": 0.77
          },
          {
            "player": "Alejandro Catena",
            "role": "CB",
            "market_value": 2700000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.77
          }
        ],
        "duel_analysis": "Yassir Zabiri (ST) is evenly matched against Enzo Boyomo and Alejandro Catena in a 2-defender block. Duel win probability: 23%.  Matchup xG multiplier ×1.04 (×1.00 = his usual level). Projected xG contribution: 0.454 — with neither side clearly dominant."
      },
      {
        "attacker": "Iñigo Vicente",
        "attacker_role": "ST",
        "attacker_market_value": 6600000,
        "attacker_height": 178,
        "attacker_skill_quality": 0.482,
        "defenders": [
          "Enzo Boyomo",
          "Alejandro Catena"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.506,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.0731,
        "xg_multiplier": 0.9087,
        "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.5,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Enzo Boyomo",
            "role": "CB",
            "market_value": 14600000,
            "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
          },
          {
            "player": "Alejandro Catena",
            "role": "CB",
            "market_value": 2700000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Iñigo Vicente (ST) faces tough defensive resistance against Enzo Boyomo and Alejandro Catena in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.91 (×1.00 = his usual level). Projected xG contribution: 0.073 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Pablo García",
        "attacker_role": "ST",
        "attacker_market_value": 8199999,
        "attacker_height": 175,
        "attacker_skill_quality": 0.501,
        "defenders": [
          "Enzo Boyomo",
          "Alejandro Catena"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.506,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.1443,
        "xg_multiplier": 0.9038,
        "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": "Enzo Boyomo",
            "role": "CB",
            "market_value": 14600000,
            "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
          },
          {
            "player": "Alejandro Catena",
            "role": "CB",
            "market_value": 2700000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Pablo García (ST) faces tough defensive resistance against Enzo Boyomo and Alejandro Catena in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.90 (×1.00 = his usual level). Projected xG contribution: 0.144 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Sergio Canales",
        "attacker_role": "ST",
        "attacker_market_value": 3200000,
        "attacker_height": 176,
        "attacker_skill_quality": 0.44,
        "defenders": [
          "Enzo Boyomo",
          "Alejandro Catena"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.506,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.1077,
        "xg_multiplier": 0.8693,
        "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": "Enzo Boyomo",
            "role": "CB",
            "market_value": 14600000,
            "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
          },
          {
            "player": "Alejandro Catena",
            "role": "CB",
            "market_value": 2700000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.8,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Sergio Canales (ST) faces tough defensive resistance against Enzo Boyomo and Alejandro Catena in a 2-defender block. Duel win probability: 18%.  Matchup xG multiplier ×0.87 (×1.00 = his usual level). Projected xG contribution: 0.108 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Íñigo Sáinz-Maza",
        "attacker_role": "CDM",
        "attacker_market_value": 1000000,
        "attacker_height": 184,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Moi Gómez"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.437,
        "duel_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.44,
        "xg_contribution": 0.0366,
        "xg_multiplier": 1.0588,
        "shots_in_zone": 1.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.8,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Moi Gómez",
            "role": "CM",
            "market_value": 1600000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.5,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.56
          }
        ],
        "duel_analysis": "Íñigo Sáinz-Maza (CDM) is evenly matched against Moi Gómez in a direct 1v1 contest. Duel win probability: 44%.  Matchup xG multiplier ×1.06 (×1.00 = his usual level). Projected xG contribution: 0.037 — with neither side clearly dominant."
      },
      {
        "attacker": "Iván Martín",
        "attacker_role": "CDM",
        "attacker_market_value": 2700000,
        "attacker_height": 178,
        "attacker_skill_quality": 0.437,
        "defenders": [
          "Moi Gómez"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.437,
        "duel_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.417,
        "xg_contribution": 0.0487,
        "xg_multiplier": 1.025,
        "shots_in_zone": 1.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 1.0,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Moi Gómez",
            "role": "CM",
            "market_value": 1600000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.6,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.583
          }
        ],
        "duel_analysis": "Iván Martín (CDM) is evenly matched against Moi Gómez in a direct 1v1 contest. Duel win probability: 42%.  Matchup xG multiplier ×1.02 (×1.00 = his usual level). Projected xG contribution: 0.049 — with neither side clearly dominant."
      }
    ],
    "midfield_battle": {
      "home_midfield_power": 0.476,
      "away_midfield_power": 0.412,
      "home_creative_power": 0.383,
      "away_creative_power": 0.372,
      "home_defensive_power": 0.383,
      "away_defensive_power": 0.372,
      "home_dominance_ratio": 0.536,
      "home_midfield_count": 4,
      "away_midfield_count": 2,
      "home_midfield_players": [
        "Moi Gómez",
        "Iker Muñoz",
        "Lucas Torró",
        "Jon Moncayola"
      ],
      "away_midfield_players": [
        "Íñigo Sáinz-Maza",
        "Iván Martín"
      ],
      "possession_advantage": "neutral",
      "estimated_possession_home_pct": 50.7,
      "estimated_possession_away_pct": 49.3,
      "home_pressing_actions_per_90": 6.1,
      "away_pressing_actions_per_90": 6.0,
      "home_key_passes_projected": 3.8,
      "away_key_passes_projected": 3.7,
      "home_throughball_threat": 1.7,
      "away_throughball_threat": 1.7,
      "key_personal_duel": "Jon Moncayola vs Iván Martín",
      "midfield_lambda_factor_home": 1.009,
      "midfield_lambda_factor_away": 0.991
    },
    "formation_analysis": {
      "home_formation": "4-3-3",
      "away_formation": "4-2-3-1",
      "home_tactical_bonus": 0.03,
      "away_tactical_bonus": -0.01,
      "formation_verdict": "Tactical parity between 4-3-3 and 4-2-3-1. Match outcome driven primarily by individual player quality."
    },
    "home_lambda": 1.305,
    "away_lambda": 1.39,
    "home_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "Left Wing vs Right Back — Flank Battle"
    ],
    "away_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
    ],
    "home_player_antagonists": {
      "Rubén García": {
        "opponents": [
          "Pablo Ramón"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "attacking_duel"
      },
      "Ante Budimir": {
        "opponents": [
          "Jeanuël Belocian",
          "Alvaro Mantilla"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Iker Muñoz": {
        "opponents": [
          "Íñigo Sáinz-Maza"
        ],
        "primary_zone": "CDM vs CDM",
        "source": "attacking_duel, midfield_pairing"
      },
      "Moi Gómez": {
        "opponents": [
          "Íñigo Sáinz-Maza",
          "Iván Martín"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "attacking_duel, defensive_duel, midfield_pairing"
      },
      "Jon Moncayola": {
        "opponents": [
          "Íñigo Sáinz-Maza"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Lucas Torró": {
        "opponents": [
          "Íñigo Sáinz-Maza",
          "Iván Martín"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Enzo Boyomo": {
        "opponents": [
          "Yassir Zabiri",
          "Iñigo Vicente",
          "Pablo García",
          "Sergio Canales"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Alejandro Catena": {
        "opponents": [
          "Yassir Zabiri",
          "Iñigo Vicente",
          "Pablo García",
          "Sergio Canales"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Aitor Fernández": {
        "opponents": [
          "Yassir Zabiri",
          "Pablo García"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Abel Bretones": {
        "opponents": [
          "Iñigo Vicente"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Iñigo Arguibide": {
        "opponents": [
          "Sergio Canales"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "away_player_antagonists": {
      "Pablo Ramón": {
        "opponents": [
          "Rubén García"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "defensive_duel"
      },
      "Jeanuël Belocian": {
        "opponents": [
          "Ante Budimir"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Alvaro Mantilla": {
        "opponents": [
          "Ante Budimir"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Íñigo Sáinz-Maza": {
        "opponents": [
          "Iker Muñoz",
          "Moi Gómez",
          "Jon Moncayola",
          "Lucas Torró"
        ],
        "primary_zone": "CDM vs CDM",
        "source": "defensive_duel, attacking_duel, midfield_pairing"
      },
      "Yassir Zabiri": {
        "opponents": [
          "Enzo Boyomo",
          "Alejandro Catena"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Iñigo Vicente": {
        "opponents": [
          "Enzo Boyomo",
          "Alejandro Catena"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Pablo García": {
        "opponents": [
          "Enzo Boyomo",
          "Alejandro Catena"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Sergio Canales": {
        "opponents": [
          "Enzo Boyomo",
          "Alejandro Catena"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Iván Martín": {
        "opponents": [
          "Moi Gómez",
          "Lucas Torró"
        ],
        "primary_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Julen Agirrezabala": {
        "opponents": [
          "Rubén García",
          "Ante Budimir"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Jorge Salinas": {
        "opponents": [
          "Rubén García"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "key_tactical_insight": "Midfield is evenly contested — Jon Moncayola vs Iván Martín will be the pivotal duel. Total antagonist xG — Home: 0.71, Away: 0.86. Home danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle.",
    "lambda_factors": {
      "league_anchor": 1.35,
      "home_advantage_factor": 1.15,
      "home_gk_opposition_factor": 0.993,
      "away_gk_opposition_factor": 1.0107,
      "home_set_piece_bonus": 0.133,
      "away_set_piece_bonus": 0.047,
      "home_defensive_solidity_vs": 0.9855,
      "away_defensive_solidity_vs": 0.9992,
      "home_midfield_factor": 1.009,
      "away_midfield_factor": 0.991,
      "stage_discount": 1.0,
      "quality_gap_applied": true,
      "home_avg_quality": 0.4569,
      "away_avg_quality": 0.4883,
      "avg_quality_gap": -0.0314,
      "squad_value_gap_log": -0.4204,
      "top5_value_gap_log": -0.5162,
      "attack_value_gap_log": -0.662,
      "elite_count_gap": 0,
      "combined_quality_gap": -0.0957,
      "stronger_lambda_boost": 0.0527,
      "weaker_lambda_suppression": 0.0306,
      "home_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.35
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.7134,
          "n_duels": 6,
          "duel_confidence": 0.75,
          "result": 0.8725
        },
        {
          "label": "midfield_factor",
          "factor": 1.009,
          "result": 0.8804
        },
        {
          "label": "formation_bonus",
          "factor": 1.03,
          "result": 0.9068
        },
        {
          "label": "home_advantage",
          "factor": 1.15,
          "result": 1.0428
        },
        {
          "label": "standing_factor",
          "factor": 1.0597,
          "result": 1.1051
        },
        {
          "label": "gk_opposition",
          "factor": 0.993,
          "result": 1.0973
        },
        {
          "label": "defensive_solidity",
          "factor": 0.9855,
          "result": 1.0814
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.133,
          "result": 1.2144
        },
        {
          "label": "engine_clamp",
          "pre": 1.2144,
          "result": 1.2144,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": -0.0957,
          "factor": 0.9694,
          "pre": 1.2144,
          "result": 1.1772
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 1.1772
        },
        {
          "label": "bench_bonus",
          "side": "home",
          "bonus": 0.1655,
          "result": 1.3425
        },
        {
          "label": "fbref_blend",
          "side": "home",
          "applied": false,
          "reason": "non-target league or squad priors not found",
          "result": 1.3425
        },
        {
          "label": "router_clamp",
          "pre": 1.3425,
          "result": 1.343,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "h2h_adjustment",
          "applied": true,
          "multiplier": 0.9714,
          "pre": 1.343,
          "result": 1.3046,
          "available": true
        },
        {
          "label": "mismatch_pressure",
          "applied": false,
          "reason": "quality gap below 0.30",
          "result": 1.305
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 1.305
        },
        {
          "label": "final_clamp",
          "applied": false,
          "pre": 1.305,
          "result": 1.305,
          "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.305
        }
      ],
      "away_lambda_chain": [
        {
          "label": "league_anchor",
          "value": 1.35
        },
        {
          "label": "duel_blend",
          "raw_xg": 0.8645,
          "n_duels": 6,
          "duel_confidence": 0.75,
          "result": 0.9859
        },
        {
          "label": "midfield_factor",
          "factor": 0.991,
          "result": 0.977
        },
        {
          "label": "formation_bonus",
          "factor": 0.99,
          "result": 0.9672
        },
        {
          "label": "home_advantage",
          "factor": 1.0,
          "result": 0.9672
        },
        {
          "label": "standing_factor",
          "factor": 1.0789,
          "result": 1.0435
        },
        {
          "label": "gk_opposition",
          "factor": 1.0107,
          "result": 1.0547
        },
        {
          "label": "defensive_solidity",
          "factor": 0.9992,
          "result": 1.0538
        },
        {
          "label": "set_piece_bonus",
          "bonus": 0.047,
          "result": 1.1008
        },
        {
          "label": "engine_clamp",
          "pre": 1.1008,
          "result": 1.1008,
          "band": [
            0.6,
            4.0
          ],
          "clamped": false
        },
        {
          "label": "quality_gap",
          "applied": true,
          "combined_quality_gap": -0.0957,
          "factor": 1.0527,
          "pre": 1.1008,
          "result": 1.1588
        },
        {
          "label": "stage_discount",
          "applied": false,
          "factor": 1.0,
          "result": 1.1588
        },
        {
          "label": "bench_bonus",
          "side": "away",
          "bonus": 0.1915,
          "result": 1.3505
        },
        {
          "label": "fbref_blend",
          "side": "away",
          "applied": false,
          "reason": "non-target league or squad priors not found",
          "result": 1.3505
        },
        {
          "label": "router_clamp",
          "pre": 1.3505,
          "result": 1.351,
          "band": [
            0.65,
            4.8
          ]
        },
        {
          "label": "h2h_adjustment",
          "applied": true,
          "multiplier": 1.0286,
          "pre": 1.351,
          "result": 1.3896,
          "available": true
        },
        {
          "label": "mismatch_pressure",
          "applied": false,
          "reason": "quality gap below 0.30",
          "result": 1.39
        },
        {
          "label": "underdog_floor",
          "applied": false,
          "mode": "disabled_ablation",
          "result": 1.39
        },
        {
          "label": "final_clamp",
          "applied": false,
          "pre": 1.39,
          "result": 1.39,
          "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.39
        }
      ],
      "home_bench_lambda_bonus": 0.1655,
      "away_bench_lambda_bonus": 0.1915,
      "home_bench_players_modelled": 7,
      "away_bench_players_modelled": 7,
      "mismatch_score_pressure_applied": false,
      "competitive_underdog_floor_applied": false,
      "competitive_underdog_floor": 1.0,
      "competitive_underdog_floor_mode": "disabled_ablation",
      "pre_competitive_floor_home_lambda": 1.305,
      "pre_competitive_floor_away_lambda": 1.39,
      "pre_calibration_home_lambda": 1.3425,
      "pre_calibration_away_lambda": 1.3505,
      "competition_calibration_applied": false,
      "competition_calibration_reason": "no_sofascore_matches_data",
      "competition_calibration_samples": 0,
      "competition_observed_total_goals": 0.0,
      "competition_calibration_scale": 1.0,
      "neutral_share_preserved": false,
      "final_home_lambda": 1.305,
      "final_away_lambda": 1.39
    }
  },
  "home_standing": {
    "available": true,
    "team_position": 16,
    "opponent_position": 15,
    "standing_lambda_multiplier": 1.0597,
    "attack_index": 0.859,
    "defense_concede_index": 1.344,
    "form_multiplier": 1.0,
    "team_attack_rate_contextual": 1.33,
    "opp_defense_rate_contextual": 2.08,
    "team_ppg": 1.16,
    "opponent_ppg": 1.16
  },
  "away_standing": {
    "available": true,
    "team_position": 15,
    "opponent_position": 16,
    "standing_lambda_multiplier": 1.0789,
    "attack_index": 1.021,
    "defense_concede_index": 1.183,
    "form_multiplier": 1.0,
    "team_attack_rate_contextual": 1.58,
    "opp_defense_rate_contextual": 1.83,
    "team_ppg": 1.16,
    "opponent_ppg": 1.16
  },
  "xgboost_reasoning": {
    "summary": "Antagonist + XGBoost match analysis for Osasuna vs Racing Club. Player statistics regressed using position-specific XGBoost models (G, D, M, F) with 2026-2027 FBref priors. Micro-duels resolved across 4-3-3 vs 4-2-3-1 (duel lambdas: Home 1.343, Away 1.351). Final calibrated Poisson lambdas: Home 1.305, Away 1.390 (most likely score 1-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": false,
      "reason": "Non-target league or squad priors not found"
    },
    "pipeline_stages": [
      "1. XGBoost player regressions for volume & event rates with market-value quality scaling",
      "2. Multi-source prior blending (FBref 2026-2027 tables + Sofascore season history)",
      "3. Antagonist formation duel matrix resolving 1v1 and zonal matchups",
      "4. Team-level prior calibration (FBref possession and attack/defense efficiencies)",
      "5. Bivariate Poisson matrix with Dixon-Coles low-score correction"
    ],
    "final_lambdas": {
      "home_lambda": 1.305,
      "away_lambda": 1.39,
      "micro_duel_home_lambda": 1.343,
      "micro_duel_away_lambda": 1.351
    },
    "calibration_and_pressure": {
      "competition_calibration_applied": false,
      "competition_calibration_scale": 1.0,
      "mismatch_pressure_applied": false,
      "underdog_floor_applied": false
    }
  },
  "timestamp": "2026-10-17T13:33:31Z",
  "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
  }
}