{
  "match_info": {
    "home_team": "Forest",
    "away_team": "Coventry",
    "tournament": "Premier League",
    "date": "20260919",
    "timezone": "America/New_York",
    "home_formation": "4-3-3",
    "away_formation": "3-4-2-1",
    "lineup_status": "projected_from_squad",
    "lineup_source": "/teams/get-squad",
    "lineup_confirmed": false,
    "lineup_confidence": 0.45
  },
  "prediction": {
    "most_likely_score": "1-0",
    "home_goals": 1,
    "away_goals": 0,
    "most_likely_score_probability": 0.1218,
    "match_resolution": "regulation",
    "predicted_winner": "Forest",
    "tiebreaker": {
      "applies": false,
      "method": "none",
      "regulation_draw_probability": 0.2669,
      "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,
      "reason": "Tie-breaker not required for this match context."
    },
    "top_5_scorelines": [
      {
        "score": "1-0",
        "probability": 0.1218
      },
      {
        "score": "1-1",
        "probability": 0.1264
      },
      {
        "score": "2-1",
        "probability": 0.0905
      },
      {
        "score": "2-0",
        "probability": 0.0887
      },
      {
        "score": "0-0",
        "probability": 0.0861
      }
    ],
    "scoreline_probabilities": {
      "0-0": 0.0861,
      "0-1": 0.0858,
      "0-2": 0.0443,
      "0-3": 0.0151,
      "0-4": 0.0038,
      "0-5": 0.0008,
      "1-0": 0.1218,
      "1-1": 0.1264,
      "1-2": 0.0639,
      "1-3": 0.0217,
      "1-4": 0.0055,
      "1-5": 0.0011,
      "2-0": 0.0887,
      "2-1": 0.0905,
      "2-2": 0.0462,
      "2-3": 0.0157,
      "2-4": 0.004,
      "2-5": 0.0008,
      "3-0": 0.0427,
      "3-1": 0.0436,
      "3-2": 0.0222,
      "3-3": 0.0076,
      "3-4": 0.0019,
      "4-0": 0.0154,
      "4-1": 0.0157,
      "4-2": 0.008,
      "4-3": 0.0027,
      "4-4": 0.0007,
      "5-0": 0.0045,
      "5-1": 0.0045,
      "5-2": 0.0023,
      "5-3": 0.0008,
      "6-0": 0.0011,
      "6-1": 0.0011,
      "6-2": 0.0006
    },
    "outcome": {
      "home_win": 0.4674,
      "draw": 0.2669,
      "away_win": 0.2656
    },
    "markets": {
      "over_2_5_goals": 0.4469,
      "under_2_5_goals": 0.5531,
      "btts_yes": 0.4896,
      "btts_no": 0.5104,
      "home_clean_sheet": 0.3606,
      "away_clean_sheet": 0.236
    },
    "home_ratings": {
      "DR": 6.76,
      "MCR": 7.37,
      "ATR": 6.99,
      "GK": 6.8
    },
    "away_ratings": {
      "DR": 6.92,
      "MCR": 7.05,
      "ATR": 7.1,
      "GK": 7.44
    },
    "insights": {
      "summary": "Antagonist matchup analysis for Forest vs Coventry. Most likely scoreline: 1-0. Lambdas derived from 5 home and 5 away individual player duels.",
      "key_player": "Projected scorer(s): Igor Jesus",
      "tactical_analysis": "Tactical parity between 4-3-3 and 3-4-2-1. Match outcome driven primarily by individual player quality. Midfield is evenly contested — Morgan Gibbs-White vs Jack Rudoni will be the pivotal duel. Total antagonist xG — Home: 0.84, Away: 0.58. Home danger zone: LW vs CB. Away danger zone: Shadow Striker vs CB + Mid Cover — Layered Defense."
    },
    "confidence": 0.58,
    "home_lambda": 1.444,
    "away_lambda": 1.02,
    "modal_scoreline": "1-1",
    "modal_scoreline_probability": 0.1264,
    "headline_policy": "decisive_score_substitution"
  },
  "pregame_baseline": {
    "fair_win_probability": {
      "home_win": 0.4674,
      "draw": 0.2669,
      "away_win": 0.2656
    },
    "favorite": "Forest",
    "favorite_win_probability": 0.4674,
    "fair_spread": 0.424,
    "fair_total": 2.464,
    "prop_estimates": [
      {
        "market": "team_total_goals",
        "selection": "Forest",
        "estimate": 1.444,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "team_total_goals",
        "selection": "Coventry",
        "estimate": 1.02,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "over_2_5_goals",
        "selection": "yes",
        "estimate": 2.5,
        "probability": 0.4469,
        "unit": "probability"
      },
      {
        "market": "both_teams_to_score",
        "selection": "yes",
        "estimate": 1.0,
        "probability": 0.4896,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Forest",
        "estimate": 1.0,
        "probability": 0.3606,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Coventry",
        "estimate": 1.0,
        "probability": 0.236,
        "unit": "probability"
      },
      {
        "market": "anytime_goal",
        "selection": "Igor Jesus (Forest)",
        "estimate": 0.4198,
        "probability": 0.2868,
        "unit": "xG"
      },
      {
        "market": "anytime_goal",
        "selection": "Yann Gboho (Coventry)",
        "estimate": 0.2697,
        "probability": 0.0,
        "unit": "xG"
      },
      {
        "market": "assist",
        "selection": "Murillo (Forest)",
        "estimate": 0.0987,
        "probability": 0.0392,
        "unit": "xA"
      },
      {
        "market": "assist",
        "selection": "Jack Rudoni (Coventry)",
        "estimate": 0.1339,
        "probability": 0.0,
        "unit": "xA"
      }
    ],
    "expected_pace": {
      "tempo": "balanced",
      "expected_total_goals": 2.464,
      "expected_total_shots": 26,
      "expected_total_passes": 535,
      "expected_pressing_actions_per_90": 15.0,
      "possession_home_pct": 51.7,
      "possession_away_pct": 48.3,
      "notes": "possession projects near even"
    },
    "expected_game_script": {
      "favorite": "Forest",
      "favorite_win_probability": 0.4674,
      "script": "Forest is the fair winner side, but the baseline remains narrow: fair spread +0.42 goals and fair total 2.46.",
      "first_half": "Expect balanced tempo while both sides test the matchup thesis; shot baseline is about 13 first-half attempts.",
      "second_half": "If level after halftime, midfield control and bench quality should decide territory; Coventry must keep the match inside one goal.",
      "late_game": "A Forest lead likely shifts toward control and counters; a draw state keeps set pieces and transition chances live."
    },
    "key_matchup_thesis": "Forest chance creation leans on Igor Jesus against Milan van Ewijk in LW vs CB; possession projects near even.",
    "expected_rotation_usage_behavior": [
      "Forest: starters carry the main goal usage through Igor Jesus; bench watchlist: Daniel Muñoz, Chris Wood.",
      "Coventry: starters carry the main goal usage through the highest xG attackers; bench watchlist: Brandon Thomas-Asante, Victor Torp, Ellis Simms.",
      "Assist usage should flow through Morgan Gibbs-White; late lineup changes should re-score these allocations."
    ],
    "pregame_play_by_play": [
      "0-15: Forest tries to establish the projected edge; track possession and first-shot share.",
      "15-45: Baseline expects balanced tempo, about 13 total first-half shots, and 1.23 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 Coventry 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 Forest.",
      "Coventry 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": {
    "Forest": {
      "formation": "4-3-3",
      "players": {
        "John Victor": {
          "player_id": 840103,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 12,
          "height": 197,
          "market_value": 4900000,
          "stats": {
            "saves": 3,
            "goals_prevented": 0.47,
            "rating": 6.8,
            "minutes": 90,
            "total_pass": 27,
            "accurate_pass": 20,
            "total_long_balls": 9,
            "accurate_long_balls": 4,
            "touches": 32,
            "clearances": 1,
            "ball_recovery": 1,
            "high_claims": 1,
            "punches": 0.3,
            "aerial_won": 1,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 1,
            "possession_lost": 2.4,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 22,
            "accurate_own_half_passes": 17,
            "expected_saves": 1.22,
            "high_pressure_saves": 0.46,
            "shots_faced": 2.6,
            "opponent_faced": "Sidiki Cherif, Haji Wright",
            "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,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 71.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 4785,
            "combined_rank_score": 2861.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 978.0,
            "sofascore_rating": 6.28,
            "sofascore_appearances": 5.0,
            "fifa_rank": 4745.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "starter",
            "projected_match_rating": 6.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "John Victor",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jack McGlynn",
                  "ranking": 4780
                },
                {
                  "player_name": "Luka Lochoshvili",
                  "ranking": 4781
                },
                {
                  "player_name": "Jhon Solís",
                  "ranking": 4782
                },
                {
                  "player_name": "Jorge Ruvalcaba",
                  "ranking": 4783
                },
                {
                  "player_name": "Luca Langoni",
                  "ranking": 4784
                }
              ],
              "lower": [
                {
                  "player_name": "Diego Luna",
                  "ranking": 4786
                },
                {
                  "player_name": "Rafael Navarro",
                  "ranking": 4787
                },
                {
                  "player_name": "Joaquín Muñoz",
                  "ranking": 4788
                },
                {
                  "player_name": "Odin Luraas Bjørtuft",
                  "ranking": 4789
                },
                {
                  "player_name": "Harry Milne",
                  "ranking": 4790
                }
              ]
            }
          },
          "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"
            ],
            "market_value_adjustment": 0.4609,
            "fbref_prior_metrics": null,
            "rationale": "Market-value baseline (€4,900,000) applied for position G (quality factor 0.46)."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position G (quality 0.46)",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.47,
                "rating": 6.8,
                "minutes": 90,
                "total_pass": 27,
                "accurate_pass": 20,
                "total_long_balls": 9,
                "accurate_long_balls": 4,
                "touches": 32,
                "clearances": 1,
                "ball_recovery": 1,
                "high_claims": 1,
                "punches": 0.3,
                "aerial_won": 1,
                "sweeper_actions": 1,
                "sweeper_accurate": 1,
                "saves_inside_box": 1,
                "possession_lost": 2.4,
                "duels_won": 0,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 22,
                "accurate_own_half_passes": 17
              },
              "params": {
                "market_value_eur": 4900000,
                "quality_factor": 0.4609
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.47,
                "rating": 6.8,
                "minutes": 90,
                "total_pass": 27,
                "accurate_pass": 20,
                "total_long_balls": 9,
                "accurate_long_balls": 4,
                "touches": 32,
                "clearances": 1,
                "ball_recovery": 1,
                "high_claims": 1,
                "punches": 0.3,
                "aerial_won": 1,
                "sweeper_actions": 1,
                "sweeper_accurate": 1,
                "saves_inside_box": 1,
                "possession_lost": 2.4,
                "duels_won": 0,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 22,
                "accurate_own_half_passes": 17
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.47,
                "rating": 6.8,
                "minutes": 90,
                "total_pass": 27,
                "accurate_pass": 20,
                "total_long_balls": 9,
                "accurate_long_balls": 4,
                "touches": 32,
                "clearances": 1,
                "ball_recovery": 1,
                "high_claims": 1,
                "punches": 0.3,
                "aerial_won": 1,
                "sweeper_actions": 1,
                "sweeper_accurate": 1,
                "saves_inside_box": 1,
                "possession_lost": 2.4,
                "duels_won": 0,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 22,
                "accurate_own_half_passes": 17,
                "expected_saves": 1.22,
                "high_pressure_saves": 0.46,
                "shots_faced": 2.6,
                "opponent_faced": "Sidiki Cherif, Haji Wright",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Sidiki Cherif, Haji Wright",
                  "matchup_zone": "Goalkeeper shot-stopping context"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.47,
                "rating": 6.8,
                "minutes": 90,
                "total_pass": 27,
                "accurate_pass": 20,
                "total_long_balls": 9,
                "accurate_long_balls": 4,
                "touches": 32,
                "clearances": 1,
                "ball_recovery": 1,
                "high_claims": 1,
                "punches": 0.3,
                "aerial_won": 1,
                "sweeper_actions": 1,
                "sweeper_accurate": 1,
                "saves_inside_box": 1,
                "possession_lost": 2.4,
                "duels_won": 0,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 22,
                "accurate_own_half_passes": 17,
                "expected_saves": 1.22,
                "high_pressure_saves": 0.46,
                "shots_faced": 2.6,
                "opponent_faced": "Sidiki Cherif, Haji Wright",
                "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,
                "expected_goals": 0.0,
                "expected_assists": 0.0
              },
              "params": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 17, fifa_overall 71.0)",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.47,
                "rating": 6.8,
                "minutes": 90,
                "total_pass": 27,
                "accurate_pass": 20,
                "total_long_balls": 9,
                "accurate_long_balls": 4,
                "touches": 32,
                "clearances": 1,
                "ball_recovery": 1,
                "high_claims": 1,
                "punches": 0.3,
                "aerial_won": 1,
                "sweeper_actions": 1,
                "sweeper_accurate": 1,
                "saves_inside_box": 1,
                "possession_lost": 2.4,
                "duels_won": 0,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 22,
                "accurate_own_half_passes": 17,
                "expected_saves": 1.22,
                "high_pressure_saves": 0.46,
                "shots_faced": 2.6,
                "opponent_faced": "Sidiki Cherif, Haji Wright",
                "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,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 71.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4785,
                "fifa_rank": 4745.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 71.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.47,
                "rating": 6.8,
                "minutes": 90,
                "total_pass": 27,
                "accurate_pass": 20,
                "total_long_balls": 9,
                "accurate_long_balls": 4,
                "touches": 32,
                "clearances": 1,
                "ball_recovery": 1,
                "high_claims": 1,
                "punches": 0.3,
                "aerial_won": 1,
                "sweeper_actions": 1,
                "sweeper_accurate": 1,
                "saves_inside_box": 1,
                "possession_lost": 2.4,
                "duels_won": 0,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 22,
                "accurate_own_half_passes": 17,
                "expected_saves": 1.22,
                "high_pressure_saves": 0.46,
                "shots_faced": 2.6,
                "opponent_faced": "Sidiki Cherif, Haji Wright",
                "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,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 14.7543,
                "weight_share": 0.0,
                "position_multiplier": 0.0
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.47,
                "rating": 6.8,
                "minutes": 90,
                "total_pass": 27,
                "accurate_pass": 20,
                "total_long_balls": 9,
                "accurate_long_balls": 4,
                "touches": 32,
                "clearances": 1,
                "ball_recovery": 1,
                "high_claims": 1,
                "punches": 0.3,
                "aerial_won": 1,
                "sweeper_actions": 1,
                "sweeper_accurate": 1,
                "saves_inside_box": 1,
                "possession_lost": 2.4,
                "duels_won": 0,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 22,
                "accurate_own_half_passes": 17,
                "expected_saves": 1.22,
                "high_pressure_saves": 0.46,
                "shots_faced": 2.6,
                "opponent_faced": "Sidiki Cherif, Haji Wright",
                "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,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 71.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 6.4555,
                "weight_share": 0.0,
                "position_multiplier": 0.0
              }
            }
          ]
        },
        "Murillo": {
          "player_id": 1199282,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 5,
          "height": 180,
          "market_value": 49000000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 2,
            "rating": 7.2944,
            "minutes": 95,
            "total_pass": 46,
            "accurate_pass": 39,
            "duels_won": 5,
            "total_long_balls": 8,
            "accurate_long_balls": 4,
            "total_own_half_passes": 28,
            "accurate_own_half_passes": 26,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 14,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 65,
            "possession_lost": 9.8655,
            "dispossessed": 0.0,
            "duels_lost": 6,
            "aerial_lost": 0,
            "total_contest": 2,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0987,
            "total_shots": 1,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 10,
            "total_progression": 26,
            "progressive_carries": 0,
            "key_pass": 0,
            "opponent_faced": "Yann Gboho",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0226,
            "projected_assists": 0,
            "assist_probability": 0.0392,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363639.0,
              "match_date": "2026-09-12 14:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Aston Villa",
              "away_team": "Forest",
              "home_score_current": 1.0,
              "away_score_current": 2.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Forest",
              "opponent": "Aston Villa",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 89,
                "rating": 6.9,
                "assists": 0,
                "expected_goals": 0.1726,
                "expected_assists": 0.0047,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 49,
                "accurate_pass": 38,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363254.0,
              "match_date": "2026-08-29",
              "home_team": "Liverpool FC",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assists": 0,
                "expected_goals": 0.1759,
                "expected_assists": 0.0029,
                "total_shots": 1,
                "total_pass": 19,
                "accurate_pass": 16,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363238.0,
              "match_date": "2026-08-22",
              "home_team": "Nottingham Forest",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 89,
                "rating": 7.1,
                "assists": 0,
                "expected_assists": 0.2762,
                "total_shots": 0,
                "total_pass": 59,
                "accurate_pass": 53,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 11,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 791,
            "combined_rank_score": 381.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 372.0,
            "sofascore_rating": 6.968,
            "sofascore_appearances": 25.0,
            "fifa_rank": 390.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "starter",
            "projected_match_rating": 7.2944,
            "source_file": "data/player_rankings.csv",
            "player_name": "Murillo",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Harry Maguire",
                  "ranking": 786
                },
                {
                  "player_name": "Ho-jun Son",
                  "ranking": 787
                },
                {
                  "player_name": "Mukhammadali Usmonov",
                  "ranking": 788
                },
                {
                  "player_name": "Hyeon-uh Jeong",
                  "ranking": 789
                },
                {
                  "player_name": "Julian Andres Bonilla Tovar",
                  "ranking": 790
                }
              ],
              "lower": [
                {
                  "player_name": "Djalma Celestino Evaristo",
                  "ranking": 792
                },
                {
                  "player_name": "Nico O'Reilly",
                  "ranking": 793
                },
                {
                  "player_name": "Christoph Baumgartner",
                  "ranking": 794
                },
                {
                  "player_name": "Matías Viña",
                  "ranking": 795
                },
                {
                  "player_name": "Valeri Gromyko",
                  "ranking": 796
                }
              ]
            }
          },
          "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",
              "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",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0962,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 3 historical appearances across 6 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 6 target models",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 1,
                "rating": 6.6545,
                "minutes": 89,
                "total_pass": 42,
                "accurate_pass": 36,
                "duels_won": 4,
                "total_long_balls": 8,
                "accurate_long_balls": 4,
                "total_own_half_passes": 26,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 59,
                "possession_lost": 9.0,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 3,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.09,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 9,
                "total_progression": 24,
                "progressive_carries": 0,
                "key_pass": 0
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:44.724055+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 374,
                    "rows": 1289
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Leeds United",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "accuratePass": 34.9436,
                  "touches_p90": 58.9545,
                  "possessionLostCtrl": 9.2332,
                  "totalClearance": 6.2964,
                  "aerialWon": 1.3304
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.9838240146636963,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0944
                      },
                      {
                        "name": "duel_win_rate",
                        "importance": 0.0353
                      },
                      {
                        "name": "duelWon_p90",
                        "importance": 0.0341
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0326
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0322
                      }
                    ],
                    "decomposition": {
                      "base": 0.9108,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0378
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0349
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0226
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0176
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0097
                        }
                      ],
                      "others": 0.005,
                      "total": 0.9838
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.5254287719726562,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0588
                      },
                      {
                        "name": "duelLost",
                        "importance": 0.0461
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0446
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0406
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0401
                      }
                    ],
                    "decomposition": {
                      "base": 1.3553,
                      "items": [
                        {
                          "name": "duelLost",
                          "contribution": 0.0955
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0795
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0784
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0607
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.036
                        }
                      ],
                      "others": 0.1702,
                      "total": 1.5254
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.8999771475791931,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0565
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0432
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0353
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0347
                      },
                      {
                        "name": "wonTackle",
                        "importance": 0.0329
                      }
                    ],
                    "decomposition": {
                      "base": 0.8675,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0735
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.059
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": 0.0435
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0299
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0229
                        }
                      ],
                      "others": 0.1285,
                      "total": 0.9
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.8144330978393555,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0506
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0425
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0417
                      },
                      {
                        "name": "tackle_success_rate",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 3.4032,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.3857
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.3391
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2241
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1831
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.1493
                        }
                      ],
                      "others": 0.1299,
                      "total": 4.8144
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.4443546533584595,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0798
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0597
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0439
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0426
                      },
                      {
                        "name": "errorLeadToAShot",
                        "importance": 0.0411
                      }
                    ],
                    "decomposition": {
                      "base": 1.2421,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.1187
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1071
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0649
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0633
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0455
                        }
                      ],
                      "others": 0.017,
                      "total": 1.4444
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.654476642608643,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches_p90",
                        "importance": 0.0708
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0705
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0537
                      },
                      {
                        "name": "pass_accuracy",
                        "importance": 0.0518
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 6.6627,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.04
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0259
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.024
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.02
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0156
                        }
                      ],
                      "others": 0.0381,
                      "total": 6.6545
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0962, quality 0.821)",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 2,
                "rating": 7.2944,
                "minutes": 95,
                "total_pass": 46,
                "accurate_pass": 39,
                "duels_won": 5,
                "total_long_balls": 8,
                "accurate_long_balls": 4,
                "total_own_half_passes": 28,
                "accurate_own_half_passes": 26,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 65,
                "possession_lost": 9.8655,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0987,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 26,
                "progressive_carries": 0,
                "key_pass": 0
              },
              "params": {
                "market_value_eur": 49000000,
                "quality_factor": 0.8206,
                "boost_factor": 1.0962
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 2,
                "rating": 7.2944,
                "minutes": 95,
                "total_pass": 46,
                "accurate_pass": 39,
                "duels_won": 5,
                "total_long_balls": 8,
                "accurate_long_balls": 4,
                "total_own_half_passes": 28,
                "accurate_own_half_passes": 26,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 65,
                "possession_lost": 9.8655,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0987,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 26,
                "progressive_carries": 0,
                "key_pass": 0
              },
              "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,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 2,
                "rating": 7.2944,
                "minutes": 95,
                "total_pass": 46,
                "accurate_pass": 39,
                "duels_won": 5,
                "total_long_balls": 8,
                "accurate_long_balls": 4,
                "total_own_half_passes": 28,
                "accurate_own_half_passes": 26,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 65,
                "possession_lost": 9.8655,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0987,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 26,
                "progressive_carries": 0,
                "key_pass": 0,
                "opponent_faced": "Yann Gboho",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Yann Gboho",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 2,
                "rating": 7.2944,
                "minutes": 95,
                "total_pass": 46,
                "accurate_pass": 39,
                "duels_won": 5,
                "total_long_balls": 8,
                "accurate_long_balls": 4,
                "total_own_half_passes": 28,
                "accurate_own_half_passes": 26,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 65,
                "possession_lost": 9.8655,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0987,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 26,
                "progressive_carries": 0,
                "key_pass": 0,
                "opponent_faced": "Yann Gboho",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 2, fifa_overall 82.0)",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 2,
                "rating": 7.2944,
                "minutes": 95,
                "total_pass": 46,
                "accurate_pass": 39,
                "duels_won": 5,
                "total_long_balls": 8,
                "accurate_long_balls": 4,
                "total_own_half_passes": 28,
                "accurate_own_half_passes": 26,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 65,
                "possession_lost": 9.8655,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0987,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 26,
                "progressive_carries": 0,
                "key_pass": 0,
                "opponent_faced": "Yann Gboho",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 82.0
              },
              "params": {
                "match_squad_rank": 2,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 791,
                "fifa_rank": 390.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 82.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 2,
                "rating": 7.2944,
                "minutes": 95,
                "total_pass": 46,
                "accurate_pass": 39,
                "duels_won": 5,
                "total_long_balls": 8,
                "accurate_long_balls": 4,
                "total_own_half_passes": 28,
                "accurate_own_half_passes": 26,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 65,
                "possession_lost": 9.8655,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0987,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 26,
                "progressive_carries": 0,
                "key_pass": 0,
                "opponent_faced": "Yann Gboho",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0226,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0226,
                "scorer_weight": 0.3341,
                "squad_weight_total": 14.7543,
                "weight_share": 0.0226,
                "position_multiplier": 0.38
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 2,
                "rating": 7.2944,
                "minutes": 95,
                "total_pass": 46,
                "accurate_pass": 39,
                "duels_won": 5,
                "total_long_balls": 8,
                "accurate_long_balls": 4,
                "total_own_half_passes": 28,
                "accurate_own_half_passes": 26,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 65,
                "possession_lost": 9.8655,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0987,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 26,
                "progressive_carries": 0,
                "key_pass": 0,
                "opponent_faced": "Yann Gboho",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0226,
                "projected_assists": 0,
                "assist_probability": 0.0392,
                "fifa_overall": 82.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0392,
                "provider_weight": 0.2528,
                "squad_weight_total": 6.4555,
                "weight_share": 0.0392,
                "position_multiplier": 0.45
              }
            }
          ]
        },
        "Ousmane Diomande": {
          "player_id": 1394342,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 2,
          "height": 190,
          "market_value": 44000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "rating": 5.6302,
            "minutes": 1,
            "total_pass": 1,
            "accurate_pass": 35,
            "duels_won": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 0,
            "total_opp_half_passes": 0,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 2,
            "possession_lost": 1.0901,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 0,
            "total_progression": 0,
            "progressive_carries": 0,
            "key_pass": 0,
            "tackles_in_zone": 1.1,
            "tackles_won_in_zone": 1.3,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 1.1,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Haji Wright",
            "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.0303,
            "projected_assists": 0,
            "assist_probability": 0.0125,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 1,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1131,
            "combined_rank_score": 506.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 421.0,
            "sofascore_rating": 6.9222,
            "sofascore_appearances": 9.0,
            "fifa_rank": 592.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "projected_match_rating": 5.6302,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ousmane Diomande",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mathew Ryan",
                  "ranking": 1126
                },
                {
                  "player_name": "Johan Manzambi",
                  "ranking": 1127
                },
                {
                  "player_name": "Rasul Yuldashev",
                  "ranking": 1128
                },
                {
                  "player_name": "Muhammad Yuldashev",
                  "ranking": 1129
                },
                {
                  "player_name": "Carlos Morales",
                  "ranking": 1130
                }
              ],
              "lower": [
                {
                  "player_name": "Rui Silva",
                  "ranking": 1132
                },
                {
                  "player_name": "Abror Karimov",
                  "ranking": 1133
                },
                {
                  "player_name": "Maximiliano Guerrero",
                  "ranking": 1134
                },
                {
                  "player_name": "Agustín Urzi",
                  "ranking": 1135
                },
                {
                  "player_name": "Ander Barrenetxea",
                  "ranking": 1136
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.312,
          "history_matches": 1,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "D_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalLongBalls",
              "totalOppositionHalfPasses",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "ballRecovery",
              "touches",
              "totalClearance",
              "wonTackle",
              "interceptionWon",
              "dispossessed",
              "challengeLost",
              "errorLeadToAShot",
              "errorLeadToAGoal",
              "possessionLostCtrl",
              "passValueNormalized",
              "defensiveValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "rating"
            ],
            "history_matches": 1,
            "data_confidence": 0.312,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0901,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 1 historical appearances across 6 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 6 target models",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 5.1649,
                "minutes": 1,
                "total_pass": 1,
                "accurate_pass": 32,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 1.0,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "key_pass": 0
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:44.724055+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 374,
                    "rows": 1289
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 1.0,
                    "rating": null
                  }
                ],
                "feature_row": {
                  "history_matches": 1.0,
                  "is_starting_11": 1.0,
                  "accuratePass": 0.0,
                  "touches_p90": 180.0,
                  "possessionLostCtrl": 1.0,
                  "totalClearance": 0.0,
                  "aerialWon": 0.0
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 1.130262017250061,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0944
                      },
                      {
                        "name": "duel_win_rate",
                        "importance": 0.0353
                      },
                      {
                        "name": "duelWon_p90",
                        "importance": 0.0341
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0326
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0322
                      }
                    ],
                    "decomposition": {
                      "base": 0.9108,
                      "items": [
                        {
                          "name": "touches_p90",
                          "contribution": 0.105
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0754
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0665
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0454
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0273
                        }
                      ],
                      "others": -0.0093,
                      "total": 1.1303
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.0915607213974,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0588
                      },
                      {
                        "name": "duelLost",
                        "importance": 0.0461
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0446
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0406
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0401
                      }
                    ],
                    "decomposition": {
                      "base": 1.3553,
                      "items": [
                        {
                          "name": "totalProgression",
                          "contribution": -0.1585
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.124
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0599
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0439
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.042
                        }
                      ],
                      "others": -0.0834,
                      "total": 1.0916
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.6367429494857788,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0565
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0432
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0353
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0347
                      },
                      {
                        "name": "wonTackle",
                        "importance": 0.0329
                      }
                    ],
                    "decomposition": {
                      "base": 0.8675,
                      "items": [
                        {
                          "name": "totalProgression",
                          "contribution": -0.11
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.1024
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0571
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0431
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.0402
                        }
                      ],
                      "others": -0.0828,
                      "total": 0.6367
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.551530599594116,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0506
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0425
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0417
                      },
                      {
                        "name": "tackle_success_rate",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 3.4032,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.4548
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.3085
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2903
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.2743
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.2422
                        }
                      ],
                      "others": -0.4792,
                      "total": 2.5515
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.1345090866088867,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0798
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0597
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0439
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0426
                      },
                      {
                        "name": "errorLeadToAShot",
                        "importance": 0.0411
                      }
                    ],
                    "decomposition": {
                      "base": 1.2421,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0653
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0608
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0463
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0438
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.043
                        }
                      ],
                      "others": -0.1526,
                      "total": 1.1345
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 5.164949893951416,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches_p90",
                        "importance": 0.0708
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0705
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0537
                      },
                      {
                        "name": "pass_accuracy",
                        "importance": 0.0518
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 6.6627,
                      "items": [
                        {
                          "name": "accuratePass",
                          "contribution": -0.5603
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.4438
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.2854
                        },
                        {
                          "name": "touches",
                          "contribution": -0.1259
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.1205
                        }
                      ],
                      "others": 0.0382,
                      "total": 5.165
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0901, quality 0.800)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 5.6302,
                "minutes": 1,
                "total_pass": 1,
                "accurate_pass": 35,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 1.0901,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "key_pass": 0
              },
              "params": {
                "market_value_eur": 44000000,
                "quality_factor": 0.8002,
                "boost_factor": 1.0901
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 5.6302,
                "minutes": 1,
                "total_pass": 1,
                "accurate_pass": 35,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 1.0901,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "key_pass": 0
              },
              "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,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 5.6302,
                "minutes": 1,
                "total_pass": 1,
                "accurate_pass": 35,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 1.0901,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "key_pass": 0,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.3,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Haji Wright",
                "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": "Haji Wright",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 5.6302,
                "minutes": 1,
                "total_pass": 1,
                "accurate_pass": 35,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 1.0901,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "key_pass": 0,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.3,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Haji Wright",
                "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": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 3, fifa_overall 81.0)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 5.6302,
                "minutes": 1,
                "total_pass": 1,
                "accurate_pass": 35,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 1.0901,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "key_pass": 0,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.3,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Haji Wright",
                "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,
                "fifa_overall": 81.0
              },
              "params": {
                "match_squad_rank": 3,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1131,
                "fifa_rank": 592.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 81.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 5.6302,
                "minutes": 1,
                "total_pass": 1,
                "accurate_pass": 35,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 1.0901,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "key_pass": 0,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.3,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Haji Wright",
                "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.0303,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0303,
                "scorer_weight": 0.4475,
                "squad_weight_total": 14.7543,
                "weight_share": 0.0303,
                "position_multiplier": 0.38
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 5.6302,
                "minutes": 1,
                "total_pass": 1,
                "accurate_pass": 35,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 1.0901,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "key_pass": 0,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.3,
                "interceptions_in_zone": 1.3,
                "clearances_in_zone": 1.1,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Haji Wright",
                "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.0303,
                "projected_assists": 0,
                "assist_probability": 0.0125,
                "fifa_overall": 81.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0125,
                "provider_weight": 0.0806,
                "squad_weight_total": 6.4555,
                "weight_share": 0.0125,
                "position_multiplier": 0.45
              }
            }
          ]
        },
        "Nikola Milenković": {
          "player_id": 836168,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 31,
          "height": 195,
          "market_value": 26000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 2,
            "rating": 7.2047,
            "minutes": 95,
            "total_pass": 36,
            "accurate_pass": 29,
            "duels_won": 6,
            "total_long_balls": 6,
            "accurate_long_balls": 2,
            "total_own_half_passes": 26,
            "accurate_own_half_passes": 23,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 6,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 51,
            "possession_lost": 7.3903,
            "dispossessed": 0.0,
            "duels_lost": 5,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0106,
            "total_shots": 1,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 12,
            "total_progression": 29,
            "progressive_carries": 0,
            "key_pass": 0,
            "tackles_in_zone": 1.1,
            "tackles_won_in_zone": 1.2,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Haji Wright",
            "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.0559,
            "projected_assists": 0,
            "assist_probability": 0.0134,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363639.0,
              "match_date": "2026-09-12 14:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Aston Villa",
              "away_team": "Forest",
              "home_score_current": 1.0,
              "away_score_current": 2.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Forest",
              "opponent": "Aston Villa",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assists": 0,
                "expected_assists": 0.0069,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 38,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363254.0,
              "match_date": "2026-08-29",
              "home_team": "Liverpool FC",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 14,
                "accurate_pass": 10,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 7,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363238.0,
              "match_date": "2026-08-22",
              "home_team": "Nottingham Forest",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assists": 0,
                "expected_goals": 0.1124,
                "expected_assists": 0.0237,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 45,
                "accurate_pass": 34,
                "clearances": 7,
                "aerial_won": 7,
                "duels_won": 8,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1531,
            "combined_rank_score": 623.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 567.0,
            "sofascore_rating": 6.8105,
            "sofascore_appearances": 38.0,
            "fifa_rank": 680.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "projected_match_rating": 7.2047,
            "source_file": "data/player_rankings.csv",
            "player_name": "Nikola Milenković",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alexander Callens",
                  "ranking": 1526
                },
                {
                  "player_name": "Fessin",
                  "ranking": 1527
                },
                {
                  "player_name": "Tony Ralston",
                  "ranking": 1528
                },
                {
                  "player_name": "Baton Zabergja",
                  "ranking": 1529
                },
                {
                  "player_name": "Jafar Arias",
                  "ranking": 1530
                }
              ],
              "lower": [
                {
                  "player_name": "Dong-jin Park",
                  "ranking": 1532
                },
                {
                  "player_name": "Nathaniel Brown",
                  "ranking": 1533
                },
                {
                  "player_name": "Kota Mizunuma",
                  "ranking": 1534
                },
                {
                  "player_name": "César Pinares",
                  "ranking": 1535
                },
                {
                  "player_name": "Ivan Šunjić",
                  "ranking": 1536
                }
              ]
            }
          },
          "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",
              "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",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0558,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 3 historical appearances across 6 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 6 target models",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 2,
                "rating": 6.8243,
                "minutes": 90,
                "total_pass": 34,
                "accurate_pass": 27,
                "duels_won": 6,
                "total_long_balls": 5,
                "accurate_long_balls": 2,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 22,
                "total_opp_half_passes": 9,
                "accurate_opp_half_passes": 6,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 48,
                "possession_lost": 7.0,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.01,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 11,
                "total_progression": 28,
                "progressive_carries": 0,
                "key_pass": 0
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:44.724055+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 374,
                    "rows": 1289
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "accuratePass": 27.6249,
                  "touches_p90": 47.7638,
                  "possessionLostCtrl": 6.5277,
                  "totalClearance": 6.6113,
                  "aerialWon": 3.0739
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.9621794819831848,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0944
                      },
                      {
                        "name": "duel_win_rate",
                        "importance": 0.0353
                      },
                      {
                        "name": "duelWon_p90",
                        "importance": 0.0341
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0326
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0322
                      }
                    ],
                    "decomposition": {
                      "base": 0.9108,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0439
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0423
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0145
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0129
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0109
                        }
                      ],
                      "others": -0.0223,
                      "total": 0.9622
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.410160779953003,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0588
                      },
                      {
                        "name": "duelLost",
                        "importance": 0.0461
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0446
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0406
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0401
                      }
                    ],
                    "decomposition": {
                      "base": 1.3553,
                      "items": [
                        {
                          "name": "duelLost",
                          "contribution": 0.0894
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.058
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0391
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.035
                        },
                        {
                          "name": "totalProgression",
                          "contribution": 0.0277
                        }
                      ],
                      "others": -0.0001,
                      "total": 1.4102
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.6801272630691528,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0565
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0432
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0353
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0347
                      },
                      {
                        "name": "wonTackle",
                        "importance": 0.0329
                      }
                    ],
                    "decomposition": {
                      "base": 0.8675,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0844
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0444
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0404
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0216
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.0199
                        }
                      ],
                      "others": -0.0165,
                      "total": 0.6801
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 5.355419635772705,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0506
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0425
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0417
                      },
                      {
                        "name": "tackle_success_rate",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 3.4032,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.344
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.371
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.193
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1715
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": 0.1546
                        }
                      ],
                      "others": 0.7181,
                      "total": 5.3554
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.7517873048782349,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0798
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0597
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0439
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0426
                      },
                      {
                        "name": "errorLeadToAShot",
                        "importance": 0.0411
                      }
                    ],
                    "decomposition": {
                      "base": 1.2421,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.1087
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0816
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0854
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0684
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0615
                        }
                      ],
                      "others": 0.1041,
                      "total": 1.7518
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.8242597579956055,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches_p90",
                        "importance": 0.0708
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0705
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0537
                      },
                      {
                        "name": "pass_accuracy",
                        "importance": 0.0518
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 6.6627,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": 0.0694
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0367
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0228
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0185
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.015
                        }
                      ],
                      "others": 0.0726,
                      "total": 6.8243
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0558, quality 0.686)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 2,
                "rating": 7.2047,
                "minutes": 95,
                "total_pass": 36,
                "accurate_pass": 29,
                "duels_won": 6,
                "total_long_balls": 6,
                "accurate_long_balls": 2,
                "total_own_half_passes": 26,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 6,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 51,
                "possession_lost": 7.3903,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0106,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 12,
                "total_progression": 29,
                "progressive_carries": 0,
                "key_pass": 0
              },
              "params": {
                "market_value_eur": 26000000,
                "quality_factor": 0.6858,
                "boost_factor": 1.0558
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 2,
                "rating": 7.2047,
                "minutes": 95,
                "total_pass": 36,
                "accurate_pass": 29,
                "duels_won": 6,
                "total_long_balls": 6,
                "accurate_long_balls": 2,
                "total_own_half_passes": 26,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 6,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 51,
                "possession_lost": 7.3903,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0106,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 12,
                "total_progression": 29,
                "progressive_carries": 0,
                "key_pass": 0
              },
              "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,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 2,
                "rating": 7.2047,
                "minutes": 95,
                "total_pass": 36,
                "accurate_pass": 29,
                "duels_won": 6,
                "total_long_balls": 6,
                "accurate_long_balls": 2,
                "total_own_half_passes": 26,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 6,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 51,
                "possession_lost": 7.3903,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0106,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 12,
                "total_progression": 29,
                "progressive_carries": 0,
                "key_pass": 0,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.2,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Haji Wright",
                "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": "Haji Wright",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 2,
                "rating": 7.2047,
                "minutes": 95,
                "total_pass": 36,
                "accurate_pass": 29,
                "duels_won": 6,
                "total_long_balls": 6,
                "accurate_long_balls": 2,
                "total_own_half_passes": 26,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 6,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 51,
                "possession_lost": 7.3903,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0106,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 12,
                "total_progression": 29,
                "progressive_carries": 0,
                "key_pass": 0,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.2,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Haji Wright",
                "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": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 6, fifa_overall 80.0)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 2,
                "rating": 7.2047,
                "minutes": 95,
                "total_pass": 36,
                "accurate_pass": 29,
                "duels_won": 6,
                "total_long_balls": 6,
                "accurate_long_balls": 2,
                "total_own_half_passes": 26,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 6,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 51,
                "possession_lost": 7.3903,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0106,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 12,
                "total_progression": 29,
                "progressive_carries": 0,
                "key_pass": 0,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.2,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Haji Wright",
                "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,
                "fifa_overall": 80.0
              },
              "params": {
                "match_squad_rank": 6,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1531,
                "fifa_rank": 680.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 80.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 2,
                "rating": 7.2047,
                "minutes": 95,
                "total_pass": 36,
                "accurate_pass": 29,
                "duels_won": 6,
                "total_long_balls": 6,
                "accurate_long_balls": 2,
                "total_own_half_passes": 26,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 6,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 51,
                "possession_lost": 7.3903,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0106,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 12,
                "total_progression": 29,
                "progressive_carries": 0,
                "key_pass": 0,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.2,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Haji Wright",
                "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.0559,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0559,
                "scorer_weight": 0.8249,
                "squad_weight_total": 14.7543,
                "weight_share": 0.0559,
                "position_multiplier": 0.38
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 2,
                "rating": 7.2047,
                "minutes": 95,
                "total_pass": 36,
                "accurate_pass": 29,
                "duels_won": 6,
                "total_long_balls": 6,
                "accurate_long_balls": 2,
                "total_own_half_passes": 26,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 6,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 51,
                "possession_lost": 7.3903,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0106,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 12,
                "total_progression": 29,
                "progressive_carries": 0,
                "key_pass": 0,
                "tackles_in_zone": 1.1,
                "tackles_won_in_zone": 1.2,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 1.0,
                "aerial_duels_won": 0.5,
                "defensive_success_rate": 0.82,
                "opponent_faced": "Haji Wright",
                "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.0559,
                "projected_assists": 0,
                "assist_probability": 0.0134,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0134,
                "provider_weight": 0.0867,
                "squad_weight_total": 6.4555,
                "weight_share": 0.0134,
                "position_multiplier": 0.45
              }
            }
          ]
        },
        "Neco Williams": {
          "player_id": 927356,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 3,
          "height": 183,
          "market_value": 26000000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "rating": 6.9191,
            "minutes": 95,
            "total_pass": 30,
            "accurate_pass": 21,
            "duels_won": 8,
            "total_long_balls": 5,
            "accurate_long_balls": 2,
            "total_own_half_passes": 15,
            "accurate_own_half_passes": 13,
            "total_opp_half_passes": 14,
            "accurate_opp_half_passes": 8,
            "crosses_total": 4,
            "crosses_accurate": 0,
            "touches": 59,
            "possession_lost": 14.4321,
            "dispossessed": 0.0,
            "duels_lost": 6,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 7,
            "challenges_lost": 2,
            "fouls": 0,
            "fouls_drawn": 2,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0845,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 10,
            "total_progression": 5,
            "progressive_carries": 0,
            "key_pass": 0,
            "opponent_faced": "Haji Wright",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0113,
            "projected_assists": 0,
            "assist_probability": 0.0325,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363639.0,
              "match_date": "2026-09-12 14:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Aston Villa",
              "away_team": "Forest",
              "home_score_current": 1.0,
              "away_score_current": 2.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Forest",
              "opponent": "Aston Villa",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.069,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 3,
                "duels_won": 7,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363254.0,
              "match_date": "2026-08-29",
              "home_team": "Liverpool FC",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 8.9,
                "assists": 0,
                "expected_goals": 0.1242,
                "expected_assists": 0.1549,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 27,
                "accurate_pass": 21,
                "key_pass": 2,
                "tackles": 6,
                "tackles_won": 4,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 8,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363238.0,
              "match_date": "2026-08-22",
              "home_team": "Nottingham Forest",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.0233,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 18,
                "tackles": 3,
                "tackles_won": 3,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 7,
                "ball_recovery": 10
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 758,
            "combined_rank_score": 367.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 49.0,
            "sofascore_rating": 7.75,
            "sofascore_appearances": 2.0,
            "fifa_rank": 685.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "projected_match_rating": 6.9191,
            "source_file": "data/player_rankings.csv",
            "player_name": "Neco Williams",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nicolás L'Huiller",
                  "ranking": 753
                },
                {
                  "player_name": "Bryan Ogaz",
                  "ranking": 754
                },
                {
                  "player_name": "Agustin Nadruz",
                  "ranking": 755
                },
                {
                  "player_name": "Julian Brandt",
                  "ranking": 756
                },
                {
                  "player_name": "Bernardo Silva",
                  "ranking": 757
                }
              ],
              "lower": [
                {
                  "player_name": "Jay O'Shea",
                  "ranking": 759
                },
                {
                  "player_name": "Chan-hee Han",
                  "ranking": 760
                },
                {
                  "player_name": "Abdullokh Yuldashev",
                  "ranking": 761
                },
                {
                  "player_name": "Min-woo Kim",
                  "ranking": 762
                },
                {
                  "player_name": "Joey Veerman",
                  "ranking": 763
                }
              ]
            }
          },
          "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",
              "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",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0558,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (D_service) evaluated 3 historical appearances across 6 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 6 target models",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 6.5538,
                "minutes": 90,
                "total_pass": 28,
                "accurate_pass": 20,
                "duels_won": 7,
                "total_long_balls": 5,
                "accurate_long_balls": 2,
                "total_own_half_passes": 14,
                "accurate_own_half_passes": 12,
                "total_opp_half_passes": 14,
                "accurate_opp_half_passes": 8,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 56,
                "possession_lost": 13.67,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 6,
                "challenges_lost": 2,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.08,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 5,
                "progressive_carries": 0,
                "key_pass": 0
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:44.724055+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 374,
                    "rows": 1289
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 8.9
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "accuratePass": 20.1574,
                  "touches_p90": 56.0496,
                  "possessionLostCtrl": 13.6288,
                  "totalClearance": 3.0,
                  "aerialWon": 0.8921
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.8803921937942505,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0944
                      },
                      {
                        "name": "duel_win_rate",
                        "importance": 0.0353
                      },
                      {
                        "name": "duelWon_p90",
                        "importance": 0.0341
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0326
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0322
                      }
                    ],
                    "decomposition": {
                      "base": 0.9108,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0268
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0223
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0213
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0212
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0173
                        }
                      ],
                      "others": -0.0523,
                      "total": 0.8804
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.651467204093933,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0588
                      },
                      {
                        "name": "duelLost",
                        "importance": 0.0461
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0446
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0406
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0401
                      }
                    ],
                    "decomposition": {
                      "base": 1.3553,
                      "items": [
                        {
                          "name": "totalProgression",
                          "contribution": -0.1128
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.1018
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.1098
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0987
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0771
                        }
                      ],
                      "others": 0.0216,
                      "total": 1.6515
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.341709852218628,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0565
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0432
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0353
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0347
                      },
                      {
                        "name": "wonTackle",
                        "importance": 0.0329
                      }
                    ],
                    "decomposition": {
                      "base": 0.8675,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.182
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.1108
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.1024
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.1085
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0465
                        }
                      ],
                      "others": 0.2386,
                      "total": 1.3417
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.617976427078247,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0506
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0425
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0417
                      },
                      {
                        "name": "tackle_success_rate",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 3.4032,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.3045
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.2227
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2006
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.1839
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": -0.1255
                        }
                      ],
                      "others": -0.1492,
                      "total": 2.618
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.9939444661140442,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0798
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0597
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0439
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0426
                      },
                      {
                        "name": "errorLeadToAShot",
                        "importance": 0.0411
                      }
                    ],
                    "decomposition": {
                      "base": 1.2421,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.092
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0542
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0488
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0427
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0359
                        }
                      ],
                      "others": -0.06,
                      "total": 0.9939
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.553750038146973,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches_p90",
                        "importance": 0.0708
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0705
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0537
                      },
                      {
                        "name": "pass_accuracy",
                        "importance": 0.0518
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 6.6627,
                      "items": [
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0362
                        },
                        {
                          "name": "wonTackle",
                          "contribution": -0.0291
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0215
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0183
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0176
                        }
                      ],
                      "others": -0.0292,
                      "total": 6.5538
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0558, quality 0.686)",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 6.9191,
                "minutes": 95,
                "total_pass": 30,
                "accurate_pass": 21,
                "duels_won": 8,
                "total_long_balls": 5,
                "accurate_long_balls": 2,
                "total_own_half_passes": 15,
                "accurate_own_half_passes": 13,
                "total_opp_half_passes": 14,
                "accurate_opp_half_passes": 8,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 59,
                "possession_lost": 14.4321,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 7,
                "challenges_lost": 2,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0845,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 5,
                "progressive_carries": 0,
                "key_pass": 0
              },
              "params": {
                "market_value_eur": 26000000,
                "quality_factor": 0.6858,
                "boost_factor": 1.0558
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 6.9191,
                "minutes": 95,
                "total_pass": 30,
                "accurate_pass": 21,
                "duels_won": 8,
                "total_long_balls": 5,
                "accurate_long_balls": 2,
                "total_own_half_passes": 15,
                "accurate_own_half_passes": 13,
                "total_opp_half_passes": 14,
                "accurate_opp_half_passes": 8,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 59,
                "possession_lost": 14.4321,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 7,
                "challenges_lost": 2,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0845,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 5,
                "progressive_carries": 0,
                "key_pass": 0
              },
              "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,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 6.9191,
                "minutes": 95,
                "total_pass": 30,
                "accurate_pass": 21,
                "duels_won": 8,
                "total_long_balls": 5,
                "accurate_long_balls": 2,
                "total_own_half_passes": 15,
                "accurate_own_half_passes": 13,
                "total_opp_half_passes": 14,
                "accurate_opp_half_passes": 8,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 59,
                "possession_lost": 14.4321,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 7,
                "challenges_lost": 2,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0845,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 5,
                "progressive_carries": 0,
                "key_pass": 0,
                "opponent_faced": "Haji Wright",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Haji Wright",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 6.9191,
                "minutes": 95,
                "total_pass": 30,
                "accurate_pass": 21,
                "duels_won": 8,
                "total_long_balls": 5,
                "accurate_long_balls": 2,
                "total_own_half_passes": 15,
                "accurate_own_half_passes": 13,
                "total_opp_half_passes": 14,
                "accurate_opp_half_passes": 8,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 59,
                "possession_lost": 14.4321,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 7,
                "challenges_lost": 2,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0845,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 5,
                "progressive_carries": 0,
                "key_pass": 0,
                "opponent_faced": "Haji Wright",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 9, fifa_overall 80.0)",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 6.9191,
                "minutes": 95,
                "total_pass": 30,
                "accurate_pass": 21,
                "duels_won": 8,
                "total_long_balls": 5,
                "accurate_long_balls": 2,
                "total_own_half_passes": 15,
                "accurate_own_half_passes": 13,
                "total_opp_half_passes": 14,
                "accurate_opp_half_passes": 8,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 59,
                "possession_lost": 14.4321,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 7,
                "challenges_lost": 2,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0845,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 5,
                "progressive_carries": 0,
                "key_pass": 0,
                "opponent_faced": "Haji Wright",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 80.0
              },
              "params": {
                "match_squad_rank": 9,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 758,
                "fifa_rank": 685.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 80.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 6.9191,
                "minutes": 95,
                "total_pass": 30,
                "accurate_pass": 21,
                "duels_won": 8,
                "total_long_balls": 5,
                "accurate_long_balls": 2,
                "total_own_half_passes": 15,
                "accurate_own_half_passes": 13,
                "total_opp_half_passes": 14,
                "accurate_opp_half_passes": 8,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 59,
                "possession_lost": 14.4321,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 7,
                "challenges_lost": 2,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0845,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 5,
                "progressive_carries": 0,
                "key_pass": 0,
                "opponent_faced": "Haji Wright",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0113,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0113,
                "scorer_weight": 0.1669,
                "squad_weight_total": 14.7543,
                "weight_share": 0.0113,
                "position_multiplier": 0.38
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "rating": 6.9191,
                "minutes": 95,
                "total_pass": 30,
                "accurate_pass": 21,
                "duels_won": 8,
                "total_long_balls": 5,
                "accurate_long_balls": 2,
                "total_own_half_passes": 15,
                "accurate_own_half_passes": 13,
                "total_opp_half_passes": 14,
                "accurate_opp_half_passes": 8,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 59,
                "possession_lost": 14.4321,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 7,
                "challenges_lost": 2,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0845,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 5,
                "progressive_carries": 0,
                "key_pass": 0,
                "opponent_faced": "Haji Wright",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0113,
                "projected_assists": 0,
                "assist_probability": 0.0325,
                "fifa_overall": 80.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0325,
                "provider_weight": 0.2095,
                "squad_weight_total": 6.4555,
                "weight_share": 0.0325,
                "position_multiplier": 0.45
              }
            }
          ]
        },
        "Morgan Gibbs-White": {
          "player_id": 865912,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 10,
          "height": 171,
          "market_value": 67000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0822,
            "assists": 1,
            "expected_goals": 0.2655,
            "rating": 7.6813,
            "minutes": 95,
            "total_pass": 30,
            "accurate_pass": 25,
            "duels_won": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 12,
            "accurate_own_half_passes": 10,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 14,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 56,
            "possession_lost": 16.2812,
            "dispossessed": 0.0,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 15,
            "total_progression": 15,
            "progressive_carries": 1,
            "total_shots": 2,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.465,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
            "numerical_situation": "1v1",
            "opponent_defenders": "Jack Rudoni",
            "opponent_faced": "Jack Rudoni",
            "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0748,
            "projected_assists": 1,
            "assist_probability": 0.2231,
            "fifa_overall": 83.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363639.0,
              "match_date": "2026-09-12 14:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Aston Villa",
              "away_team": "Forest",
              "home_score_current": 1.0,
              "away_score_current": 2.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Forest",
              "opponent": "Aston Villa",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assists": 0,
                "expected_goals": 0.4751,
                "expected_assists": 0.0129,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 22,
                "accurate_pass": 18,
                "tackles": 2,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363254.0,
              "match_date": "2026-08-29",
              "home_team": "Liverpool FC",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 1,
                "expected_goals": 0.7884,
                "expected_assists": 0.044,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 21,
                "accurate_pass": 17,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363238.0,
              "match_date": "2026-08-22",
              "home_team": "Nottingham Forest",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.1327,
                "expected_assists": 0.0578,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 38,
                "accurate_pass": 32,
                "interceptions": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 313,
            "combined_rank_score": 215.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 2.0,
            "fifa_rank": 273.0,
            "fifa_overall": 83.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "projected_match_rating": 7.6813,
            "source_file": "data/player_rankings.csv",
            "player_name": "Morgan Gibbs-White",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lorenzo Reyes",
                  "ranking": 308
                },
                {
                  "player_name": "Donyell Malen",
                  "ranking": 309
                },
                {
                  "player_name": "Josh Wilson-Esbrand",
                  "ranking": 310
                },
                {
                  "player_name": "Choi Jun-yeong",
                  "ranking": 311
                },
                {
                  "player_name": "Wladimiro Falcone",
                  "ranking": 312
                }
              ],
              "lower": [
                {
                  "player_name": "Bojan Ciger",
                  "ranking": 314
                },
                {
                  "player_name": "Juan Musso",
                  "ranking": 315
                },
                {
                  "player_name": "Ju-kong Kim",
                  "ranking": 316
                },
                {
                  "player_name": "Jae-yong Bak",
                  "ranking": 317
                },
                {
                  "player_name": "Bryan Mbeumo",
                  "ranking": 318
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "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",
              "numberOfSprints",
              "kilometersCovered",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "intensity_index",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.1098,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (M_service) evaluated 3 historical appearances across 5 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 5 target models",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0741,
                "assists": 0,
                "expected_goals": 0.1583,
                "rating": 6.9211,
                "minutes": 90,
                "total_pass": 27,
                "accurate_pass": 22,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 11,
                "accurate_own_half_passes": 9,
                "total_opp_half_passes": 16,
                "accurate_opp_half_passes": 13,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 50,
                "possession_lost": 14.67,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 13,
                "total_progression": 14,
                "progressive_carries": 1
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:48.236605+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 461,
                    "rows": 1422
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "ballRecovery_p90": 3.1662,
                  "ballRecovery": 3.1662,
                  "intensity_index": 9.0234,
                  "expectedAssists": 0.0358,
                  "kilometersCovered": 10.6836
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.925979733467102,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0551
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0489
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0393
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.035
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 0.9691,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0474
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0464
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0374
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0323
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0268
                        }
                      ],
                      "others": -0.094,
                      "total": 0.926
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07410544157028198,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "cross_creative_contribution",
                        "importance": 0.0714
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0375
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0356
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0345
                      }
                    ],
                    "decomposition": {
                      "base": 0.0929,
                      "items": [
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.013
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.01
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0053
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0049
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0031
                        }
                      ],
                      "others": -0.0147,
                      "total": 0.0741
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.09251723438501358,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0378
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0368
                      },
                      {
                        "name": "cross_accuracy",
                        "importance": 0.036
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0315
                      }
                    ],
                    "decomposition": {
                      "base": 0.0956,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": 0.0112
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.008
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": -0.0049
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.004
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0038
                        }
                      ],
                      "others": -0.0092,
                      "total": 0.0925
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.15833811461925507,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.077
                      },
                      {
                        "name": "intensity_index",
                        "importance": 0.0622
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0454
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0399
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0384
                      }
                    ],
                    "decomposition": {
                      "base": 0.1087,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0277
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0209
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0191
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0109
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": 0.0072
                        }
                      ],
                      "others": 0.0274,
                      "total": 0.1583
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.92112398147583,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "ballRecovery_p90",
                        "importance": 0.0847
                      },
                      {
                        "name": "ballRecovery",
                        "importance": 0.0836
                      },
                      {
                        "name": "kilometersCovered",
                        "importance": 0.0597
                      },
                      {
                        "name": "defensive_midfield_actions",
                        "importance": 0.05
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0441
                      }
                    ],
                    "decomposition": {
                      "base": 6.8318,
                      "items": [
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0297
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0188
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0155
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0131
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.011
                        }
                      ],
                      "others": 0.0012,
                      "total": 6.9211
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.1098, quality 0.866)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0822,
                "assists": 0,
                "expected_goals": 0.1757,
                "rating": 7.6813,
                "minutes": 95,
                "total_pass": 30,
                "accurate_pass": 25,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 12,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 56,
                "possession_lost": 16.2812,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 15,
                "total_progression": 15,
                "progressive_carries": 1
              },
              "params": {
                "market_value_eur": 67000000,
                "quality_factor": 0.8661,
                "boost_factor": 1.1098
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0822,
                "assists": 0,
                "expected_goals": 0.1757,
                "rating": 7.6813,
                "minutes": 95,
                "total_pass": 30,
                "accurate_pass": 25,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 12,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 56,
                "possession_lost": 16.2812,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 15,
                "total_progression": 15,
                "progressive_carries": 1
              },
              "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,
                "expected_assists": 0.0822,
                "assists": 0,
                "expected_goals": 0.1757,
                "rating": 7.6813,
                "minutes": 95,
                "total_pass": 30,
                "accurate_pass": 25,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 12,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 56,
                "possession_lost": 16.2812,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 15,
                "total_progression": 15,
                "progressive_carries": 1,
                "total_shots": 2,
                "dribbles_attempted": 3,
                "dribbles_successful": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.465,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Jack Rudoni",
                "opponent_faced": "Jack Rudoni",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Jack Rudoni",
                  "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                  "duel_win_rate": 0.465,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v1"
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.0,
                  "after": 0.8
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0822,
                "assists": 0,
                "expected_goals": 0.2655,
                "rating": 7.6813,
                "minutes": 95,
                "total_pass": 30,
                "accurate_pass": 25,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 12,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 56,
                "possession_lost": 16.2812,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 15,
                "total_progression": 15,
                "progressive_carries": 1,
                "total_shots": 2,
                "dribbles_attempted": 3,
                "dribbles_successful": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.465,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Jack Rudoni",
                "opponent_faced": "Jack Rudoni",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1757,
                  "after": 0.2655
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 1, fifa_overall 83.0)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0822,
                "assists": 0,
                "expected_goals": 0.2655,
                "rating": 7.6813,
                "minutes": 95,
                "total_pass": 30,
                "accurate_pass": 25,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 12,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 56,
                "possession_lost": 16.2812,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 15,
                "total_progression": 15,
                "progressive_carries": 1,
                "total_shots": 2,
                "dribbles_attempted": 3,
                "dribbles_successful": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.465,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Jack Rudoni",
                "opponent_faced": "Jack Rudoni",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 83.0
              },
              "params": {
                "match_squad_rank": 1,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 313,
                "fifa_rank": 273.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 83.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0822,
                "assists": 0,
                "expected_goals": 0.2655,
                "rating": 7.6813,
                "minutes": 95,
                "total_pass": 30,
                "accurate_pass": 25,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 12,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 56,
                "possession_lost": 16.2812,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 15,
                "total_progression": 15,
                "progressive_carries": 1,
                "total_shots": 2,
                "dribbles_attempted": 3,
                "dribbles_successful": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.465,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Jack Rudoni",
                "opponent_faced": "Jack Rudoni",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0748,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 83.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0748,
                "scorer_weight": 1.1035,
                "squad_weight_total": 14.7543,
                "weight_share": 0.0748,
                "position_multiplier": 0.78
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0822,
                "assists": 1,
                "expected_goals": 0.2655,
                "rating": 7.6813,
                "minutes": 95,
                "total_pass": 30,
                "accurate_pass": 25,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 12,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 56,
                "possession_lost": 16.2812,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 15,
                "total_progression": 15,
                "progressive_carries": 1,
                "total_shots": 2,
                "dribbles_attempted": 3,
                "dribbles_successful": 1.2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.465,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Jack Rudoni",
                "opponent_faced": "Jack Rudoni",
                "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0748,
                "projected_assists": 1,
                "assist_probability": 0.2231,
                "fifa_overall": 83.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 1,
                "assist_probability": 0.2231,
                "provider_weight": 1.4402,
                "squad_weight_total": 6.4555,
                "weight_share": 0.2231,
                "position_multiplier": 1.45
              }
            }
          ]
        },
        "Callum Hudson Odoi": {
          "player_id": 867442,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 7,
          "height": 177,
          "market_value": 32000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0699,
            "assists": 0,
            "expected_goals": 0.1002,
            "rating": 7.1648,
            "minutes": 1,
            "total_pass": 2,
            "accurate_pass": 2,
            "duels_won": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 5,
            "possession_lost": 2.1392,
            "dispossessed": 1.0696,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 1,
            "total_progression": 0,
            "progressive_carries": 0,
            "total_shots": 2,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.1,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.429,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
            "numerical_situation": "1v1",
            "opponent_defenders": "Jack Rudoni",
            "opponent_faced": "Jack Rudoni",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0403,
            "projected_assists": 0,
            "assist_probability": 0.202,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363254.0,
              "match_date": "2026-08-29",
              "home_team": "Liverpool FC",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 1,
                "assists": 0,
                "expected_assists": 0.0027,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 2079,
            "combined_rank_score": 790.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 479.0,
            "sofascore_rating": 6.8733,
            "sofascore_appearances": 30.0,
            "fifa_rank": 1102.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "projected_match_rating": 7.1648,
            "source_file": "data/player_rankings.csv",
            "player_name": "Callum Hudson Odoi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Maximiliano Rodríguez",
                  "ranking": 2074
                },
                {
                  "player_name": "Abbos Gulomov",
                  "ranking": 2075
                },
                {
                  "player_name": "Chan-dong Lee",
                  "ranking": 2076
                },
                {
                  "player_name": "Leonardo Spinazzola",
                  "ranking": 2077
                },
                {
                  "player_name": "Toni Martínez",
                  "ranking": 2078
                }
              ],
              "lower": [
                {
                  "player_name": "Cédric Bakambu",
                  "ranking": 2080
                },
                {
                  "player_name": "Renato Veiga",
                  "ranking": 2081
                },
                {
                  "player_name": "Shodiyor Shodiboev",
                  "ranking": 2082
                },
                {
                  "player_name": "Matija Rom",
                  "ranking": 2083
                },
                {
                  "player_name": "Franco Rami",
                  "ranking": 2084
                }
              ]
            }
          },
          "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",
              "numberOfSprints",
              "kilometersCovered",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "intensity_index",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "rating"
            ],
            "history_matches": 1,
            "data_confidence": 0.312,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0696,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (M_service) evaluated 1 historical appearances across 5 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 5 target models",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0653,
                "assists": 0,
                "expected_goals": 0.062,
                "rating": 6.6986,
                "minutes": 1,
                "total_pass": 2,
                "accurate_pass": 2,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 2.0,
                "dispossessed": 1.0,
                "duels_lost": 3,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 1,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:48.236605+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 461,
                    "rows": 1422
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Liverpool FC",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 1.0,
                    "rating": null
                  }
                ],
                "feature_row": {
                  "history_matches": 1.0,
                  "is_starting_11": 1.0,
                  "ballRecovery_p90": 0.0,
                  "ballRecovery": 0.0,
                  "intensity_index": 0.6802,
                  "expectedAssists": 0.0027,
                  "kilometersCovered": 0.6008
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.8753591179847717,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0551
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0489
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0393
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.035
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 0.9691,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0782
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0763
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.058
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0358
                        },
                        {
                          "name": "intensity_index",
                          "contribution": 0.0334
                        }
                      ],
                      "others": -0.0352,
                      "total": 0.8754
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06533940881490707,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "cross_creative_contribution",
                        "importance": 0.0714
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0375
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0356
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0345
                      }
                    ],
                    "decomposition": {
                      "base": 0.0929,
                      "items": [
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0155
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": 0.0086
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.006
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0059
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0053
                        }
                      ],
                      "others": -0.0153,
                      "total": 0.0653
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.09361406415700912,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0378
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0368
                      },
                      {
                        "name": "cross_accuracy",
                        "importance": 0.036
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0315
                      }
                    ],
                    "decomposition": {
                      "base": 0.0956,
                      "items": [
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0051
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0046
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0045
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0043
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0038
                        }
                      ],
                      "others": 0.0009,
                      "total": 0.0936
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.0620214119553566,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.077
                      },
                      {
                        "name": "intensity_index",
                        "importance": 0.0622
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0454
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0399
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0384
                      }
                    ],
                    "decomposition": {
                      "base": 0.1087,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0141
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": 0.0124
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0121
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0094
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0084
                        }
                      ],
                      "others": -0.0151,
                      "total": 0.062
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.69858455657959,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "ballRecovery_p90",
                        "importance": 0.0847
                      },
                      {
                        "name": "ballRecovery",
                        "importance": 0.0836
                      },
                      {
                        "name": "kilometersCovered",
                        "importance": 0.0597
                      },
                      {
                        "name": "defensive_midfield_actions",
                        "importance": 0.05
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0441
                      }
                    ],
                    "decomposition": {
                      "base": 6.8318,
                      "items": [
                        {
                          "name": "kilometersCovered",
                          "contribution": -0.2677
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.1204
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": 0.0701
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0546
                        },
                        {
                          "name": "intensity_index",
                          "contribution": 0.0279
                        }
                      ],
                      "others": -0.0293,
                      "total": 6.6986
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0696, quality 0.732)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0699,
                "assists": 0,
                "expected_goals": 0.0663,
                "rating": 7.1648,
                "minutes": 1,
                "total_pass": 2,
                "accurate_pass": 2,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 2.1392,
                "dispossessed": 1.0696,
                "duels_lost": 3,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 1,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "params": {
                "market_value_eur": 32000000,
                "quality_factor": 0.732,
                "boost_factor": 1.0696
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0699,
                "assists": 0,
                "expected_goals": 0.0663,
                "rating": 7.1648,
                "minutes": 1,
                "total_pass": 2,
                "accurate_pass": 2,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 2.1392,
                "dispossessed": 1.0696,
                "duels_lost": 3,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 1,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "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,
                "expected_assists": 0.0699,
                "assists": 0,
                "expected_goals": 0.0663,
                "rating": 7.1648,
                "minutes": 1,
                "total_pass": 2,
                "accurate_pass": 2,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 2.1392,
                "dispossessed": 1.0696,
                "duels_lost": 3,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 1,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 3,
                "dribbles_successful": 1.1,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.429,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Jack Rudoni",
                "opponent_faced": "Jack Rudoni",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Jack Rudoni",
                  "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                  "duel_win_rate": 0.429,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v1"
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.0,
                  "after": 1.0
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0699,
                "assists": 0,
                "expected_goals": 0.1002,
                "rating": 7.1648,
                "minutes": 1,
                "total_pass": 2,
                "accurate_pass": 2,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 2.1392,
                "dispossessed": 1.0696,
                "duels_lost": 3,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 1,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 3,
                "dribbles_successful": 1.1,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.429,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Jack Rudoni",
                "opponent_faced": "Jack Rudoni",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0663,
                  "after": 0.1002
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 4, fifa_overall 78.0)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0699,
                "assists": 0,
                "expected_goals": 0.1002,
                "rating": 7.1648,
                "minutes": 1,
                "total_pass": 2,
                "accurate_pass": 2,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 2.1392,
                "dispossessed": 1.0696,
                "duels_lost": 3,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 1,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 3,
                "dribbles_successful": 1.1,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.429,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Jack Rudoni",
                "opponent_faced": "Jack Rudoni",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 4,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 2079,
                "fifa_rank": 1102.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0699,
                "assists": 0,
                "expected_goals": 0.1002,
                "rating": 7.1648,
                "minutes": 1,
                "total_pass": 2,
                "accurate_pass": 2,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 2.1392,
                "dispossessed": 1.0696,
                "duels_lost": 3,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 1,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 3,
                "dribbles_successful": 1.1,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.429,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Jack Rudoni",
                "opponent_faced": "Jack Rudoni",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0403,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0403,
                "scorer_weight": 0.5948,
                "squad_weight_total": 14.7543,
                "weight_share": 0.0403,
                "position_multiplier": 0.78
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0699,
                "assists": 0,
                "expected_goals": 0.1002,
                "rating": 7.1648,
                "minutes": 1,
                "total_pass": 2,
                "accurate_pass": 2,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 2.1392,
                "dispossessed": 1.0696,
                "duels_lost": 3,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 1,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 3,
                "dribbles_successful": 1.1,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.429,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
                "numerical_situation": "1v1",
                "opponent_defenders": "Jack Rudoni",
                "opponent_faced": "Jack Rudoni",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0403,
                "projected_assists": 0,
                "assist_probability": 0.202,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.202,
                "provider_weight": 1.3041,
                "squad_weight_total": 6.4555,
                "weight_share": 0.202,
                "position_multiplier": 1.45
              }
            }
          ]
        },
        "Dan Ndoye": {
          "player_id": 944327,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 14,
          "height": 184,
          "market_value": 31000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0498,
            "assists": 0,
            "expected_goals": 0.1189,
            "rating": 7.2578,
            "minutes": 67,
            "total_pass": 11,
            "accurate_pass": 8,
            "duels_won": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 25,
            "possession_lost": 8.8921,
            "dispossessed": 0.0,
            "duels_lost": 6,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 3,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 7,
            "total_progression": 34,
            "progressive_carries": 1,
            "opponent_faced": "Jack Rudoni, Gustavo Hamer",
            "matchup_zone": "Central Mid vs Mid + CDM Pressing Trap",
            "antagonist_source": "defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0334,
            "projected_assists": 0,
            "assist_probability": 0.1859,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363639.0,
              "match_date": "2026-09-12 14:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Aston Villa",
              "away_team": "Forest",
              "home_score_current": 1.0,
              "away_score_current": 2.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Forest",
              "opponent": "Aston Villa",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 59,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 3,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363254.0,
              "match_date": "2026-08-29",
              "home_team": "Liverpool FC",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 66,
                "rating": 7.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.3513,
                "expected_assists": 0.6337,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 17,
                "accurate_pass": 13,
                "key_pass": 2,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363238.0,
              "match_date": "2026-08-22",
              "home_team": "Nottingham Forest",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 62,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0024,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 6,
                "tackles": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1963,
            "combined_rank_score": 758.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 84.0,
            "sofascore_rating": 7.54,
            "sofascore_appearances": 5.0,
            "fifa_rank": 1432.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "projected_match_rating": 7.2578,
            "source_file": "data/player_rankings.csv",
            "player_name": "Dan Ndoye",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Bobomurod Bozorov",
                  "ranking": 1958
                },
                {
                  "player_name": "Zafar Hakimov",
                  "ranking": 1959
                },
                {
                  "player_name": "Jani Atanasov",
                  "ranking": 1960
                },
                {
                  "player_name": "Isi",
                  "ranking": 1961
                },
                {
                  "player_name": "Can Uzun",
                  "ranking": 1962
                }
              ],
              "lower": [
                {
                  "player_name": "Lucas Bergvall",
                  "ranking": 1964
                },
                {
                  "player_name": "Matías Marín",
                  "ranking": 1965
                },
                {
                  "player_name": "Reno Piscopo",
                  "ranking": 1966
                },
                {
                  "player_name": "Lee Kang In",
                  "ranking": 1967
                },
                {
                  "player_name": "Kenny Tete",
                  "ranking": 1968
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "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",
              "numberOfSprints",
              "kilometersCovered",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "intensity_index",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0675,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (M_service) evaluated 3 historical appearances across 5 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 5 target models",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0466,
                "assists": 0,
                "expected_goals": 0.0738,
                "rating": 6.799,
                "minutes": 62,
                "total_pass": 11,
                "accurate_pass": 7,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 7,
                "accurate_opp_half_passes": 5,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 23,
                "possession_lost": 8.33,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 3,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 6,
                "total_progression": 32,
                "progressive_carries": 1
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:48.236605+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 461,
                    "rows": 1422
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Liverpool FC",
                    "minutes": 66.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Leeds United",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "ballRecovery_p90": 6.3841,
                  "ballRecovery": 4.4791,
                  "intensity_index": 8.9969,
                  "expectedAssists": 0.2105,
                  "kilometersCovered": 7.3188
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.8359094262123108,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0551
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0489
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0393
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.035
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 0.9691,
                      "items": [
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0717
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0713
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0375
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.037
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.029
                        }
                      ],
                      "others": -0.1043,
                      "total": 0.8359
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04664993658661842,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "cross_creative_contribution",
                        "importance": 0.0714
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0375
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0356
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0345
                      }
                    ],
                    "decomposition": {
                      "base": 0.0929,
                      "items": [
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0146
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0113
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0061
                        },
                        {
                          "name": "creative_efficiency",
                          "contribution": 0.0061
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0044
                        }
                      ],
                      "others": -0.016,
                      "total": 0.0466
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.11824633926153183,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0378
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0368
                      },
                      {
                        "name": "cross_accuracy",
                        "importance": 0.036
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0315
                      }
                    ],
                    "decomposition": {
                      "base": 0.0956,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": 0.0236
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0101
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0072
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": 0.0059
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0043
                        }
                      ],
                      "others": 0.0147,
                      "total": 0.1182
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07375390827655792,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.077
                      },
                      {
                        "name": "intensity_index",
                        "importance": 0.0622
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0454
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0399
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0384
                      }
                    ],
                    "decomposition": {
                      "base": 0.1087,
                      "items": [
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0201
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0152
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0067
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": 0.004
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0036
                        }
                      ],
                      "others": -0.0005,
                      "total": 0.0738
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.798999786376953,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "ballRecovery_p90",
                        "importance": 0.0847
                      },
                      {
                        "name": "ballRecovery",
                        "importance": 0.0836
                      },
                      {
                        "name": "kilometersCovered",
                        "importance": 0.0597
                      },
                      {
                        "name": "defensive_midfield_actions",
                        "importance": 0.05
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0441
                      }
                    ],
                    "decomposition": {
                      "base": 6.8318,
                      "items": [
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.0298
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0297
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0249
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": 0.0205
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0203
                        }
                      ],
                      "others": -0.0984,
                      "total": 6.799
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0675, quality 0.725)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0498,
                "assists": 0,
                "expected_goals": 0.0787,
                "rating": 7.2578,
                "minutes": 67,
                "total_pass": 11,
                "accurate_pass": 8,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 8,
                "accurate_opp_half_passes": 5,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 25,
                "possession_lost": 8.8921,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 3,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 7,
                "total_progression": 34,
                "progressive_carries": 1
              },
              "params": {
                "market_value_eur": 31000000,
                "quality_factor": 0.7249,
                "boost_factor": 1.0675
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0498,
                "assists": 0,
                "expected_goals": 0.0787,
                "rating": 7.2578,
                "minutes": 67,
                "total_pass": 11,
                "accurate_pass": 8,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 8,
                "accurate_opp_half_passes": 5,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 25,
                "possession_lost": 8.8921,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 3,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 7,
                "total_progression": 34,
                "progressive_carries": 1
              },
              "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,
                "expected_assists": 0.0498,
                "assists": 0,
                "expected_goals": 0.0787,
                "rating": 7.2578,
                "minutes": 67,
                "total_pass": 11,
                "accurate_pass": 8,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 8,
                "accurate_opp_half_passes": 5,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 25,
                "possession_lost": 8.8921,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 3,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 7,
                "total_progression": 34,
                "progressive_carries": 1,
                "opponent_faced": "Jack Rudoni, Gustavo Hamer",
                "matchup_zone": "Central Mid vs Mid + CDM Pressing Trap",
                "antagonist_source": "defensive_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Jack Rudoni, Gustavo Hamer",
                  "matchup_zone": "Central Mid vs Mid + CDM Pressing Trap"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0498,
                "assists": 0,
                "expected_goals": 0.1189,
                "rating": 7.2578,
                "minutes": 67,
                "total_pass": 11,
                "accurate_pass": 8,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 8,
                "accurate_opp_half_passes": 5,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 25,
                "possession_lost": 8.8921,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 3,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 7,
                "total_progression": 34,
                "progressive_carries": 1,
                "opponent_faced": "Jack Rudoni, Gustavo Hamer",
                "matchup_zone": "Central Mid vs Mid + CDM Pressing Trap",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0787,
                  "after": 0.1189
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 5, fifa_overall 77.0)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0498,
                "assists": 0,
                "expected_goals": 0.1189,
                "rating": 7.2578,
                "minutes": 67,
                "total_pass": 11,
                "accurate_pass": 8,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 8,
                "accurate_opp_half_passes": 5,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 25,
                "possession_lost": 8.8921,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 3,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 7,
                "total_progression": 34,
                "progressive_carries": 1,
                "opponent_faced": "Jack Rudoni, Gustavo Hamer",
                "matchup_zone": "Central Mid vs Mid + CDM Pressing Trap",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 5,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1963,
                "fifa_rank": 1432.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0498,
                "assists": 0,
                "expected_goals": 0.1189,
                "rating": 7.2578,
                "minutes": 67,
                "total_pass": 11,
                "accurate_pass": 8,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 8,
                "accurate_opp_half_passes": 5,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 25,
                "possession_lost": 8.8921,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 3,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 7,
                "total_progression": 34,
                "progressive_carries": 1,
                "opponent_faced": "Jack Rudoni, Gustavo Hamer",
                "matchup_zone": "Central Mid vs Mid + CDM Pressing Trap",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0334,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.0334,
                "scorer_weight": 0.4932,
                "squad_weight_total": 14.7543,
                "weight_share": 0.0334,
                "position_multiplier": 0.78
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0498,
                "assists": 0,
                "expected_goals": 0.1189,
                "rating": 7.2578,
                "minutes": 67,
                "total_pass": 11,
                "accurate_pass": 8,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 8,
                "accurate_opp_half_passes": 5,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 25,
                "possession_lost": 8.8921,
                "dispossessed": 0.0,
                "duels_lost": 6,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 3,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 7,
                "total_progression": 34,
                "progressive_carries": 1,
                "opponent_faced": "Jack Rudoni, Gustavo Hamer",
                "matchup_zone": "Central Mid vs Mid + CDM Pressing Trap",
                "antagonist_source": "defensive_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0334,
                "projected_assists": 0,
                "assist_probability": 0.1859,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1859,
                "provider_weight": 1.2002,
                "squad_weight_total": 6.4555,
                "weight_share": 0.1859,
                "position_multiplier": 1.45
              }
            }
          ]
        },
        "Liam Delap": {
          "player_id": 997087,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 19,
          "height": 186,
          "market_value": 26000000,
          "stats": {
            "expected_goals": 0.2191,
            "goal_rate": 0.3396,
            "goals": 0,
            "shots_on_target": 1,
            "expected_assists": 0.0303,
            "key_pass": 1,
            "rating": 7.1614,
            "minutes": 52,
            "total_pass": 7,
            "accurate_pass": 4,
            "duels_won": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 17,
            "possession_lost": 7.9181,
            "dispossessed": 1.5836,
            "duels_lost": 6,
            "aerial_lost": 2,
            "total_contest": 2,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 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": 7,
            "total_progression": 36,
            "progressive_carries": 3,
            "total_shots": 2,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.4,
            "aerial_won": 2,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.248,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Milan van Ewijk, Bobby Thomas",
            "opponent_faced": "Milan van Ewijk, Bobby Thomas",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.2328,
            "projected_assists": 0,
            "assist_probability": 0.0978,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363639.0,
              "match_date": "2026-09-12 14:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Aston Villa",
              "away_team": "Forest",
              "home_score_current": 1.0,
              "away_score_current": 2.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Forest",
              "opponent": "Aston Villa",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 74,
                "rating": 6.6,
                "assists": 0,
                "expected_goals": 0.0627,
                "expected_assists": 0.0583,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 6,
                "key_pass": 2,
                "clearances": 2,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363254.0,
              "match_date": "2026-08-29",
              "home_team": "Liverpool FC",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 24,
                "rating": 6.4,
                "assists": 0,
                "expected_goals": 0.0706,
                "expected_assists": 0.0026,
                "total_shots": 1,
                "total_pass": 4,
                "accurate_pass": 2,
                "key_pass": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3075,
            "combined_rank_score": 1043.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 651.0,
            "sofascore_rating": 6.74,
            "sofascore_appearances": 5.0,
            "fifa_rank": 1435.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "projected_match_rating": 7.1614,
            "source_file": "data/player_rankings.csv",
            "player_name": "Liam Delap",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Karl Darlow",
                  "ranking": 3070
                },
                {
                  "player_name": "Habib Diarra",
                  "ranking": 3071
                },
                {
                  "player_name": "Jaidon Anthony",
                  "ranking": 3072
                },
                {
                  "player_name": "Alex Arce",
                  "ranking": 3073
                },
                {
                  "player_name": "Matías Dituro",
                  "ranking": 3074
                }
              ],
              "lower": [
                {
                  "player_name": "Leopold Querfeld",
                  "ranking": 3076
                },
                {
                  "player_name": "Daizen Maeda",
                  "ranking": 3077
                },
                {
                  "player_name": "Javi Galán",
                  "ranking": 3078
                },
                {
                  "player_name": "Matt O'Riley",
                  "ranking": 3079
                },
                {
                  "player_name": "Joshua King",
                  "ranking": 3080
                }
              ]
            }
          },
          "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",
              "topSpeed",
              "numberOfSprints",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "speed_threat",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 2,
            "data_confidence": 0.375,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0558,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (F_service) evaluated 2 historical appearances across 6 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 6 target models",
              "stats": {
                "expected_goals": 0.1844,
                "goal_rate": 0.3217,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0287,
                "key_pass": 1,
                "rating": 6.7832,
                "minutes": 49,
                "total_pass": 6,
                "accurate_pass": 4,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 6,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 16,
                "possession_lost": 7.5,
                "dispossessed": 1.5,
                "duels_lost": 6,
                "aerial_lost": 2,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 6,
                "total_progression": 34,
                "progressive_carries": 2
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:52.318462+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 278,
                    "rows": 769
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.5405,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Liverpool FC",
                    "minutes": 24.0,
                    "is_starting": false,
                    "weight": 0.4595,
                    "rating": 6.4
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 1.0,
                  "onTargetScoringAttempt": 0.0,
                  "totalShots": 1.0,
                  "minutesPlayed": 51.027,
                  "touches": 16.8649,
                  "dribbleValueNormalized": 0.2314
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.18437564373016357,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "minutesPlayed",
                        "importance": 0.093
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0745
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0545
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.043
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0314
                      }
                    ],
                    "decomposition": {
                      "base": 0.2757,
                      "items": [
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0427
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0299
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0118
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0097
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0087
                        }
                      ],
                      "others": -0.0483,
                      "total": 0.1844
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.32169780135154724,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.1
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0371
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0298
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.3455,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.045
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0386
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0237
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0219
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.019
                        }
                      ],
                      "others": 0.0426,
                      "total": 0.3217
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5206905603408813,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0703
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0583
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0486
                      },
                      {
                        "name": "touches",
                        "importance": 0.0401
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 0.6329,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.04
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0357
                        },
                        {
                          "name": "keyPass",
                          "contribution": -0.0206
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0167
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0104
                        }
                      ],
                      "others": -0.0222,
                      "total": 0.5207
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.028732730075716972,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0802
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0621
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0547
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0537
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0397
                      }
                    ],
                    "decomposition": {
                      "base": 0.0579,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0071
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0049
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0042
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0029
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0027
                        }
                      ],
                      "others": -0.0074,
                      "total": 0.0287
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.6634101271629333,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0738
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0657
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0615
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0458
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0313
                      }
                    ],
                    "decomposition": {
                      "base": 0.6829,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.1505
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0683
                        },
                        {
                          "name": "totalProgression",
                          "contribution": 0.027
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0214
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0204
                        }
                      ],
                      "others": -0.0869,
                      "total": 0.6634
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.783230781555176,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "speed_threat",
                        "importance": 0.0598
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0489
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0439
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0425
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0404
                      }
                    ],
                    "decomposition": {
                      "base": 6.7136,
                      "items": [
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.05
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0432
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0398
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0336
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0306
                        }
                      ],
                      "others": 0.0872,
                      "total": 6.7832
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0558, quality 0.686)",
              "stats": {
                "expected_goals": 0.1947,
                "goal_rate": 0.3396,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0303,
                "key_pass": 1,
                "rating": 7.1614,
                "minutes": 52,
                "total_pass": 7,
                "accurate_pass": 4,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 6,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 17,
                "possession_lost": 7.9181,
                "dispossessed": 1.5836,
                "duels_lost": 6,
                "aerial_lost": 2,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 36,
                "progressive_carries": 3
              },
              "params": {
                "market_value_eur": 26000000,
                "quality_factor": 0.6858,
                "boost_factor": 1.0558
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1947,
                "goal_rate": 0.3396,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0303,
                "key_pass": 1,
                "rating": 7.1614,
                "minutes": 52,
                "total_pass": 7,
                "accurate_pass": 4,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 6,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 17,
                "possession_lost": 7.9181,
                "dispossessed": 1.5836,
                "duels_lost": 6,
                "aerial_lost": 2,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 36,
                "progressive_carries": 3
              },
              "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.145,
                "goal_rate": 0.3396,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0303,
                "key_pass": 1,
                "rating": 7.1614,
                "minutes": 52,
                "total_pass": 7,
                "accurate_pass": 4,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 6,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 17,
                "possession_lost": 7.9181,
                "dispossessed": 1.5836,
                "duels_lost": 6,
                "aerial_lost": 2,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 36,
                "progressive_carries": 3,
                "total_shots": 2,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.4,
                "aerial_won": 2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.248,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Milan van Ewijk, Bobby Thomas",
                "opponent_faced": "Milan van Ewijk, Bobby Thomas",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Milan van Ewijk, Bobby Thomas",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.248,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v2",
                  "xg_override": 0.145
                }
              },
              "changes": [
                {
                  "stat": "expectedGoals",
                  "before": 0.1947,
                  "after": 0.145
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "expected_goals": 0.2191,
                "goal_rate": 0.3396,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0303,
                "key_pass": 1,
                "rating": 7.1614,
                "minutes": 52,
                "total_pass": 7,
                "accurate_pass": 4,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 6,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 17,
                "possession_lost": 7.9181,
                "dispossessed": 1.5836,
                "duels_lost": 6,
                "aerial_lost": 2,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 36,
                "progressive_carries": 3,
                "total_shots": 2,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.4,
                "aerial_won": 2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.248,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Milan van Ewijk, Bobby Thomas",
                "opponent_faced": "Milan van Ewijk, Bobby Thomas",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.145,
                  "after": 0.2191
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 7, fifa_overall 77.0)",
              "stats": {
                "expected_goals": 0.2191,
                "goal_rate": 0.3396,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0303,
                "key_pass": 1,
                "rating": 7.1614,
                "minutes": 52,
                "total_pass": 7,
                "accurate_pass": 4,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 6,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 17,
                "possession_lost": 7.9181,
                "dispossessed": 1.5836,
                "duels_lost": 6,
                "aerial_lost": 2,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 36,
                "progressive_carries": 3,
                "total_shots": 2,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.4,
                "aerial_won": 2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.248,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Milan van Ewijk, Bobby Thomas",
                "opponent_faced": "Milan van Ewijk, Bobby Thomas",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 7,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3075,
                "fifa_rank": 1435.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight",
              "stats": {
                "expected_goals": 0.2191,
                "goal_rate": 0.3396,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0303,
                "key_pass": 1,
                "rating": 7.1614,
                "minutes": 52,
                "total_pass": 7,
                "accurate_pass": 4,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 6,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 17,
                "possession_lost": 7.9181,
                "dispossessed": 1.5836,
                "duels_lost": 6,
                "aerial_lost": 2,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 36,
                "progressive_carries": 3,
                "total_shots": 2,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.4,
                "aerial_won": 2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.248,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Milan van Ewijk, Bobby Thomas",
                "opponent_faced": "Milan van Ewijk, Bobby Thomas",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2328,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.2328,
                "scorer_weight": 3.435,
                "squad_weight_total": 14.7543,
                "weight_share": 0.2328,
                "position_multiplier": 1.45
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight",
              "stats": {
                "expected_goals": 0.2191,
                "goal_rate": 0.3396,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0303,
                "key_pass": 1,
                "rating": 7.1614,
                "minutes": 52,
                "total_pass": 7,
                "accurate_pass": 4,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 6,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 17,
                "possession_lost": 7.9181,
                "dispossessed": 1.5836,
                "duels_lost": 6,
                "aerial_lost": 2,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 36,
                "progressive_carries": 3,
                "total_shots": 2,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.4,
                "aerial_won": 2,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.248,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Milan van Ewijk, Bobby Thomas",
                "opponent_faced": "Milan van Ewijk, Bobby Thomas",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.2328,
                "projected_assists": 0,
                "assist_probability": 0.0978,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0978,
                "provider_weight": 0.6312,
                "squad_weight_total": 6.4555,
                "weight_share": 0.0978,
                "position_multiplier": 0.85
              }
            }
          ]
        },
        "Igor Jesus": {
          "player_id": 981619,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 11,
          "height": 179,
          "market_value": 26000000,
          "stats": {
            "expected_goals": 0.4198,
            "goal_rate": 0.2576,
            "goals": 1,
            "shots_on_target": 1,
            "expected_assists": 0.0323,
            "key_pass": 1,
            "rating": 7.1103,
            "minutes": 74,
            "total_pass": 20,
            "accurate_pass": 15,
            "duels_won": 8,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 10,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 36,
            "possession_lost": 10.2091,
            "dispossessed": 1.7631,
            "duels_lost": 10,
            "aerial_lost": 5,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 2,
            "assists": 0,
            "shots_off_target": 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": 7,
            "total_progression": 20,
            "progressive_carries": 0,
            "total_shots": 2,
            "dribbles_attempted": 4,
            "dribbles_successful": 1.6,
            "aerial_won": 1,
            "crosses_attempted": 2.3,
            "duel_win_rate": 0.448,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "LW vs CB",
            "numerical_situation": "1v1",
            "opponent_defenders": "Milan van Ewijk",
            "opponent_faced": "Milan van Ewijk",
            "antagonist_source": "attacking_duel, defensive_duel",
            "projected_goals": 1,
            "goal_probability": 0.2868,
            "projected_assists": 0,
            "assist_probability": 0.1002,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 31,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.0017,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363254.0,
              "match_date": "2026-08-29",
              "home_team": "Liverpool FC",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 89,
                "rating": 6.5,
                "assists": 0,
                "expected_goals": 0.7361,
                "expected_assists": 0.04,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 29,
                "accurate_pass": 21,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 6,
                "duels_won": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363238.0,
              "match_date": "2026-08-22",
              "home_team": "Nottingham Forest",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assists": 0,
                "expected_goals": 0.2227,
                "expected_assists": 0.0186,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 18,
                "clearances": 2,
                "aerial_won": 10,
                "duels_won": 12,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3083,
            "combined_rank_score": 1050.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 698.0,
            "sofascore_rating": 6.7,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1403.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "projected_match_rating": 7.1103,
            "source_file": "data/player_rankings.csv",
            "player_name": "Igor Jesus",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Javi Galán",
                  "ranking": 3078
                },
                {
                  "player_name": "Matt O'Riley",
                  "ranking": 3079
                },
                {
                  "player_name": "Joshua King",
                  "ranking": 3080
                },
                {
                  "player_name": "Aitor Ruibal",
                  "ranking": 3081
                },
                {
                  "player_name": "Artem Bondarenko",
                  "ranking": 3082
                }
              ],
              "lower": [
                {
                  "player_name": "Luis Rioja",
                  "ranking": 3084
                },
                {
                  "player_name": "Roberto Alvarado",
                  "ranking": 3085
                },
                {
                  "player_name": "Callum Wilson",
                  "ranking": 3086
                },
                {
                  "player_name": "Victor Lindelöf",
                  "ranking": 3087
                },
                {
                  "player_name": "Oscar Bobb",
                  "ranking": 3088
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "topSpeed",
              "numberOfSprints",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "speed_threat",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0558,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (F_service) evaluated 3 historical appearances across 6 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 6 target models",
              "stats": {
                "expected_goals": 0.2534,
                "goal_rate": 0.244,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0306,
                "key_pass": 1,
                "rating": 6.7348,
                "minutes": 70,
                "total_pass": 19,
                "accurate_pass": 15,
                "duels_won": 8,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 13,
                "accurate_opp_half_passes": 9,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 34,
                "possession_lost": 9.67,
                "dispossessed": 1.67,
                "duels_lost": 9,
                "aerial_lost": 4,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 2,
                "assists": 0,
                "shots_off_target": 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": 6,
                "total_progression": 19,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:52.318462+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 278,
                    "rows": 769
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.3887,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Liverpool FC",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "onTargetScoringAttempt": 0.6113,
                  "totalShots": 1.8338,
                  "minutesPlayed": 66.7347,
                  "touches": 32.3615,
                  "dribbleValueNormalized": 0.1249
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.25338026881217957,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "minutesPlayed",
                        "importance": 0.093
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0745
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0545
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.043
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0314
                      }
                    ],
                    "decomposition": {
                      "base": 0.2757,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0267
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": -0.0226
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0163
                        },
                        {
                          "name": "dispossessed",
                          "contribution": 0.0161
                        },
                        {
                          "name": "aerialLost",
                          "contribution": 0.0148
                        }
                      ],
                      "others": -0.041,
                      "total": 0.2534
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.24395032227039337,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.1
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0371
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0298
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.3455,
                      "items": [
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0616
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0266
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0192
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0187
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0175
                        }
                      ],
                      "others": 0.0047,
                      "total": 0.244
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.6186552047729492,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0703
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0583
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0486
                      },
                      {
                        "name": "touches",
                        "importance": 0.0401
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 0.6329,
                      "items": [
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0427
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0221
                        },
                        {
                          "name": "dispossessed",
                          "contribution": 0.0225
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0182
                        },
                        {
                          "name": "duelWon",
                          "contribution": -0.0153
                        }
                      ],
                      "others": 0.0174,
                      "total": 0.6187
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.030617408454418182,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0802
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0621
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0547
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0537
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0397
                      }
                    ],
                    "decomposition": {
                      "base": 0.0579,
                      "items": [
                        {
                          "name": "duelLost",
                          "contribution": -0.006
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0045
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0036
                        },
                        {
                          "name": "aerialLost",
                          "contribution": -0.0024
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0023
                        }
                      ],
                      "others": -0.0085,
                      "total": 0.0306
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.5651687383651733,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0738
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0657
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0615
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0458
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0313
                      }
                    ],
                    "decomposition": {
                      "base": 0.6829,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0837
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0614
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0467
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.041
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0338
                        }
                      ],
                      "others": -0.1005,
                      "total": 0.5652
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.734835624694824,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "speed_threat",
                        "importance": 0.0598
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0489
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0439
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0425
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0404
                      }
                    ],
                    "decomposition": {
                      "base": 6.7136,
                      "items": [
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0483
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0442
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0336
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0245
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": -0.0154
                        }
                      ],
                      "others": 0.0416,
                      "total": 6.7348
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0558, quality 0.686)",
              "stats": {
                "expected_goals": 0.2675,
                "goal_rate": 0.2576,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0323,
                "key_pass": 1,
                "rating": 7.1103,
                "minutes": 74,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 8,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 13,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 36,
                "possession_lost": 10.2091,
                "dispossessed": 1.7631,
                "duels_lost": 10,
                "aerial_lost": 5,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 2,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 20,
                "progressive_carries": 0
              },
              "params": {
                "market_value_eur": 26000000,
                "quality_factor": 0.6858,
                "boost_factor": 1.0558
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.2675,
                "goal_rate": 0.2576,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0323,
                "key_pass": 1,
                "rating": 7.1103,
                "minutes": 74,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 8,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 13,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 36,
                "possession_lost": 10.2091,
                "dispossessed": 1.7631,
                "duels_lost": 10,
                "aerial_lost": 5,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 2,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 20,
                "progressive_carries": 0
              },
              "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.2778,
                "goal_rate": 0.2576,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0323,
                "key_pass": 1,
                "rating": 7.1103,
                "minutes": 74,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 8,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 13,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 36,
                "possession_lost": 10.2091,
                "dispossessed": 1.7631,
                "duels_lost": 10,
                "aerial_lost": 5,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 2,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 20,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 4,
                "dribbles_successful": 1.6,
                "aerial_won": 1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.448,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Milan van Ewijk",
                  "matchup_zone": "LW vs CB",
                  "duel_win_rate": 0.448,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v1",
                  "xg_override": 0.2778
                }
              },
              "changes": [
                {
                  "stat": "expectedGoals",
                  "before": 0.2675,
                  "after": 0.2778
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "expected_goals": 0.4198,
                "goal_rate": 0.2576,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0323,
                "key_pass": 1,
                "rating": 7.1103,
                "minutes": 74,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 8,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 13,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 36,
                "possession_lost": 10.2091,
                "dispossessed": 1.7631,
                "duels_lost": 10,
                "aerial_lost": 5,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 2,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 20,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 4,
                "dribbles_successful": 1.6,
                "aerial_won": 1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.448,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.2778,
                  "after": 0.4198
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 8, fifa_overall 77.0)",
              "stats": {
                "expected_goals": 0.4198,
                "goal_rate": 0.2576,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0323,
                "key_pass": 1,
                "rating": 7.1103,
                "minutes": 74,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 8,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 13,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 36,
                "possession_lost": 10.2091,
                "dispossessed": 1.7631,
                "duels_lost": 10,
                "aerial_lost": 5,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 2,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 20,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 4,
                "dribbles_successful": 1.6,
                "aerial_won": 1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.448,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 8,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3083,
                "fifa_rank": 1403.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight",
              "stats": {
                "expected_goals": 0.4198,
                "goal_rate": 0.2576,
                "goals": 1,
                "shots_on_target": 1,
                "expected_assists": 0.0323,
                "key_pass": 1,
                "rating": 7.1103,
                "minutes": 74,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 8,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 13,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 36,
                "possession_lost": 10.2091,
                "dispossessed": 1.7631,
                "duels_lost": 10,
                "aerial_lost": 5,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 2,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 20,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 4,
                "dribbles_successful": 1.6,
                "aerial_won": 1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.448,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, defensive_duel",
                "projected_goals": 1,
                "goal_probability": 0.2868,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 1,
                "goal_probability": 0.2868,
                "scorer_weight": 4.2318,
                "squad_weight_total": 14.7543,
                "weight_share": 0.2868,
                "position_multiplier": 1.45
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight",
              "stats": {
                "expected_goals": 0.4198,
                "goal_rate": 0.2576,
                "goals": 1,
                "shots_on_target": 1,
                "expected_assists": 0.0323,
                "key_pass": 1,
                "rating": 7.1103,
                "minutes": 74,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 8,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 13,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 36,
                "possession_lost": 10.2091,
                "dispossessed": 1.7631,
                "duels_lost": 10,
                "aerial_lost": 5,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 2,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 20,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 4,
                "dribbles_successful": 1.6,
                "aerial_won": 1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.448,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "LW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, defensive_duel",
                "projected_goals": 1,
                "goal_probability": 0.2868,
                "projected_assists": 0,
                "assist_probability": 0.1002,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.1002,
                "provider_weight": 0.647,
                "squad_weight_total": 6.4555,
                "weight_share": 0.1002,
                "position_multiplier": 0.85
              }
            }
          ]
        },
        "Arnaud Kalimuendo": {
          "player_id": 954061,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 15,
          "height": 175,
          "market_value": 24000000,
          "stats": {
            "expected_goals": 0.2536,
            "goal_rate": 0.2075,
            "goals": 0,
            "shots_on_target": 1,
            "expected_assists": 0.0235,
            "key_pass": 1,
            "rating": 6.708,
            "minutes": 1,
            "total_pass": 0,
            "accurate_pass": 0,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 0,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 0,
            "possession_lost": 0.0,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 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": 0,
            "total_progression": 0,
            "progressive_carries": 0,
            "total_shots": 2,
            "dribbles_attempted": 4,
            "dribbles_successful": 1.5,
            "aerial_won": 1,
            "crosses_attempted": 2.3,
            "duel_win_rate": 0.424,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "RW vs CB",
            "numerical_situation": "1v1",
            "opponent_defenders": "Milan van Ewijk",
            "opponent_faced": "Milan van Ewijk",
            "antagonist_source": "attacking_duel, defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.2116,
            "projected_assists": 0,
            "assist_probability": 0.0934,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16363238.0,
              "match_date": "2026-08-22",
              "home_team": "Nottingham Forest",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 1,
                "assists": 0,
                "total_shots": 0
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3069,
            "combined_rank_score": 1036.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 959.0,
            "sofascore_rating": 6.4,
            "sofascore_appearances": 9.0,
            "fifa_rank": 1113.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "projected_match_rating": 6.708,
            "source_file": "data/player_rankings.csv",
            "player_name": "Arnaud Kalimuendo",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jarell Quansah",
                  "ranking": 3064
                },
                {
                  "player_name": "Axel Disasi",
                  "ranking": 3065
                },
                {
                  "player_name": "Konstantinos Karetsas",
                  "ranking": 3066
                },
                {
                  "player_name": "İlkay Gündoğan",
                  "ranking": 3067
                },
                {
                  "player_name": "Amine Adli",
                  "ranking": 3068
                }
              ],
              "lower": [
                {
                  "player_name": "Karl Darlow",
                  "ranking": 3070
                },
                {
                  "player_name": "Habib Diarra",
                  "ranking": 3071
                },
                {
                  "player_name": "Jaidon Anthony",
                  "ranking": 3072
                },
                {
                  "player_name": "Alex Arce",
                  "ranking": 3073
                },
                {
                  "player_name": "Matías Dituro",
                  "ranking": 3074
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.312,
          "history_matches": 1,
          "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",
              "topSpeed",
              "numberOfSprints",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "speed_threat",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 1,
            "data_confidence": 0.312,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0506,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (F_service) evaluated 1 historical appearances across 6 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 6 target models",
              "stats": {
                "expected_goals": 0.1592,
                "goal_rate": 0.1975,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0224,
                "key_pass": 1,
                "rating": 6.3852,
                "minutes": 1,
                "total_pass": 0,
                "accurate_pass": 0,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 0,
                "possession_lost": 0.0,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:52.318462+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 278,
                    "rows": 769
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Leeds United",
                    "minutes": 1.0,
                    "is_starting": false,
                    "weight": 1.0,
                    "rating": null
                  }
                ],
                "feature_row": {
                  "history_matches": 1.0,
                  "is_starting_11": 1.0,
                  "onTargetScoringAttempt": 0.0,
                  "totalShots": 0.0,
                  "minutesPlayed": 1.0,
                  "touches": 0.0,
                  "dribbleValueNormalized": 0.0
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.15917927026748657,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "minutesPlayed",
                        "importance": 0.093
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0745
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0545
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.043
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0314
                      }
                    ],
                    "decomposition": {
                      "base": 0.2757,
                      "items": [
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0631
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0259
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0176
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0135
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0093
                        }
                      ],
                      "others": -0.0409,
                      "total": 0.1592
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.19746942818164825,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.1
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0371
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0298
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.3455,
                      "items": [
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0756
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0437
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0283
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0233
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0168
                        }
                      ],
                      "others": 0.0061,
                      "total": 0.1975
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5438752174377441,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0703
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0583
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0486
                      },
                      {
                        "name": "touches",
                        "importance": 0.0401
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 0.6329,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0435
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0427
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0316
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0163
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0122
                        }
                      ],
                      "others": -0.0607,
                      "total": 0.5439
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.02241436392068863,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0802
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0621
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0547
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0537
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0397
                      }
                    ],
                    "decomposition": {
                      "base": 0.0579,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0122
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0066
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0055
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.004
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0033
                        }
                      ],
                      "others": -0.0039,
                      "total": 0.0224
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.7582992911338806,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0738
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0657
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0615
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0458
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0313
                      }
                    ],
                    "decomposition": {
                      "base": 0.6829,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2016
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.1034
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0663
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0533
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0334
                        }
                      ],
                      "others": -0.0432,
                      "total": 0.7583
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.385196208953857,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "speed_threat",
                        "importance": 0.0598
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0489
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0439
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0425
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0404
                      }
                    ],
                    "decomposition": {
                      "base": 6.7136,
                      "items": [
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.1763
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.1447
                        },
                        {
                          "name": "topSpeed",
                          "contribution": 0.1443
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.139
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.071
                        }
                      ],
                      "others": -0.0837,
                      "total": 6.3852
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0506, quality 0.669)",
              "stats": {
                "expected_goals": 0.1672,
                "goal_rate": 0.2075,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0235,
                "key_pass": 1,
                "rating": 6.708,
                "minutes": 1,
                "total_pass": 0,
                "accurate_pass": 0,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 0,
                "possession_lost": 0.0,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "params": {
                "market_value_eur": 24000000,
                "quality_factor": 0.6685,
                "boost_factor": 1.0506
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.1672,
                "goal_rate": 0.2075,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0235,
                "key_pass": 1,
                "rating": 6.708,
                "minutes": 1,
                "total_pass": 0,
                "accurate_pass": 0,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 0,
                "possession_lost": 0.0,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "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.1678,
                "goal_rate": 0.2075,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0235,
                "key_pass": 1,
                "rating": 6.708,
                "minutes": 1,
                "total_pass": 0,
                "accurate_pass": 0,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 0,
                "possession_lost": 0.0,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 4,
                "dribbles_successful": 1.5,
                "aerial_won": 1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.424,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "RW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Milan van Ewijk",
                  "matchup_zone": "RW vs CB",
                  "duel_win_rate": 0.424,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v1",
                  "xg_override": 0.1678
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "expected_goals": 0.2536,
                "goal_rate": 0.2075,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0235,
                "key_pass": 1,
                "rating": 6.708,
                "minutes": 1,
                "total_pass": 0,
                "accurate_pass": 0,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 0,
                "possession_lost": 0.0,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 4,
                "dribbles_successful": 1.5,
                "aerial_won": 1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.424,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "RW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1678,
                  "after": 0.2536
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 10, fifa_overall 78.0)",
              "stats": {
                "expected_goals": 0.2536,
                "goal_rate": 0.2075,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0235,
                "key_pass": 1,
                "rating": 6.708,
                "minutes": 1,
                "total_pass": 0,
                "accurate_pass": 0,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 0,
                "possession_lost": 0.0,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 4,
                "dribbles_successful": 1.5,
                "aerial_won": 1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.424,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "RW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 78.0
              },
              "params": {
                "match_squad_rank": 10,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3069,
                "fifa_rank": 1113.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 78.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation: 1 projected goals distributed by scorer weight",
              "stats": {
                "expected_goals": 0.2536,
                "goal_rate": 0.2075,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0235,
                "key_pass": 1,
                "rating": 6.708,
                "minutes": 1,
                "total_pass": 0,
                "accurate_pass": 0,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 0,
                "possession_lost": 0.0,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 4,
                "dribbles_successful": 1.5,
                "aerial_won": 1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.424,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "RW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.2116,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_goals": 1,
                "goals_allocated": 0,
                "goal_probability": 0.2116,
                "scorer_weight": 3.1226,
                "squad_weight_total": 14.7543,
                "weight_share": 0.2116,
                "position_multiplier": 1.45
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation: 1 projected assists distributed by provider weight",
              "stats": {
                "expected_goals": 0.2536,
                "goal_rate": 0.2075,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0235,
                "key_pass": 1,
                "rating": 6.708,
                "minutes": 1,
                "total_pass": 0,
                "accurate_pass": 0,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 0,
                "possession_lost": 0.0,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 2,
                "dribbles_attempted": 4,
                "dribbles_successful": 1.5,
                "aerial_won": 1,
                "crosses_attempted": 2.3,
                "duel_win_rate": 0.424,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "RW vs CB",
                "numerical_situation": "1v1",
                "opponent_defenders": "Milan van Ewijk",
                "opponent_faced": "Milan van Ewijk",
                "antagonist_source": "attacking_duel, defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.2116,
                "projected_assists": 0,
                "assist_probability": 0.0934,
                "fifa_overall": 78.0
              },
              "params": {
                "allocation_applied": true,
                "team_assists": 1,
                "assists_allocated": 0,
                "assist_probability": 0.0934,
                "provider_weight": 0.6032,
                "squad_weight_total": 6.4555,
                "weight_share": 0.0934,
                "position_multiplier": 0.85
              }
            }
          ]
        }
      },
      "bench_players": {
        "Matz Sels": {
          "player_id": 78152,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 26,
          "height": 188,
          "market_value": 3700000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0,
            "rating": 6.8593,
            "minutes": 4,
            "total_pass": 1,
            "accurate_pass": 1,
            "duels_won": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "touches": 2,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.0,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.871,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 0,
            "accurate_own_half_passes": 0,
            "bench_appearance_probability": 0.11,
            "bench_expected_minutes": 4.43,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.492,
            "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": 81.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363639.0,
              "match_date": "2026-09-12 14:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Aston Villa",
              "away_team": "Forest",
              "home_score_current": 1.0,
              "away_score_current": 2.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Forest",
              "opponent": "Aston Villa",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0019,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 14,
                "clearances": 1,
                "ball_recovery": 11
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363254.0,
              "match_date": "2026-08-29",
              "home_team": "Liverpool FC",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_assists": 0.0095,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 13,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 6,
                "saves": 2,
                "goals_prevented": 0.0209
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363238.0,
              "match_date": "2026-08-22",
              "home_team": "Nottingham Forest",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 10,
                "duels_won": 1,
                "ball_recovery": 9,
                "saves": 2,
                "goals_prevented": -0.4672
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1266,
            "combined_rank_score": 550.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 604.0,
            "sofascore_rating": 6.7806,
            "sofascore_appearances": 31.0,
            "fifa_rank": 497.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "projected_match_rating": 6.8593,
            "source_file": "data/player_rankings.csv",
            "player_name": "Matz Sels",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alex Valdés",
                  "ranking": 1261
                },
                {
                  "player_name": "Noh Dong-geon",
                  "ranking": 1262
                },
                {
                  "player_name": "Denilson",
                  "ranking": 1263
                },
                {
                  "player_name": "Séamus Coleman",
                  "ranking": 1264
                },
                {
                  "player_name": "Castello Lukeba",
                  "ranking": 1265
                }
              ],
              "lower": [
                {
                  "player_name": "Nathan Aké",
                  "ranking": 1267
                },
                {
                  "player_name": "Nicolas Raskin",
                  "ranking": 1268
                },
                {
                  "player_name": "Nicolas Jackson",
                  "ranking": 1269
                },
                {
                  "player_name": "Joël Veltman",
                  "ranking": 1270
                },
                {
                  "player_name": "Giorgi Papava",
                  "ranking": 1271
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3,
          "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",
              "kilometersCovered",
              "passValueNormalized",
              "defensiveValueNormalized",
              "goalkeeperValueNormalized",
              "pass_accuracy",
              "long_ball_accuracy",
              "save_contribution",
              "inside_box_save_rate",
              "sweeper_accuracy",
              "sweeper_actions_p90",
              "distribution_accuracy",
              "commanding_index",
              "gk_coverage",
              "history_matches"
            ],
            "targets_predicted": [
              "saves",
              "goalsPrevented",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 4.426629422541287,
            "bench_appearance_prob": 0.11030133738824033,
            "market_value_adjustment": 0.9838,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost G_service (3 historical appearances) to 4.4 expected mins (appearance prob 0.11)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.0,
                "rating": 6.972,
                "minutes": 90,
                "total_pass": 30,
                "accurate_pass": 12,
                "duels_won": 0,
                "total_long_balls": 25,
                "accurate_long_balls": 7,
                "touches": 37,
                "clearances": 0,
                "ball_recovery": 9,
                "high_claims": 0,
                "punches": 0.0,
                "aerial_won": 0,
                "sweeper_actions": 0,
                "sweeper_accurate": 0,
                "saves_inside_box": 0,
                "possession_lost": 18.0,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 7,
                "accurate_own_half_passes": 6
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:40.064367+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 113,
                    "rows": 393
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "sweeper_actions_p90": 0.0,
                  "touches": 36.8076,
                  "totalOwnHalfPasses": 7.1905,
                  "punches": 0.7191,
                  "distribution_accuracy": 0.7031,
                  "accurateKeeperSweeper": 0.0
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 3.3687167167663574,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0587
                      },
                      {
                        "name": "accurateKeeperSweeper",
                        "importance": 0.0534
                      },
                      {
                        "name": "touches",
                        "importance": 0.0497
                      },
                      {
                        "name": "totalOwnHalfPasses",
                        "importance": 0.049
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.043
                      }
                    ],
                    "decomposition": {
                      "base": 2.9806,
                      "items": [
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": 0.3747
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": -0.0993
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": -0.0616
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.0555
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.0417
                        }
                      ],
                      "others": 0.0771,
                      "total": 3.3687
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": 0.0,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.053
                      },
                      {
                        "name": "punches",
                        "importance": 0.051
                      },
                      {
                        "name": "touches",
                        "importance": 0.0482
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.0468
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0432
                      }
                    ],
                    "decomposition": {
                      "base": -0.0536,
                      "items": [
                        {
                          "name": "commanding_index",
                          "contribution": -0.0663
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": -0.0431
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0278
                        },
                        {
                          "name": "inside_box_save_rate",
                          "contribution": -0.0275
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": 0.0259
                        }
                      ],
                      "others": 0.0155,
                      "total": -0.1769
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.971992492675781,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0593
                      },
                      {
                        "name": "touches",
                        "importance": 0.0495
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0484
                      },
                      {
                        "name": "savedShotsFromInsideTheBox",
                        "importance": 0.0468
                      },
                      {
                        "name": "punches",
                        "importance": 0.0464
                      }
                    ],
                    "decomposition": {
                      "base": 7.0716,
                      "items": [
                        {
                          "name": "distribution_accuracy",
                          "contribution": 0.0994
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.0956
                        },
                        {
                          "name": "commanding_index",
                          "contribution": -0.0797
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": -0.0615
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": 0.0238
                        }
                      ],
                      "others": 0.014,
                      "total": 6.972
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9838, quality 0.446)",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.0,
                "rating": 6.8593,
                "minutes": 89,
                "total_pass": 30,
                "accurate_pass": 12,
                "duels_won": 0,
                "total_long_balls": 24,
                "accurate_long_balls": 7,
                "touches": 36,
                "clearances": 0,
                "ball_recovery": 9,
                "high_claims": 0,
                "punches": 0.0,
                "aerial_won": 0,
                "sweeper_actions": 0,
                "sweeper_accurate": 0,
                "saves_inside_box": 0,
                "possession_lost": 17.709,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 7,
                "accurate_own_half_passes": 6
              },
              "params": {
                "market_value_eur": 3700000,
                "quality_factor": 0.4461,
                "boost_factor": 0.9838
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 4.4 expected minutes (appearance prob 0.11)",
              "stats": {
                "saves": 0,
                "goals_prevented": 0.0,
                "rating": 6.8593,
                "minutes": 4,
                "total_pass": 1,
                "accurate_pass": 1,
                "duels_won": 0,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "touches": 2,
                "clearances": 0,
                "ball_recovery": 0,
                "high_claims": 0,
                "punches": 0.0,
                "aerial_won": 0,
                "sweeper_actions": 0,
                "sweeper_accurate": 0,
                "saves_inside_box": 0,
                "possession_lost": 0.871,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 0,
                "accurate_own_half_passes": 0,
                "bench_appearance_probability": 0.11,
                "bench_expected_minutes": 4.43
              },
              "params": {
                "expected_minutes": 4.43,
                "appearance_probability": 0.11
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 0,
                "goals_prevented": 0.0,
                "rating": 6.8593,
                "minutes": 4,
                "total_pass": 1,
                "accurate_pass": 1,
                "duels_won": 0,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "touches": 2,
                "clearances": 0,
                "ball_recovery": 0,
                "high_claims": 0,
                "punches": 0.0,
                "aerial_won": 0,
                "sweeper_actions": 0,
                "sweeper_accurate": 0,
                "saves_inside_box": 0,
                "possession_lost": 0.871,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 0,
                "accurate_own_half_passes": 0,
                "bench_appearance_probability": 0.11,
                "bench_expected_minutes": 4.43
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 18, fifa_overall 81.0)",
              "stats": {
                "saves": 0,
                "goals_prevented": 0.0,
                "rating": 6.8593,
                "minutes": 4,
                "total_pass": 1,
                "accurate_pass": 1,
                "duels_won": 0,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "touches": 2,
                "clearances": 0,
                "ball_recovery": 0,
                "high_claims": 0,
                "punches": 0.0,
                "aerial_won": 0,
                "sweeper_actions": 0,
                "sweeper_accurate": 0,
                "saves_inside_box": 0,
                "possession_lost": 0.871,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 0,
                "accurate_own_half_passes": 0,
                "bench_appearance_probability": 0.11,
                "bench_expected_minutes": 4.43,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.492,
                "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": 81.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1266,
                "fifa_rank": 497.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 81.0
              }
            }
          ]
        },
        "Ola Aina": {
          "player_id": 800417,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 34,
          "height": 182,
          "market_value": 16399999,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 6.6932,
            "minutes": 14,
            "total_pass": 4,
            "accurate_pass": 3,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 3.2432,
            "dispossessed": 1.0283,
            "duels_lost": 1,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0308,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 4,
            "progressive_carries": 0,
            "key_pass": 0,
            "bench_appearance_probability": 0.327,
            "bench_expected_minutes": 14.19,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.492,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 59,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.0023,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 10,
                "tackles": 5,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363254.0,
              "match_date": "2026-08-29",
              "home_team": "Liverpool FC",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 86,
                "rating": 7.1,
                "assists": 0,
                "expected_assists": 0.3884,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 20,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363238.0,
              "match_date": "2026-08-22",
              "home_team": "Nottingham Forest",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 74,
                "rating": 6.9,
                "assists": 0,
                "expected_goals": 0.0428,
                "expected_assists": 0.1701,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 26,
                "accurate_pass": 17,
                "key_pass": 3,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1443,
            "combined_rank_score": 596.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 336.0,
            "sofascore_rating": 7.0,
            "sofascore_appearances": 2.0,
            "fifa_rank": 857.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "projected_match_rating": 6.6932,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ola Aina",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Gabriel Sara",
                  "ranking": 1438
                },
                {
                  "player_name": "Galeno",
                  "ranking": 1439
                },
                {
                  "player_name": "Nodirkhon Nematkhonov",
                  "ranking": 1440
                },
                {
                  "player_name": "Andrés Zanini",
                  "ranking": 1441
                },
                {
                  "player_name": "Justas Lasickas",
                  "ranking": 1442
                }
              ],
              "lower": [
                {
                  "player_name": "Antonio Nusa",
                  "ranking": 1444
                },
                {
                  "player_name": "Estêvão",
                  "ranking": 1445
                },
                {
                  "player_name": "Shokhrukh Abdurakhmonov",
                  "ranking": 1446
                },
                {
                  "player_name": "Kuvonch Abraev",
                  "ranking": 1447
                },
                {
                  "player_name": "César Dutra",
                  "ranking": 1448
                }
              ]
            }
          },
          "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",
              "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",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 14.193175864797896,
            "bench_appearance_prob": 0.32696253930899527,
            "market_value_adjustment": 1.0283,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost D_service (3 historical appearances) to 14.2 expected mins (appearance prob 0.33)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 6 target models",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "rating": 6.5092,
                "minutes": 73,
                "total_pass": 25,
                "accurate_pass": 16,
                "duels_won": 6,
                "total_long_balls": 5,
                "accurate_long_balls": 0,
                "total_own_half_passes": 12,
                "accurate_own_half_passes": 7,
                "total_opp_half_passes": 13,
                "accurate_opp_half_passes": 9,
                "crosses_total": 3,
                "crosses_accurate": 0,
                "touches": 52,
                "possession_lost": 20.0,
                "dispossessed": 1.0,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.19,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 11,
                "total_progression": 27,
                "progressive_carries": 1,
                "key_pass": 0
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:44.724055+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 374,
                    "rows": 1289
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Liverpool FC",
                    "minutes": 86.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Leeds United",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.9
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "accuratePass": 15.2702,
                  "touches_p90": 62.8488,
                  "possessionLostCtrl": 19.3848,
                  "totalClearance": 1.6113,
                  "aerialWon": 0.9504
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.7126483917236328,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0944
                      },
                      {
                        "name": "duel_win_rate",
                        "importance": 0.0353
                      },
                      {
                        "name": "duelWon_p90",
                        "importance": 0.0341
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0326
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0322
                      }
                    ],
                    "decomposition": {
                      "base": 0.9108,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1889
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0229
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0188
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0144
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0127
                        }
                      ],
                      "others": -0.0527,
                      "total": 0.7126
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.5613144636154175,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0588
                      },
                      {
                        "name": "duelLost",
                        "importance": 0.0461
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0446
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0406
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0401
                      }
                    ],
                    "decomposition": {
                      "base": 1.3553,
                      "items": [
                        {
                          "name": "duelLost",
                          "contribution": 0.1125
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0871
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.063
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0538
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0421
                        }
                      ],
                      "others": -0.0265,
                      "total": 1.5613
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.1165989637374878,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0565
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0432
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0353
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0347
                      },
                      {
                        "name": "wonTackle",
                        "importance": 0.0329
                      }
                    ],
                    "decomposition": {
                      "base": 0.8675,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.238
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1904
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0725
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0782
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0667
                        }
                      ],
                      "others": 0.1175,
                      "total": 1.1166
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.459978699684143,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0506
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0425
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0417
                      },
                      {
                        "name": "tackle_success_rate",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 3.4032,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -1.6604
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.1697
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0824
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.066
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0628
                        }
                      ],
                      "others": -0.0667,
                      "total": 1.46
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.7669944763183594,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0798
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0597
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0439
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0426
                      },
                      {
                        "name": "errorLeadToAShot",
                        "importance": 0.0411
                      }
                    ],
                    "decomposition": {
                      "base": 1.2421,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2877
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0436
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0267
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0205
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0201
                        }
                      ],
                      "others": -0.1175,
                      "total": 0.767
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.509183883666992,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches_p90",
                        "importance": 0.0708
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0705
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0537
                      },
                      {
                        "name": "pass_accuracy",
                        "importance": 0.0518
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 6.6627,
                      "items": [
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0408
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0356
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0322
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0307
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0299
                        }
                      ],
                      "others": -0.0457,
                      "total": 6.5092
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0283, quality 0.594)",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "rating": 6.6932,
                "minutes": 75,
                "total_pass": 26,
                "accurate_pass": 16,
                "duels_won": 6,
                "total_long_balls": 5,
                "accurate_long_balls": 0,
                "total_own_half_passes": 12,
                "accurate_own_half_passes": 7,
                "total_opp_half_passes": 13,
                "accurate_opp_half_passes": 9,
                "crosses_total": 3,
                "crosses_accurate": 0,
                "touches": 53,
                "possession_lost": 20.5654,
                "dispossessed": 1.0283,
                "duels_lost": 6,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.1954,
                "total_shots": 1,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 11,
                "total_progression": 28,
                "progressive_carries": 1,
                "key_pass": 0
              },
              "params": {
                "market_value_eur": 16399999,
                "quality_factor": 0.5942,
                "boost_factor": 1.0283
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 14.2 expected minutes (appearance prob 0.33)",
              "stats": {
                "interceptions": 0,
                "tackles": 0,
                "tackles_won": 0,
                "clearances": 0,
                "aerial_won": 0,
                "rating": 6.6932,
                "minutes": 14,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 1,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "total_own_half_passes": 2,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 8,
                "possession_lost": 3.2432,
                "dispossessed": 1.0283,
                "duels_lost": 1,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 1,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0308,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 2,
                "total_progression": 4,
                "progressive_carries": 0,
                "key_pass": 0,
                "bench_appearance_probability": 0.327,
                "bench_expected_minutes": 14.19
              },
              "params": {
                "expected_minutes": 14.19,
                "appearance_probability": 0.327
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0,
                "tackles": 0,
                "tackles_won": 0,
                "clearances": 0,
                "aerial_won": 0,
                "rating": 6.6932,
                "minutes": 14,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 1,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "total_own_half_passes": 2,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 8,
                "possession_lost": 3.2432,
                "dispossessed": 1.0283,
                "duels_lost": 1,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 1,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0308,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 2,
                "total_progression": 4,
                "progressive_carries": 0,
                "key_pass": 0,
                "bench_appearance_probability": 0.327,
                "bench_expected_minutes": 14.19
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 13, fifa_overall 79.0)",
              "stats": {
                "interceptions": 0,
                "tackles": 0,
                "tackles_won": 0,
                "clearances": 0,
                "aerial_won": 0,
                "rating": 6.6932,
                "minutes": 14,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 1,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "total_own_half_passes": 2,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 8,
                "possession_lost": 3.2432,
                "dispossessed": 1.0283,
                "duels_lost": 1,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 1,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0308,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 2,
                "total_progression": 4,
                "progressive_carries": 0,
                "key_pass": 0,
                "bench_appearance_probability": 0.327,
                "bench_expected_minutes": 14.19,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.492,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 79.0
              },
              "params": {
                "match_squad_rank": 13,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1443,
                "fifa_rank": 857.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 79.0
              }
            }
          ]
        },
        "Jair": {
          "player_id": 1170722,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 23,
          "height": 198,
          "market_value": 15500000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 6.9404,
            "minutes": 14,
            "total_pass": 5,
            "accurate_pass": 4,
            "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": 2,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 1.0757,
            "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,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0016,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 1,
            "total_progression": 6,
            "progressive_carries": 0,
            "key_pass": 0,
            "bench_appearance_probability": 0.325,
            "bench_expected_minutes": 14.16,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.492,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363639.0,
              "match_date": "2026-09-12 14:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Aston Villa",
              "away_team": "Forest",
              "home_score_current": 1.0,
              "away_score_current": 2.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Forest",
              "opponent": "Aston Villa",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assists": 0,
                "expected_goals": 0.0254,
                "expected_assists": 0.0086,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 26,
                "tackles": 2,
                "interceptions": 2,
                "clearances": 8,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363254.0,
              "match_date": "2026-08-29",
              "home_team": "Liverpool FC",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.0047,
                "total_shots": 0,
                "total_pass": 17,
                "accurate_pass": 12,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363238.0,
              "match_date": "2026-08-22",
              "home_team": "Nottingham Forest",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0049,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 38,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 4,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 2047,
            "combined_rank_score": 783.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 784.0,
            "sofascore_rating": 6.6333,
            "sofascore_appearances": 9.0,
            "fifa_rank": 783.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "projected_match_rating": 6.9404,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jair",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jamie Leweling",
                  "ranking": 2042
                },
                {
                  "player_name": "Bento",
                  "ranking": 2043
                },
                {
                  "player_name": "Cristhian Mosquera",
                  "ranking": 2044
                },
                {
                  "player_name": "Otávio",
                  "ranking": 2045
                },
                {
                  "player_name": "Diego Rico",
                  "ranking": 2046
                }
              ],
              "lower": [
                {
                  "player_name": "Dmitri Pletnev",
                  "ranking": 2048
                },
                {
                  "player_name": "Liam Jessop",
                  "ranking": 2049
                },
                {
                  "player_name": "Tohirjon Ashuboyev",
                  "ranking": 2050
                },
                {
                  "player_name": "Javier Méndez",
                  "ranking": 2051
                },
                {
                  "player_name": "Facundo Marín",
                  "ranking": 2052
                }
              ]
            }
          },
          "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",
              "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",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 14.155021941280786,
            "bench_appearance_prob": 0.32522827005821753,
            "market_value_adjustment": 1.0254,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost D_service (3 historical appearances) to 14.2 expected mins (appearance prob 0.33)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 6 target models",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "rating": 6.7686,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 25,
                "duels_won": 5,
                "total_long_balls": 5,
                "accurate_long_balls": 2,
                "total_own_half_passes": 18,
                "accurate_own_half_passes": 16,
                "total_opp_half_passes": 13,
                "accurate_opp_half_passes": 9,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 47,
                "possession_lost": 6.67,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.01,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 8,
                "total_progression": 40,
                "progressive_carries": 1,
                "key_pass": 0
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:44.724055+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 374,
                    "rows": 1289
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 7.4
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Liverpool FC",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "accuratePass": 24.7444,
                  "touches_p90": 46.8027,
                  "possessionLostCtrl": 6.5617,
                  "totalClearance": 6.2157,
                  "aerialWon": 1.1079
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.6507120132446289,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0944
                      },
                      {
                        "name": "duel_win_rate",
                        "importance": 0.0353
                      },
                      {
                        "name": "duelWon_p90",
                        "importance": 0.0341
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0326
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0322
                      }
                    ],
                    "decomposition": {
                      "base": 0.9108,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2523
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0185
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0175
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0134
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.0116
                        }
                      ],
                      "others": -0.0086,
                      "total": 0.6507
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.2354425191879272,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0588
                      },
                      {
                        "name": "duelLost",
                        "importance": 0.0461
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0446
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0406
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0401
                      }
                    ],
                    "decomposition": {
                      "base": 1.3553,
                      "items": [
                        {
                          "name": "duelLost",
                          "contribution": -0.0674
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0536
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0455
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0377
                        },
                        {
                          "name": "totalProgression",
                          "contribution": 0.0354
                        }
                      ],
                      "others": 0.0489,
                      "total": 1.2354
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.5339025855064392,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0565
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0432
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0353
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0347
                      },
                      {
                        "name": "wonTackle",
                        "importance": 0.0329
                      }
                    ],
                    "decomposition": {
                      "base": 0.8675,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1464
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0743
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0564
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": -0.0281
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.0213
                        }
                      ],
                      "others": -0.0071,
                      "total": 0.5339
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.9509249925613403,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0506
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0425
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0417
                      },
                      {
                        "name": "tackle_success_rate",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 3.4032,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -1.8458
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.1051
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.1063
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0713
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0518
                        }
                      ],
                      "others": 0.059,
                      "total": 1.9509
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.9309619069099426,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0798
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0597
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0439
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0426
                      },
                      {
                        "name": "errorLeadToAShot",
                        "importance": 0.0411
                      }
                    ],
                    "decomposition": {
                      "base": 1.2421,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.4014
                        },
                        {
                          "name": "totalClearance",
                          "contribution": 0.0734
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.0375
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0296
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0272
                        }
                      ],
                      "others": -0.0024,
                      "total": 0.931
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.768570899963379,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches_p90",
                        "importance": 0.0708
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0705
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0537
                      },
                      {
                        "name": "pass_accuracy",
                        "importance": 0.0518
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 6.6627,
                      "items": [
                        {
                          "name": "accuratePass",
                          "contribution": 0.0221
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0219
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0201
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": 0.0141
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0136
                        }
                      ],
                      "others": 0.0413,
                      "total": 6.7686
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0254, quality 0.585)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "rating": 6.9404,
                "minutes": 92,
                "total_pass": 31,
                "accurate_pass": 26,
                "duels_won": 5,
                "total_long_balls": 5,
                "accurate_long_balls": 2,
                "total_own_half_passes": 18,
                "accurate_own_half_passes": 16,
                "total_opp_half_passes": 13,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 49,
                "possession_lost": 6.8393,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0103,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 9,
                "total_progression": 41,
                "progressive_carries": 1,
                "key_pass": 0
              },
              "params": {
                "market_value_eur": 15500000,
                "quality_factor": 0.5846,
                "boost_factor": 1.0254
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 14.2 expected minutes (appearance prob 0.33)",
              "stats": {
                "interceptions": 0,
                "tackles": 0,
                "tackles_won": 0,
                "clearances": 0,
                "aerial_won": 0,
                "rating": 6.9404,
                "minutes": 14,
                "total_pass": 5,
                "accurate_pass": 4,
                "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": 2,
                "accurate_opp_half_passes": 2,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 8,
                "possession_lost": 1.0757,
                "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,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 6,
                "progressive_carries": 0,
                "key_pass": 0,
                "bench_appearance_probability": 0.325,
                "bench_expected_minutes": 14.16
              },
              "params": {
                "expected_minutes": 14.16,
                "appearance_probability": 0.325
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0,
                "tackles": 0,
                "tackles_won": 0,
                "clearances": 0,
                "aerial_won": 0,
                "rating": 6.9404,
                "minutes": 14,
                "total_pass": 5,
                "accurate_pass": 4,
                "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": 2,
                "accurate_opp_half_passes": 2,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 8,
                "possession_lost": 1.0757,
                "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,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 6,
                "progressive_carries": 0,
                "key_pass": 0,
                "bench_appearance_probability": 0.325,
                "bench_expected_minutes": 14.16
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 15, fifa_overall 80.0)",
              "stats": {
                "interceptions": 0,
                "tackles": 0,
                "tackles_won": 0,
                "clearances": 0,
                "aerial_won": 0,
                "rating": 6.9404,
                "minutes": 14,
                "total_pass": 5,
                "accurate_pass": 4,
                "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": 2,
                "accurate_opp_half_passes": 2,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 8,
                "possession_lost": 1.0757,
                "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,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 6,
                "progressive_carries": 0,
                "key_pass": 0,
                "bench_appearance_probability": 0.325,
                "bench_expected_minutes": 14.16,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.492,
                "projected_substitution_game_state_adjustment": 0,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 80.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv_filled",
                "ranking_status": "combined",
                "global_player_rank": 2047,
                "fifa_rank": 783.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 80.0
              }
            }
          ]
        },
        "Daniel Muñoz": {
          "player_id": 870360,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 2,
          "height": 183,
          "market_value": 23000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0174,
            "assists": 0,
            "expected_goals": 0.0252,
            "rating": 7.0272,
            "minutes": 23,
            "total_pass": 5,
            "accurate_pass": 4,
            "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": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 1.8624,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 3,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.539,
            "bench_expected_minutes": 22.85,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.492,
            "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,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363639.0,
              "match_date": "2026-09-12 14:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Aston Villa",
              "away_team": "Forest",
              "home_score_current": 1.0,
              "away_score_current": 2.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Forest",
              "opponent": "Aston Villa",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 31,
                "rating": 6.7,
                "assists": 0,
                "expected_goals": 0.0341,
                "expected_assists": 0.0026,
                "total_shots": 1,
                "total_pass": 6,
                "accurate_pass": 5,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635.0,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 55,
                "rating": 5.9,
                "assists": 0,
                "expected_goals": 0.2264,
                "expected_assists": 0.0097,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 31,
                "accurate_pass": 25,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 604,
            "combined_rank_score": 311.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 247.0,
            "sofascore_rating": 7.12,
            "sofascore_appearances": 5.0,
            "fifa_rank": 376.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "substitute",
            "projected_match_rating": 7.0272,
            "source_file": "data/player_rankings.csv",
            "player_name": "Daniel Muñoz",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Pavel Zabelin",
                  "ranking": 599
                },
                {
                  "player_name": "Álex Berenguer",
                  "ranking": 600
                },
                {
                  "player_name": "Nonato",
                  "ranking": 601
                },
                {
                  "player_name": "Charles De Ketelaere",
                  "ranking": 602
                },
                {
                  "player_name": "Andrej Kramarić",
                  "ranking": 603
                }
              ],
              "lower": [
                {
                  "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
                }
              ]
            }
          },
          "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",
              "numberOfSprints",
              "kilometersCovered",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "intensity_index",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "rating"
            ],
            "history_matches": 2,
            "data_confidence": 0.375,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.85166323111848,
            "bench_appearance_prob": 0.53871196505084,
            "market_value_adjustment": 1.0479,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (2 historical appearances) to 22.9 expected mins (appearance prob 0.54)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 5 target models",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0654,
                "assists": 0,
                "expected_goals": 0.0627,
                "rating": 6.7063,
                "minutes": 43,
                "total_pass": 18,
                "accurate_pass": 15,
                "duels_won": 2,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 9,
                "accurate_own_half_passes": 8,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 6,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 32,
                "possession_lost": 7.0,
                "dispossessed": 0.0,
                "duels_lost": 2,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 8,
                "total_progression": 13,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:48.236605+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 461,
                    "rows": 1422
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.5405,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 55.0,
                    "is_starting": true,
                    "weight": 0.4595,
                    "rating": 5.9
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 0.0,
                  "ballRecovery_p90": 0.7518,
                  "ballRecovery": 0.4595,
                  "intensity_index": 5.1291,
                  "expectedAssists": 0.0059,
                  "kilometersCovered": 5.4304
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.677560567855835,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0551
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0489
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0393
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.035
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 0.9691,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1639
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0509
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0392
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0357
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0162
                        }
                      ],
                      "others": -0.064,
                      "total": 0.6776
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0654284805059433,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "cross_creative_contribution",
                        "importance": 0.0714
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0375
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0356
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0345
                      }
                    ],
                    "decomposition": {
                      "base": 0.0929,
                      "items": [
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0114
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0081
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0068
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0068
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0054
                        }
                      ],
                      "others": -0.0254,
                      "total": 0.0654
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.0765165388584137,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0378
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0368
                      },
                      {
                        "name": "cross_accuracy",
                        "importance": 0.036
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0315
                      }
                    ],
                    "decomposition": {
                      "base": 0.0956,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0063
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0055
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0041
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0035
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0031
                        }
                      ],
                      "others": -0.0036,
                      "total": 0.0765
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06267573684453964,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.077
                      },
                      {
                        "name": "intensity_index",
                        "importance": 0.0622
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0454
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0399
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0384
                      }
                    ],
                    "decomposition": {
                      "base": 0.1087,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0207
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0201
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0149
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": -0.0086
                        },
                        {
                          "name": "intensity_index",
                          "contribution": -0.0074
                        }
                      ],
                      "others": -0.0145,
                      "total": 0.0627
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.706300735473633,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "ballRecovery_p90",
                        "importance": 0.0847
                      },
                      {
                        "name": "ballRecovery",
                        "importance": 0.0836
                      },
                      {
                        "name": "kilometersCovered",
                        "importance": 0.0597
                      },
                      {
                        "name": "defensive_midfield_actions",
                        "importance": 0.05
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0441
                      }
                    ],
                    "decomposition": {
                      "base": 6.8318,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0518
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0408
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0309
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.019
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0159
                        }
                      ],
                      "others": -0.0607,
                      "total": 6.7063
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0479, quality 0.660)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0686,
                "assists": 0,
                "expected_goals": 0.0657,
                "rating": 7.0272,
                "minutes": 45,
                "total_pass": 19,
                "accurate_pass": 16,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 9,
                "accurate_own_half_passes": 9,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 7,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 34,
                "possession_lost": 7.335,
                "dispossessed": 0.0,
                "duels_lost": 2,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 9,
                "total_progression": 14,
                "progressive_carries": 1
              },
              "params": {
                "market_value_eur": 23000000,
                "quality_factor": 0.6595,
                "boost_factor": 1.0479
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 22.9 expected minutes (appearance prob 0.54)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0174,
                "assists": 0,
                "expected_goals": 0.0167,
                "rating": 7.0272,
                "minutes": 23,
                "total_pass": 5,
                "accurate_pass": 4,
                "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": 3,
                "accurate_opp_half_passes": 2,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 1.8624,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 2,
                "total_progression": 3,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 22.85
              },
              "params": {
                "expected_minutes": 22.85,
                "appearance_probability": 0.539
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0174,
                "assists": 0,
                "expected_goals": 0.0167,
                "rating": 7.0272,
                "minutes": 23,
                "total_pass": 5,
                "accurate_pass": 4,
                "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": 3,
                "accurate_opp_half_passes": 2,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 1.8624,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 2,
                "total_progression": 3,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 22.85
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0174,
                "assists": 0,
                "expected_goals": 0.0252,
                "rating": 7.0272,
                "minutes": 23,
                "total_pass": 5,
                "accurate_pass": 4,
                "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": 3,
                "accurate_opp_half_passes": 2,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 1.8624,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 2,
                "total_progression": 3,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 22.85,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.492,
                "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": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0167,
                  "after": 0.0252
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 11, fifa_overall 82.0)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0174,
                "assists": 0,
                "expected_goals": 0.0252,
                "rating": 7.0272,
                "minutes": 23,
                "total_pass": 5,
                "accurate_pass": 4,
                "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": 3,
                "accurate_opp_half_passes": 2,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 1.8624,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 2,
                "total_progression": 3,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 22.85,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.492,
                "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,
                "fifa_overall": 82.0
              },
              "params": {
                "match_squad_rank": 11,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 604,
                "fifa_rank": 376.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 82.0
              }
            }
          ]
        },
        "Ibrahim Sangaré": {
          "player_id": 843754,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 6,
          "height": 191,
          "market_value": 21000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0138,
            "assists": 0,
            "expected_goals": 0.0187,
            "rating": 7.0891,
            "minutes": 23,
            "total_pass": 14,
            "accurate_pass": 11,
            "duels_won": 1,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 8,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 16,
            "possession_lost": 3.1653,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 1,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 5,
            "total_progression": 3,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.535,
            "bench_expected_minutes": 22.78,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.492,
            "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": 16363238.0,
              "match_date": "2026-08-22",
              "home_team": "Nottingham Forest",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assists": 0,
                "expected_goals": 0.026,
                "expected_assists": 0.0084,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 53,
                "accurate_pass": 42,
                "key_pass": 1,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1908,
            "combined_rank_score": 738.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 379.0,
            "sofascore_rating": 6.963,
            "sofascore_appearances": 28.0,
            "fifa_rank": 1097.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "projected_match_rating": 7.0891,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ibrahim Sangaré",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Federico Lanzillotta",
                  "ranking": 1903
                },
                {
                  "player_name": "Dong-su Lee",
                  "ranking": 1904
                },
                {
                  "player_name": "Armand Laurienté",
                  "ranking": 1905
                },
                {
                  "player_name": "Álex Jiménez",
                  "ranking": 1906
                },
                {
                  "player_name": "Carlos Baleba",
                  "ranking": 1907
                }
              ],
              "lower": [
                {
                  "player_name": "Ramy Najjarine",
                  "ranking": 1909
                },
                {
                  "player_name": "Pape Matar Sarr",
                  "ranking": 1910
                },
                {
                  "player_name": "Christian Moreno",
                  "ranking": 1911
                },
                {
                  "player_name": "Juan Fuentes",
                  "ranking": 1912
                },
                {
                  "player_name": "Corey Hollman",
                  "ranking": 1913
                }
              ]
            }
          },
          "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",
              "numberOfSprints",
              "kilometersCovered",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "intensity_index",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "rating"
            ],
            "history_matches": 1,
            "data_confidence": 0.312,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.77746860076133,
            "bench_appearance_prob": 0.5353394818527877,
            "market_value_adjustment": 1.0422,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (1 historical appearances) to 22.8 expected mins (appearance prob 0.54)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 5 target models",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0524,
                "assists": 0,
                "expected_goals": 0.0709,
                "rating": 6.8018,
                "minutes": 90,
                "total_pass": 53,
                "accurate_pass": 42,
                "duels_won": 5,
                "total_long_balls": 7,
                "accurate_long_balls": 3,
                "total_own_half_passes": 31,
                "accurate_own_half_passes": 28,
                "total_opp_half_passes": 22,
                "accurate_opp_half_passes": 14,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 61,
                "possession_lost": 12.0,
                "dispossessed": 0.0,
                "duels_lost": 2,
                "aerial_won": 3,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 1,
                "won_contest": 1,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "blocks": 3,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 18,
                "total_progression": 13,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:48.236605+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 461,
                    "rows": 1422
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Leeds United",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 1.0,
                    "rating": 6.8
                  }
                ],
                "feature_row": {
                  "history_matches": 1.0,
                  "is_starting_11": 0.0,
                  "ballRecovery_p90": 3.0,
                  "ballRecovery": 3.0,
                  "intensity_index": 5.7898,
                  "expectedAssists": 0.0084,
                  "kilometersCovered": 10.9658
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.7209751009941101,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0551
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0489
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0393
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.035
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 0.9691,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1807
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0481
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0381
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0246
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0159
                        }
                      ],
                      "others": -0.0487,
                      "total": 0.721
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.05237741395831108,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "cross_creative_contribution",
                        "importance": 0.0714
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0375
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0356
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0345
                      }
                    ],
                    "decomposition": {
                      "base": 0.0929,
                      "items": [
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0201
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0094
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0049
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0044
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0033
                        }
                      ],
                      "others": 0.0016,
                      "total": 0.0524
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.08046639710664749,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0378
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0368
                      },
                      {
                        "name": "cross_accuracy",
                        "importance": 0.036
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0315
                      }
                    ],
                    "decomposition": {
                      "base": 0.0956,
                      "items": [
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0053
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0045
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": -0.0027
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": 0.0025
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0021
                        }
                      ],
                      "others": -0.0072,
                      "total": 0.0805
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07087086141109467,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.077
                      },
                      {
                        "name": "intensity_index",
                        "importance": 0.0622
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0454
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0399
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0384
                      }
                    ],
                    "decomposition": {
                      "base": 0.1087,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0216
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.012
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0064
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.005
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0037
                        }
                      ],
                      "others": -0.0019,
                      "total": 0.0709
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.801802635192871,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "ballRecovery_p90",
                        "importance": 0.0847
                      },
                      {
                        "name": "ballRecovery",
                        "importance": 0.0836
                      },
                      {
                        "name": "kilometersCovered",
                        "importance": 0.0597
                      },
                      {
                        "name": "defensive_midfield_actions",
                        "importance": 0.05
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0441
                      }
                    ],
                    "decomposition": {
                      "base": 6.8318,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0478
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0247
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.021
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0153
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0101
                        }
                      ],
                      "others": 0.0381,
                      "total": 6.8018
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0422, quality 0.641)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0546,
                "assists": 0,
                "expected_goals": 0.0739,
                "rating": 7.0891,
                "minutes": 94,
                "total_pass": 55,
                "accurate_pass": 44,
                "duels_won": 5,
                "total_long_balls": 7,
                "accurate_long_balls": 3,
                "total_own_half_passes": 32,
                "accurate_own_half_passes": 29,
                "total_opp_half_passes": 23,
                "accurate_opp_half_passes": 15,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 64,
                "possession_lost": 12.5068,
                "dispossessed": 0.0,
                "duels_lost": 2,
                "aerial_won": 3,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 1,
                "won_contest": 1,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 1,
                "blocks": 3,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 19,
                "total_progression": 14,
                "progressive_carries": 0
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.0422
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 22.8 expected minutes (appearance prob 0.54)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0138,
                "assists": 0,
                "expected_goals": 0.0187,
                "rating": 7.0891,
                "minutes": 23,
                "total_pass": 14,
                "accurate_pass": 11,
                "duels_won": 1,
                "total_long_balls": 2,
                "accurate_long_balls": 1,
                "total_own_half_passes": 8,
                "accurate_own_half_passes": 7,
                "total_opp_half_passes": 6,
                "accurate_opp_half_passes": 4,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 16,
                "possession_lost": 3.1653,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 1,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 5,
                "total_progression": 3,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78
              },
              "params": {
                "expected_minutes": 22.78,
                "appearance_probability": 0.535
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0138,
                "assists": 0,
                "expected_goals": 0.0187,
                "rating": 7.0891,
                "minutes": 23,
                "total_pass": 14,
                "accurate_pass": 11,
                "duels_won": 1,
                "total_long_balls": 2,
                "accurate_long_balls": 1,
                "total_own_half_passes": 8,
                "accurate_own_half_passes": 7,
                "total_opp_half_passes": 6,
                "accurate_opp_half_passes": 4,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 16,
                "possession_lost": 3.1653,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 1,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 5,
                "total_progression": 3,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 12, fifa_overall 78.0)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0138,
                "assists": 0,
                "expected_goals": 0.0187,
                "rating": 7.0891,
                "minutes": 23,
                "total_pass": 14,
                "accurate_pass": 11,
                "duels_won": 1,
                "total_long_balls": 2,
                "accurate_long_balls": 1,
                "total_own_half_passes": 8,
                "accurate_own_half_passes": 7,
                "total_opp_half_passes": 6,
                "accurate_opp_half_passes": 4,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 16,
                "possession_lost": 3.1653,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 1,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 5,
                "total_progression": 3,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.535,
                "bench_expected_minutes": 22.78,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.492,
                "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",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1908,
                "fifa_rank": 1097.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 78.0
              }
            }
          ]
        },
        "Chris Wood": {
          "player_id": 50480,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 191,
          "market_value": 5200000,
          "stats": {
            "expected_goals": 0.0417,
            "goal_rate": 0.0616,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0063,
            "key_pass": 0,
            "rating": 6.5582,
            "minutes": 25,
            "total_pass": 1,
            "accurate_pass": 1,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 2,
            "possession_lost": 0.4188,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 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": 0,
            "total_progression": 0,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.564,
            "bench_expected_minutes": 25.4,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.492,
            "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,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 16,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 1,
                "aerial_won": 2,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363238.0,
              "match_date": "2026-08-22",
              "home_team": "Nottingham Forest",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 28,
                "rating": 6.5,
                "assists": 0,
                "expected_goals": 0.1196,
                "expected_assists": 0.0083,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 5,
                "accurate_pass": 5,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1642,
            "combined_rank_score": 666.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 836.0,
            "sofascore_rating": 6.5867,
            "sofascore_appearances": 15.0,
            "fifa_rank": 496.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "projected_match_rating": 6.5582,
            "source_file": "data/player_rankings.csv",
            "player_name": "Chris Wood",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Paul Mbong",
                  "ranking": 1637
                },
                {
                  "player_name": "Leonardo Fernández",
                  "ranking": 1638
                },
                {
                  "player_name": "Rasmus Højlund",
                  "ranking": 1639
                },
                {
                  "player_name": "Sabit James Ngor",
                  "ranking": 1640
                },
                {
                  "player_name": "Maximilian Beier",
                  "ranking": 1641
                }
              ],
              "lower": [
                {
                  "player_name": "Andrew Robertson",
                  "ranking": 1643
                },
                {
                  "player_name": "Dango Ouattara",
                  "ranking": 1644
                },
                {
                  "player_name": "Aziz Kholmurodov",
                  "ranking": 1645
                },
                {
                  "player_name": "Uroš Kojić",
                  "ranking": 1646
                },
                {
                  "player_name": "Josh Risdon",
                  "ranking": 1647
                }
              ]
            }
          },
          "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",
              "topSpeed",
              "numberOfSprints",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "speed_threat",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 2,
            "data_confidence": 0.375,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.399959715539993,
            "bench_appearance_prob": 0.5636345325245452,
            "market_value_adjustment": 0.9894,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (2 historical appearances) to 25.4 expected mins (appearance prob 0.56)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 6 target models",
              "stats": {
                "expected_goals": 0.0989,
                "goal_rate": 0.2205,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0228,
                "key_pass": 0,
                "rating": 6.6286,
                "minutes": 22,
                "total_pass": 4,
                "accurate_pass": 3,
                "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": 6,
                "possession_lost": 1.5,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:52.318462+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 278,
                    "rows": 769
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.5405,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Leeds United",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.4595,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 0.0,
                  "onTargetScoringAttempt": 0.0,
                  "totalShots": 0.4595,
                  "minutesPlayed": 21.5135,
                  "touches": 5.7568,
                  "dribbleValueNormalized": 0.023
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.09892291575670242,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "minutesPlayed",
                        "importance": 0.093
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0745
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0545
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.043
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0314
                      }
                    ],
                    "decomposition": {
                      "base": 0.2757,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0574
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0421
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0205
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0198
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0145
                        }
                      ],
                      "others": -0.0621,
                      "total": 0.0989
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.22046172618865967,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.1
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0371
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0298
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.3455,
                      "items": [
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0775
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0418
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0254
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0142
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0139
                        }
                      ],
                      "others": 0.02,
                      "total": 0.2205
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.46787723898887634,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0703
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0583
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0486
                      },
                      {
                        "name": "touches",
                        "importance": 0.0401
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 0.6329,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0468
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0211
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0199
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0174
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0112
                        }
                      ],
                      "others": -0.0486,
                      "total": 0.4679
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.022758938372135162,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0802
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0621
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0547
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0537
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0397
                      }
                    ],
                    "decomposition": {
                      "base": 0.0579,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.01
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0061
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0052
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0037
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0033
                        }
                      ],
                      "others": -0.0068,
                      "total": 0.0228
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.36122381687164307,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0738
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0657
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0615
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0458
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0313
                      }
                    ],
                    "decomposition": {
                      "base": 0.6829,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1763
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0304
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0273
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0207
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0197
                        }
                      ],
                      "others": -0.0867,
                      "total": 0.3612
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.628567218780518,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "speed_threat",
                        "importance": 0.0598
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0489
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0439
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0425
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0404
                      }
                    ],
                    "decomposition": {
                      "base": 6.7136,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0492
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0362
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0358
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0328
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0301
                        }
                      ],
                      "others": 0.0991,
                      "total": 6.6286
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9894, quality 0.465)",
              "stats": {
                "expected_goals": 0.0979,
                "goal_rate": 0.2181,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0225,
                "key_pass": 0,
                "rating": 6.5582,
                "minutes": 22,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 2,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 6,
                "possession_lost": 1.4841,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "params": {
                "market_value_eur": 5200000,
                "quality_factor": 0.4646,
                "boost_factor": 0.9894
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 25.4 expected minutes (appearance prob 0.56)",
              "stats": {
                "expected_goals": 0.0276,
                "goal_rate": 0.0616,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0063,
                "key_pass": 0,
                "rating": 6.5582,
                "minutes": 25,
                "total_pass": 1,
                "accurate_pass": 1,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 0.4188,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.564,
                "bench_expected_minutes": 25.4
              },
              "params": {
                "expected_minutes": 25.4,
                "appearance_probability": 0.564
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0276,
                "goal_rate": 0.0616,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0063,
                "key_pass": 0,
                "rating": 6.5582,
                "minutes": 25,
                "total_pass": 1,
                "accurate_pass": 1,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 0.4188,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.564,
                "bench_expected_minutes": 25.4
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "expected_goals": 0.0417,
                "goal_rate": 0.0616,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0063,
                "key_pass": 0,
                "rating": 6.5582,
                "minutes": 25,
                "total_pass": 1,
                "accurate_pass": 1,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 0.4188,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.564,
                "bench_expected_minutes": 25.4,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.492,
                "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": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0276,
                  "after": 0.0417
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 16, fifa_overall 81.0)",
              "stats": {
                "expected_goals": 0.0417,
                "goal_rate": 0.0616,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0063,
                "key_pass": 0,
                "rating": 6.5582,
                "minutes": 25,
                "total_pass": 1,
                "accurate_pass": 1,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 0.4188,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.564,
                "bench_expected_minutes": 25.4,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.492,
                "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,
                "fifa_overall": 81.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1642,
                "fifa_rank": 496.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 81.0
              }
            }
          ]
        },
        "James McAtee": {
          "player_id": 1003334,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 24,
          "height": 180,
          "market_value": 16200000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0262,
            "assists": 0,
            "expected_goals": 0.0234,
            "rating": 7.0074,
            "minutes": 23,
            "total_pass": 9,
            "accurate_pass": 7,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 13,
            "possession_lost": 3.5252,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 3,
            "total_progression": 8,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.527,
            "bench_expected_minutes": 22.58,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.492,
            "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": 73.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363639.0,
              "match_date": "2026-09-12 14:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Aston Villa",
              "away_team": "Forest",
              "home_score_current": 1.0,
              "away_score_current": 2.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Forest",
              "opponent": "Aston Villa",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assists": 0,
                "expected_goals": 0.1258,
                "expected_assists": 0.2236,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 25,
                "key_pass": 5,
                "tackles": 3,
                "tackles_won": 3,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363254.0,
              "match_date": "2026-08-29",
              "home_team": "Liverpool FC",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Liverpool FC",
              "stats": {
                "minutes": 89,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.2537,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 24,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363238.0,
              "match_date": "2026-08-22",
              "home_team": "Nottingham Forest",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 74,
                "rating": 7.3,
                "assists": 0,
                "expected_assists": 0.156,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 32,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3805,
            "combined_rank_score": 1805.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 336.0,
            "sofascore_rating": 7.0,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3275.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "projected_match_rating": 7.0074,
            "source_file": "data/player_rankings.csv",
            "player_name": "James McAtee",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Carlos Izquierdoz",
                  "ranking": 3800
                },
                {
                  "player_name": "Bartłomiej Drągowski",
                  "ranking": 3801
                },
                {
                  "player_name": "Eliesse Ben Seghir",
                  "ranking": 3802
                },
                {
                  "player_name": "Roony Bardghji",
                  "ranking": 3803
                },
                {
                  "player_name": "Nilson Angulo",
                  "ranking": 3804
                }
              ],
              "lower": [
                {
                  "player_name": "Jens-Lys Cajuste",
                  "ranking": 3806
                },
                {
                  "player_name": "Yáser Asprilla",
                  "ranking": 3807
                },
                {
                  "player_name": "Stephen Eustaquio",
                  "ranking": 3808
                },
                {
                  "player_name": "Darío Osorio",
                  "ranking": 3809
                },
                {
                  "player_name": "Josh Sargent",
                  "ranking": 3810
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "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",
              "numberOfSprints",
              "kilometersCovered",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "intensity_index",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.58475363703508,
            "bench_appearance_prob": 0.5265797107743219,
            "market_value_adjustment": 1.0276,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (3 historical appearances) to 22.6 expected mins (appearance prob 0.53)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 5 target models",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.1015,
                "assists": 0,
                "expected_goals": 0.0906,
                "rating": 6.8189,
                "minutes": 84,
                "total_pass": 35,
                "accurate_pass": 27,
                "duels_won": 6,
                "total_long_balls": 5,
                "accurate_long_balls": 2,
                "total_own_half_passes": 17,
                "accurate_own_half_passes": 13,
                "total_opp_half_passes": 19,
                "accurate_opp_half_passes": 14,
                "crosses_total": 3,
                "crosses_accurate": 0,
                "touches": 52,
                "possession_lost": 13.67,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_won": 2,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 2,
                "tackles": 2,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 2,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 12,
                "total_progression": 32,
                "progressive_carries": 1
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:48.236605+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 461,
                    "rows": 1422
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Liverpool FC",
                    "minutes": 89.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Leeds United",
                    "minutes": 74.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 7.3
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "ballRecovery_p90": 4.9335,
                  "ballRecovery": 4.6113,
                  "intensity_index": 6.897,
                  "expectedAssists": 0.2146,
                  "kilometersCovered": 10.8553
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.0897122621536255,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0551
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0489
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0393
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.035
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 0.9691,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": 0.1266
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1145
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0411
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0299
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0275
                        }
                      ],
                      "others": 0.0698,
                      "total": 1.0897
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.10149703919887543,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "cross_creative_contribution",
                        "importance": 0.0714
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0375
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0356
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0345
                      }
                    ],
                    "decomposition": {
                      "base": 0.0929,
                      "items": [
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.013
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0123
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0073
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0055
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": -0.004
                        }
                      ],
                      "others": 0.0137,
                      "total": 0.1015
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.092626191675663,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0378
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0368
                      },
                      {
                        "name": "cross_accuracy",
                        "importance": 0.036
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0315
                      }
                    ],
                    "decomposition": {
                      "base": 0.0956,
                      "items": [
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0056
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": -0.0038
                        },
                        {
                          "name": "keyPass",
                          "contribution": 0.0037
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0031
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": 0.0026
                        }
                      ],
                      "others": -0.003,
                      "total": 0.0926
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.09062846750020981,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.077
                      },
                      {
                        "name": "intensity_index",
                        "importance": 0.0622
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0454
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0399
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0384
                      }
                    ],
                    "decomposition": {
                      "base": 0.1087,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": 0.0175
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0171
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0122
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0094
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.009
                        }
                      ],
                      "others": -0.0059,
                      "total": 0.0906
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.818944454193115,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "ballRecovery_p90",
                        "importance": 0.0847
                      },
                      {
                        "name": "ballRecovery",
                        "importance": 0.0836
                      },
                      {
                        "name": "kilometersCovered",
                        "importance": 0.0597
                      },
                      {
                        "name": "defensive_midfield_actions",
                        "importance": 0.05
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0441
                      }
                    ],
                    "decomposition": {
                      "base": 6.8318,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.071
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.021
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0175
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0158
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.011
                        }
                      ],
                      "others": -0.0072,
                      "total": 6.8189
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0276, quality 0.592)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.1043,
                "assists": 0,
                "expected_goals": 0.0931,
                "rating": 7.0074,
                "minutes": 87,
                "total_pass": 36,
                "accurate_pass": 28,
                "duels_won": 7,
                "total_long_balls": 5,
                "accurate_long_balls": 2,
                "total_own_half_passes": 17,
                "accurate_own_half_passes": 13,
                "total_opp_half_passes": 19,
                "accurate_opp_half_passes": 14,
                "crosses_total": 3,
                "crosses_accurate": 0,
                "touches": 53,
                "possession_lost": 14.0477,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_won": 2,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 2,
                "tackles": 2,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 2,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 13,
                "total_progression": 33,
                "progressive_carries": 1
              },
              "params": {
                "market_value_eur": 16200000,
                "quality_factor": 0.5921,
                "boost_factor": 1.0276
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 22.6 expected minutes (appearance prob 0.53)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0262,
                "assists": 0,
                "expected_goals": 0.0234,
                "rating": 7.0074,
                "minutes": 23,
                "total_pass": 9,
                "accurate_pass": 7,
                "duels_won": 2,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 3,
                "total_opp_half_passes": 5,
                "accurate_opp_half_passes": 4,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 13,
                "possession_lost": 3.5252,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 3,
                "total_progression": 8,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.527,
                "bench_expected_minutes": 22.58
              },
              "params": {
                "expected_minutes": 22.58,
                "appearance_probability": 0.527
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0262,
                "assists": 0,
                "expected_goals": 0.0234,
                "rating": 7.0074,
                "minutes": 23,
                "total_pass": 9,
                "accurate_pass": 7,
                "duels_won": 2,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 3,
                "total_opp_half_passes": 5,
                "accurate_opp_half_passes": 4,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 13,
                "possession_lost": 3.5252,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 3,
                "total_progression": 8,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.527,
                "bench_expected_minutes": 22.58
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 14, fifa_overall 73.0)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0262,
                "assists": 0,
                "expected_goals": 0.0234,
                "rating": 7.0074,
                "minutes": 23,
                "total_pass": 9,
                "accurate_pass": 7,
                "duels_won": 2,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 3,
                "total_opp_half_passes": 5,
                "accurate_opp_half_passes": 4,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 13,
                "possession_lost": 3.5252,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 3,
                "total_progression": 8,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.527,
                "bench_expected_minutes": 22.58,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.492,
                "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": 73.0
              },
              "params": {
                "match_squad_rank": 14,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3805,
                "fifa_rank": 3275.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 73.0
              }
            }
          ]
        }
      },
      "substitutes": {
        "Chris Wood": {
          "player_id": 50480,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 191,
          "market_value": 5200000,
          "stats": {
            "expected_goals": 0.0417,
            "goal_rate": 0.0616,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0063,
            "key_pass": 0,
            "rating": 6.5582,
            "minutes": 25,
            "total_pass": 1,
            "accurate_pass": 1,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 2,
            "possession_lost": 0.4188,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 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": 0,
            "total_progression": 0,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.564,
            "bench_expected_minutes": 25.4,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.492,
            "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,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 16,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 1,
                "aerial_won": 2,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363238.0,
              "match_date": "2026-08-22",
              "home_team": "Nottingham Forest",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 28,
                "rating": 6.5,
                "assists": 0,
                "expected_goals": 0.1196,
                "expected_assists": 0.0083,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 5,
                "accurate_pass": 5,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1642,
            "combined_rank_score": 666.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 836.0,
            "sofascore_rating": 6.5867,
            "sofascore_appearances": 15.0,
            "fifa_rank": 496.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "projected_match_rating": 6.5582,
            "source_file": "data/player_rankings.csv",
            "player_name": "Chris Wood",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Paul Mbong",
                  "ranking": 1637
                },
                {
                  "player_name": "Leonardo Fernández",
                  "ranking": 1638
                },
                {
                  "player_name": "Rasmus Højlund",
                  "ranking": 1639
                },
                {
                  "player_name": "Sabit James Ngor",
                  "ranking": 1640
                },
                {
                  "player_name": "Maximilian Beier",
                  "ranking": 1641
                }
              ],
              "lower": [
                {
                  "player_name": "Andrew Robertson",
                  "ranking": 1643
                },
                {
                  "player_name": "Dango Ouattara",
                  "ranking": 1644
                },
                {
                  "player_name": "Aziz Kholmurodov",
                  "ranking": 1645
                },
                {
                  "player_name": "Uroš Kojić",
                  "ranking": 1646
                },
                {
                  "player_name": "Josh Risdon",
                  "ranking": 1647
                }
              ]
            }
          },
          "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",
              "topSpeed",
              "numberOfSprints",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "speed_threat",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 2,
            "data_confidence": 0.375,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 25.399959715539993,
            "bench_appearance_prob": 0.5636345325245452,
            "market_value_adjustment": 0.9894,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost F_service (2 historical appearances) to 25.4 expected mins (appearance prob 0.56)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 6 target models",
              "stats": {
                "expected_goals": 0.0989,
                "goal_rate": 0.2205,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0228,
                "key_pass": 0,
                "rating": 6.6286,
                "minutes": 22,
                "total_pass": 4,
                "accurate_pass": 3,
                "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": 6,
                "possession_lost": 1.5,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:52.318462+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 278,
                    "rows": 769
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 16.0,
                    "is_starting": false,
                    "weight": 0.5405,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Leeds United",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.4595,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 0.0,
                  "onTargetScoringAttempt": 0.0,
                  "totalShots": 0.4595,
                  "minutesPlayed": 21.5135,
                  "touches": 5.7568,
                  "dribbleValueNormalized": 0.023
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.09892291575670242,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "minutesPlayed",
                        "importance": 0.093
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0745
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0545
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.043
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0314
                      }
                    ],
                    "decomposition": {
                      "base": 0.2757,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0574
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0421
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0205
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0198
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0145
                        }
                      ],
                      "others": -0.0621,
                      "total": 0.0989
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.22046172618865967,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.1
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0371
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0298
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.3455,
                      "items": [
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0775
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0418
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0254
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0142
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0139
                        }
                      ],
                      "others": 0.02,
                      "total": 0.2205
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.46787723898887634,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0703
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0583
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0486
                      },
                      {
                        "name": "touches",
                        "importance": 0.0401
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 0.6329,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0468
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": -0.0211
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0199
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0174
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0112
                        }
                      ],
                      "others": -0.0486,
                      "total": 0.4679
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.022758938372135162,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0802
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0621
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0547
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0537
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0397
                      }
                    ],
                    "decomposition": {
                      "base": 0.0579,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.01
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0061
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0052
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0037
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0033
                        }
                      ],
                      "others": -0.0068,
                      "total": 0.0228
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.36122381687164307,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0738
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0657
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0615
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0458
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0313
                      }
                    ],
                    "decomposition": {
                      "base": 0.6829,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1763
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0304
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0273
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0207
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0197
                        }
                      ],
                      "others": -0.0867,
                      "total": 0.3612
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.628567218780518,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "speed_threat",
                        "importance": 0.0598
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0489
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0439
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0425
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0404
                      }
                    ],
                    "decomposition": {
                      "base": 6.7136,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0492
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": -0.0362
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0358
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0328
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0301
                        }
                      ],
                      "others": 0.0991,
                      "total": 6.6286
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 0.9894, quality 0.465)",
              "stats": {
                "expected_goals": 0.0979,
                "goal_rate": 0.2181,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0225,
                "key_pass": 0,
                "rating": 6.5582,
                "minutes": 22,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 2,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 6,
                "possession_lost": 1.4841,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "params": {
                "market_value_eur": 5200000,
                "quality_factor": 0.4646,
                "boost_factor": 0.9894
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 25.4 expected minutes (appearance prob 0.56)",
              "stats": {
                "expected_goals": 0.0276,
                "goal_rate": 0.0616,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0063,
                "key_pass": 0,
                "rating": 6.5582,
                "minutes": 25,
                "total_pass": 1,
                "accurate_pass": 1,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 0.4188,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.564,
                "bench_expected_minutes": 25.4
              },
              "params": {
                "expected_minutes": 25.4,
                "appearance_probability": 0.564
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0276,
                "goal_rate": 0.0616,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0063,
                "key_pass": 0,
                "rating": 6.5582,
                "minutes": 25,
                "total_pass": 1,
                "accurate_pass": 1,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 0.4188,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.564,
                "bench_expected_minutes": 25.4
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "expected_goals": 0.0417,
                "goal_rate": 0.0616,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0063,
                "key_pass": 0,
                "rating": 6.5582,
                "minutes": 25,
                "total_pass": 1,
                "accurate_pass": 1,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 0.4188,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.564,
                "bench_expected_minutes": 25.4,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.492,
                "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": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0276,
                  "after": 0.0417
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 16, fifa_overall 81.0)",
              "stats": {
                "expected_goals": 0.0417,
                "goal_rate": 0.0616,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0063,
                "key_pass": 0,
                "rating": 6.5582,
                "minutes": 25,
                "total_pass": 1,
                "accurate_pass": 1,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 2,
                "possession_lost": 0.4188,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.564,
                "bench_expected_minutes": 25.4,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.492,
                "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,
                "fifa_overall": 81.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 1642,
                "fifa_rank": 496.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 81.0
              }
            }
          ]
        },
        "Daniel Muñoz": {
          "player_id": 870360,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 2,
          "height": 183,
          "market_value": 23000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0174,
            "assists": 0,
            "expected_goals": 0.0252,
            "rating": 7.0272,
            "minutes": 23,
            "total_pass": 5,
            "accurate_pass": 4,
            "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": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 1.8624,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 3,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.539,
            "bench_expected_minutes": 22.85,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.492,
            "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,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363639.0,
              "match_date": "2026-09-12 14:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Aston Villa",
              "away_team": "Forest",
              "home_score_current": 1.0,
              "away_score_current": 2.0,
              "team_side": "away",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Forest",
              "opponent": "Aston Villa",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363638.0,
              "match_date": "2026-09-05",
              "home_team": "Nottingham Forest",
              "away_team": "Tottenham Hotspur",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Tottenham Hotspur",
              "stats": {
                "minutes": 31,
                "rating": 6.7,
                "assists": 0,
                "expected_goals": 0.0341,
                "expected_assists": 0.0026,
                "total_shots": 1,
                "total_pass": 6,
                "accurate_pass": 5,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363635.0,
              "match_date": "2026-08-22",
              "home_team": "Everton",
              "away_team": "Crystal Palace",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Crystal Palace",
              "opponent": "Everton",
              "stats": {
                "minutes": 55,
                "rating": 5.9,
                "assists": 0,
                "expected_goals": 0.2264,
                "expected_assists": 0.0097,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 31,
                "accurate_pass": 25,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 604,
            "combined_rank_score": 311.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 247.0,
            "sofascore_rating": 7.12,
            "sofascore_appearances": 5.0,
            "fifa_rank": 376.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "substitute",
            "projected_match_rating": 7.0272,
            "source_file": "data/player_rankings.csv",
            "player_name": "Daniel Muñoz",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Pavel Zabelin",
                  "ranking": 599
                },
                {
                  "player_name": "Álex Berenguer",
                  "ranking": 600
                },
                {
                  "player_name": "Nonato",
                  "ranking": 601
                },
                {
                  "player_name": "Charles De Ketelaere",
                  "ranking": 602
                },
                {
                  "player_name": "Andrej Kramarić",
                  "ranking": 603
                }
              ],
              "lower": [
                {
                  "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
                }
              ]
            }
          },
          "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",
              "numberOfSprints",
              "kilometersCovered",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "intensity_index",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "rating"
            ],
            "history_matches": 2,
            "data_confidence": 0.375,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "bench_expected_minutes": 22.85166323111848,
            "bench_appearance_prob": 0.53871196505084,
            "market_value_adjustment": 1.0479,
            "fbref_prior_metrics": null,
            "rationale": "Bench projection scaled from XGBoost M_service (2 historical appearances) to 22.9 expected mins (appearance prob 0.54)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 5 target models",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0654,
                "assists": 0,
                "expected_goals": 0.0627,
                "rating": 6.7063,
                "minutes": 43,
                "total_pass": 18,
                "accurate_pass": 15,
                "duels_won": 2,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 9,
                "accurate_own_half_passes": 8,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 6,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 32,
                "possession_lost": 7.0,
                "dispossessed": 0.0,
                "duels_lost": 2,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 8,
                "total_progression": 13,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:48.236605+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 461,
                    "rows": 1422
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Tottenham Hotspur",
                    "minutes": 31.0,
                    "is_starting": false,
                    "weight": 0.5405,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-22",
                    "opponent": "Everton",
                    "minutes": 55.0,
                    "is_starting": true,
                    "weight": 0.4595,
                    "rating": 5.9
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 0.0,
                  "ballRecovery_p90": 0.7518,
                  "ballRecovery": 0.4595,
                  "intensity_index": 5.1291,
                  "expectedAssists": 0.0059,
                  "kilometersCovered": 5.4304
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.677560567855835,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0551
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0489
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0393
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.035
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 0.9691,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1639
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0509
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0392
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0357
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0162
                        }
                      ],
                      "others": -0.064,
                      "total": 0.6776
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.0654284805059433,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "cross_creative_contribution",
                        "importance": 0.0714
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0375
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0356
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0345
                      }
                    ],
                    "decomposition": {
                      "base": 0.0929,
                      "items": [
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0114
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0081
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0068
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0068
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0054
                        }
                      ],
                      "others": -0.0254,
                      "total": 0.0654
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.0765165388584137,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0378
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0368
                      },
                      {
                        "name": "cross_accuracy",
                        "importance": 0.036
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0315
                      }
                    ],
                    "decomposition": {
                      "base": 0.0956,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0063
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0055
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0041
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0035
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0031
                        }
                      ],
                      "others": -0.0036,
                      "total": 0.0765
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.06267573684453964,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.077
                      },
                      {
                        "name": "intensity_index",
                        "importance": 0.0622
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0454
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0399
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0384
                      }
                    ],
                    "decomposition": {
                      "base": 0.1087,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0207
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0201
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0149
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": -0.0086
                        },
                        {
                          "name": "intensity_index",
                          "contribution": -0.0074
                        }
                      ],
                      "others": -0.0145,
                      "total": 0.0627
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.706300735473633,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "ballRecovery_p90",
                        "importance": 0.0847
                      },
                      {
                        "name": "ballRecovery",
                        "importance": 0.0836
                      },
                      {
                        "name": "kilometersCovered",
                        "importance": 0.0597
                      },
                      {
                        "name": "defensive_midfield_actions",
                        "importance": 0.05
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0441
                      }
                    ],
                    "decomposition": {
                      "base": 6.8318,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0518
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0408
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0309
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.019
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0159
                        }
                      ],
                      "others": -0.0607,
                      "total": 6.7063
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0479, quality 0.660)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0686,
                "assists": 0,
                "expected_goals": 0.0657,
                "rating": 7.0272,
                "minutes": 45,
                "total_pass": 19,
                "accurate_pass": 16,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 9,
                "accurate_own_half_passes": 9,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 7,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 34,
                "possession_lost": 7.335,
                "dispossessed": 0.0,
                "duels_lost": 2,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 9,
                "total_progression": 14,
                "progressive_carries": 1
              },
              "params": {
                "market_value_eur": 23000000,
                "quality_factor": 0.6595,
                "boost_factor": 1.0479
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 22.9 expected minutes (appearance prob 0.54)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0174,
                "assists": 0,
                "expected_goals": 0.0167,
                "rating": 7.0272,
                "minutes": 23,
                "total_pass": 5,
                "accurate_pass": 4,
                "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": 3,
                "accurate_opp_half_passes": 2,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 1.8624,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 2,
                "total_progression": 3,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 22.85
              },
              "params": {
                "expected_minutes": 22.85,
                "appearance_probability": 0.539
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0174,
                "assists": 0,
                "expected_goals": 0.0167,
                "rating": 7.0272,
                "minutes": 23,
                "total_pass": 5,
                "accurate_pass": 4,
                "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": 3,
                "accurate_opp_half_passes": 2,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 1.8624,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 2,
                "total_progression": 3,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 22.85
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.44 (squad xG sum 0.9556, xG scale 1.5111)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0174,
                "assists": 0,
                "expected_goals": 0.0252,
                "rating": 7.0272,
                "minutes": 23,
                "total_pass": 5,
                "accurate_pass": 4,
                "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": 3,
                "accurate_opp_half_passes": 2,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 1.8624,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 2,
                "total_progression": 3,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 22.85,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.492,
                "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": {
                "team_lambda": 1.444,
                "squad_xg_sum": 0.9556,
                "xg_scale": 1.5111,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0167,
                  "after": 0.0252
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 11, fifa_overall 82.0)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0174,
                "assists": 0,
                "expected_goals": 0.0252,
                "rating": 7.0272,
                "minutes": 23,
                "total_pass": 5,
                "accurate_pass": 4,
                "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": 3,
                "accurate_opp_half_passes": 2,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 1.8624,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 2,
                "total_progression": 3,
                "progressive_carries": 0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 22.85,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 2,
                "projected_substitution_expected_count": 2.492,
                "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,
                "fifa_overall": 82.0
              },
              "params": {
                "match_squad_rank": 11,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 604,
                "fifa_rank": 376.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 82.0
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.44,
        "expected_assists": 0.51,
        "total_shots": 12,
        "shots_on_target": 3,
        "total_passes": 216,
        "interceptions": 4,
        "tackles": 6,
        "avg_rating": 6.99,
        "possession_estimated_pct": 51.7,
        "pressing_actions_per_90": 8.0
      }
    },
    "Coventry": {
      "formation": "3-4-2-1",
      "players": {
        "Carl Rushworth": {
          "player_id": 1005800,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 19,
          "height": 191,
          "market_value": 15500000,
          "stats": {
            "saves": 3,
            "goals_prevented": 0.0,
            "rating": 7.442,
            "minutes": 92,
            "total_pass": 39,
            "accurate_pass": 24,
            "duels_won": 0,
            "total_long_balls": 26,
            "accurate_long_balls": 11,
            "touches": 52,
            "clearances": 1,
            "ball_recovery": 10,
            "high_claims": 3,
            "punches": 0.0,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 16.0677,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 17,
            "accurate_own_half_passes": 15,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "total_shots": 0,
            "shots_on_target": 0,
            "goalsAgainst": 2.0,
            "shotsOnTargetAgainst": 3.5,
            "cleanSheets": 0.0,
            "interceptions": 0,
            "tackles_won": 0,
            "crosses_total": 0,
            "offsides": 0,
            "yellowCards": 0.0,
            "redCards": 0.0,
            "penaltySave": 0.0,
            "ownGoals": 0.0,
            "savePct": 42.9,
            "cleanSheetPct": 0.0,
            "minutesPct": 100.0,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "expected_saves": 1.77,
            "high_pressure_saves": 0.68,
            "shots_faced": 3.8,
            "opponent_faced": "Igor Jesus, Morgan Gibbs-White",
            "matchup_zone": "Goalkeeper shot-stopping context",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363642.0,
              "match_date": "2026-09-13 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Brighton",
              "home_score_current": 0.0,
              "away_score_current": 5.0,
              "team_side": "home",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Coventry",
              "opponent": "Brighton",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363263.0,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assists": 0,
                "expected_assists": 0.0034,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 9,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 9,
                "saves": 2,
                "goals_prevented": 0.4113
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0014,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 31,
                "clearances": 1,
                "ball_recovery": 13,
                "saves": 1,
                "goals_prevented": -0.496
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_assists": 0.0059,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 29,
                "clearances": 1,
                "ball_recovery": 7,
                "saves": 2,
                "goals_prevented": -0.5631
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3329,
            "combined_rank_score": 1282.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 765.0,
            "sofascore_rating": 6.65,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1799.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "projected_match_rating": 7.442,
            "source_file": "data/player_rankings.csv",
            "player_name": "Carl Rushworth",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Williot Swedberg",
                  "ranking": 3324
                },
                {
                  "player_name": "Leandro Cabrera",
                  "ranking": 3325
                },
                {
                  "player_name": "Alejandro Zendejas",
                  "ranking": 3326
                },
                {
                  "player_name": "Sacha Boey",
                  "ranking": 3327
                },
                {
                  "player_name": "Hugo Cuypers",
                  "ranking": 3328
                }
              ],
              "lower": [
                {
                  "player_name": "Juan Brunetta",
                  "ranking": 3330
                },
                {
                  "player_name": "Alexis Vega",
                  "ranking": 3331
                },
                {
                  "player_name": "Gaëtan Laborde",
                  "ranking": 3332
                },
                {
                  "player_name": "Georges-Kévin Nkoudou",
                  "ranking": 3333
                },
                {
                  "player_name": "Oleksandr Zubkov",
                  "ranking": 3334
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.457,
          "history_matches": 3,
          "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",
              "kilometersCovered",
              "passValueNormalized",
              "defensiveValueNormalized",
              "goalkeeperValueNormalized",
              "pass_accuracy",
              "long_ball_accuracy",
              "save_contribution",
              "inside_box_save_rate",
              "sweeper_accuracy",
              "sweeper_actions_p90",
              "distribution_accuracy",
              "commanding_index",
              "gk_coverage",
              "history_matches"
            ],
            "targets_predicted": [
              "saves",
              "goalsPrevented",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.457,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0254,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (G_service) evaluated 3 historical appearances across 3 target models; FBref 2026-2027 prior blended (Premier League, Coventry City, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost G_service raw output over 3 target models",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.0,
                "rating": 7.2577,
                "minutes": 90,
                "total_pass": 38,
                "accurate_pass": 23,
                "duels_won": 0,
                "total_long_balls": 25,
                "accurate_long_balls": 10,
                "touches": 51,
                "clearances": 1,
                "ball_recovery": 10,
                "high_claims": 3,
                "punches": 0.0,
                "aerial_won": 0,
                "sweeper_actions": 0,
                "sweeper_accurate": 0,
                "saves_inside_box": 0,
                "possession_lost": 15.67,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 17,
                "accurate_own_half_passes": 14
              },
              "trace": {
                "model": {
                  "position_service": "G",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:40.064367+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 113,
                    "rows": 393
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 7.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 7.0
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "sweeper_actions_p90": 0.9913,
                  "touches": 50.0049,
                  "totalOwnHalfPasses": 15.9028,
                  "punches": 0.3887,
                  "distribution_accuracy": 0.6738,
                  "accurateKeeperSweeper": 0.9913
                },
                "per_target": [
                  {
                    "target": "saves",
                    "predicted": 2.9091737270355225,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0587
                      },
                      {
                        "name": "accurateKeeperSweeper",
                        "importance": 0.0534
                      },
                      {
                        "name": "touches",
                        "importance": 0.0497
                      },
                      {
                        "name": "totalOwnHalfPasses",
                        "importance": 0.049
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.043
                      }
                    ],
                    "decomposition": {
                      "base": 2.9806,
                      "items": [
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": -0.114
                        },
                        {
                          "name": "totalOwnHalfPasses",
                          "contribution": -0.0633
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0534
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": 0.044
                        },
                        {
                          "name": "goalkeeperValueNormalized",
                          "contribution": -0.0427
                        }
                      ],
                      "others": 0.0512,
                      "total": 2.9092
                    }
                  },
                  {
                    "target": "goalsPrevented",
                    "predicted": 0.0,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.053
                      },
                      {
                        "name": "punches",
                        "importance": 0.051
                      },
                      {
                        "name": "touches",
                        "importance": 0.0482
                      },
                      {
                        "name": "accurateLongBalls",
                        "importance": 0.0468
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0432
                      }
                    ],
                    "decomposition": {
                      "base": -0.0536,
                      "items": [
                        {
                          "name": "commanding_index",
                          "contribution": 0.1309
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": -0.0566
                        },
                        {
                          "name": "touches",
                          "contribution": 0.039
                        },
                        {
                          "name": "accurateLongBalls",
                          "contribution": 0.0358
                        },
                        {
                          "name": "totalPass",
                          "contribution": 0.0266
                        }
                      ],
                      "others": -0.1392,
                      "total": -0.0171
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 7.25774621963501,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "sweeper_actions_p90",
                        "importance": 0.0593
                      },
                      {
                        "name": "touches",
                        "importance": 0.0495
                      },
                      {
                        "name": "distribution_accuracy",
                        "importance": 0.0484
                      },
                      {
                        "name": "savedShotsFromInsideTheBox",
                        "importance": 0.0468
                      },
                      {
                        "name": "punches",
                        "importance": 0.0464
                      }
                    ],
                    "decomposition": {
                      "base": 7.0716,
                      "items": [
                        {
                          "name": "commanding_index",
                          "contribution": 0.122
                        },
                        {
                          "name": "distribution_accuracy",
                          "contribution": 0.1178
                        },
                        {
                          "name": "sweeper_actions_p90",
                          "contribution": -0.0745
                        },
                        {
                          "name": "touches",
                          "contribution": 0.0465
                        },
                        {
                          "name": "inside_box_save_rate",
                          "contribution": -0.0357
                        }
                      ],
                      "others": 0.01,
                      "total": 7.2577
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0254, quality 0.585)",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.0,
                "rating": 7.442,
                "minutes": 92,
                "total_pass": 39,
                "accurate_pass": 24,
                "duels_won": 0,
                "total_long_balls": 26,
                "accurate_long_balls": 11,
                "touches": 52,
                "clearances": 1,
                "ball_recovery": 10,
                "high_claims": 3,
                "punches": 0.0,
                "aerial_won": 0,
                "sweeper_actions": 0,
                "sweeper_accurate": 0,
                "saves_inside_box": 0,
                "possession_lost": 16.0677,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 17,
                "accurate_own_half_passes": 15
              },
              "params": {
                "market_value_eur": 15500000,
                "quality_factor": 0.5846,
                "boost_factor": 1.0254
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0542)",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.0,
                "rating": 7.442,
                "minutes": 92,
                "total_pass": 39,
                "accurate_pass": 24,
                "duels_won": 0,
                "total_long_balls": 26,
                "accurate_long_balls": 11,
                "touches": 52,
                "clearances": 1,
                "ball_recovery": 10,
                "high_claims": 3,
                "punches": 0.0,
                "aerial_won": 0,
                "sweeper_actions": 0,
                "sweeper_accurate": 0,
                "saves_inside_box": 0,
                "possession_lost": 16.0677,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 17,
                "accurate_own_half_passes": 15,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "total_shots": 0,
                "shots_on_target": 0,
                "goalsAgainst": 2.0,
                "shotsOnTargetAgainst": 3.5,
                "cleanSheets": 0.0,
                "interceptions": 0,
                "tackles_won": 0,
                "crosses_total": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "penaltySave": 0.0,
                "ownGoals": 0.0,
                "savePct": 42.9,
                "cleanSheetPct": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": -2.0
              },
              "params": {
                "blend_weight": 0.0542,
                "history_matches": 3,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "saves",
                  "before": 2.983,
                  "after": 2.9027
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.0,
                "rating": 7.442,
                "minutes": 92,
                "total_pass": 39,
                "accurate_pass": 24,
                "duels_won": 0,
                "total_long_balls": 26,
                "accurate_long_balls": 11,
                "touches": 52,
                "clearances": 1,
                "ball_recovery": 10,
                "high_claims": 3,
                "punches": 0.0,
                "aerial_won": 0,
                "sweeper_actions": 0,
                "sweeper_accurate": 0,
                "saves_inside_box": 0,
                "possession_lost": 16.0677,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 17,
                "accurate_own_half_passes": 15,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "total_shots": 0,
                "shots_on_target": 0,
                "goalsAgainst": 2.0,
                "shotsOnTargetAgainst": 3.5,
                "cleanSheets": 0.0,
                "interceptions": 0,
                "tackles_won": 0,
                "crosses_total": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "penaltySave": 0.0,
                "ownGoals": 0.0,
                "savePct": 42.9,
                "cleanSheetPct": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "enriched_model_output",
              "description": "Model output after duel-context enrichment (pre router post-processing)",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.0,
                "rating": 7.442,
                "minutes": 92,
                "total_pass": 39,
                "accurate_pass": 24,
                "duels_won": 0,
                "total_long_balls": 26,
                "accurate_long_balls": 11,
                "touches": 52,
                "clearances": 1,
                "ball_recovery": 10,
                "high_claims": 3,
                "punches": 0.0,
                "aerial_won": 0,
                "sweeper_actions": 0,
                "sweeper_accurate": 0,
                "saves_inside_box": 0,
                "possession_lost": 16.0677,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 17,
                "accurate_own_half_passes": 15,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "total_shots": 0,
                "shots_on_target": 0,
                "goalsAgainst": 2.0,
                "shotsOnTargetAgainst": 3.5,
                "cleanSheets": 0.0,
                "interceptions": 0,
                "tackles_won": 0,
                "crosses_total": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "penaltySave": 0.0,
                "ownGoals": 0.0,
                "savePct": 42.9,
                "cleanSheetPct": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "expected_saves": 1.77,
                "high_pressure_saves": 0.68,
                "shots_faced": 3.8,
                "opponent_faced": "Igor Jesus, Morgan Gibbs-White",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Igor Jesus, Morgan Gibbs-White",
                  "matchup_zone": "Goalkeeper shot-stopping context"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.0,
                "rating": 7.442,
                "minutes": 92,
                "total_pass": 39,
                "accurate_pass": 24,
                "duels_won": 0,
                "total_long_balls": 26,
                "accurate_long_balls": 11,
                "touches": 52,
                "clearances": 1,
                "ball_recovery": 10,
                "high_claims": 3,
                "punches": 0.0,
                "aerial_won": 0,
                "sweeper_actions": 0,
                "sweeper_accurate": 0,
                "saves_inside_box": 0,
                "possession_lost": 16.0677,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 17,
                "accurate_own_half_passes": 15,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "total_shots": 0,
                "shots_on_target": 0,
                "goalsAgainst": 2.0,
                "shotsOnTargetAgainst": 3.5,
                "cleanSheets": 0.0,
                "interceptions": 0,
                "tackles_won": 0,
                "crosses_total": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "penaltySave": 0.0,
                "ownGoals": 0.0,
                "savePct": 42.9,
                "cleanSheetPct": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "expected_saves": 1.77,
                "high_pressure_saves": 0.68,
                "shots_faced": 3.8,
                "opponent_faced": "Igor Jesus, Morgan Gibbs-White",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 10, fifa_overall 76.0)",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.0,
                "rating": 7.442,
                "minutes": 92,
                "total_pass": 39,
                "accurate_pass": 24,
                "duels_won": 0,
                "total_long_balls": 26,
                "accurate_long_balls": 11,
                "touches": 52,
                "clearances": 1,
                "ball_recovery": 10,
                "high_claims": 3,
                "punches": 0.0,
                "aerial_won": 0,
                "sweeper_actions": 0,
                "sweeper_accurate": 0,
                "saves_inside_box": 0,
                "possession_lost": 16.0677,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 17,
                "accurate_own_half_passes": 15,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "total_shots": 0,
                "shots_on_target": 0,
                "goalsAgainst": 2.0,
                "shotsOnTargetAgainst": 3.5,
                "cleanSheets": 0.0,
                "interceptions": 0,
                "tackles_won": 0,
                "crosses_total": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "penaltySave": 0.0,
                "ownGoals": 0.0,
                "savePct": 42.9,
                "cleanSheetPct": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "expected_saves": 1.77,
                "high_pressure_saves": 0.68,
                "shots_faced": 3.8,
                "opponent_faced": "Igor Jesus, Morgan Gibbs-White",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 76.0
              },
              "params": {
                "match_squad_rank": 10,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3329,
                "fifa_rank": 1799.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 76.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.0,
                "rating": 7.442,
                "minutes": 92,
                "total_pass": 39,
                "accurate_pass": 24,
                "duels_won": 0,
                "total_long_balls": 26,
                "accurate_long_balls": 11,
                "touches": 52,
                "clearances": 1,
                "ball_recovery": 10,
                "high_claims": 3,
                "punches": 0.0,
                "aerial_won": 0,
                "sweeper_actions": 0,
                "sweeper_accurate": 0,
                "saves_inside_box": 0,
                "possession_lost": 16.0677,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 17,
                "accurate_own_half_passes": 15,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "total_shots": 0,
                "shots_on_target": 0,
                "goalsAgainst": 2.0,
                "shotsOnTargetAgainst": 3.5,
                "cleanSheets": 0.0,
                "interceptions": 0,
                "tackles_won": 0,
                "crosses_total": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "penaltySave": 0.0,
                "ownGoals": 0.0,
                "savePct": 42.9,
                "cleanSheetPct": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "expected_saves": 1.77,
                "high_pressure_saves": 0.68,
                "shots_faced": 3.8,
                "opponent_faced": "Igor Jesus, Morgan Gibbs-White",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.0,
                "squad_weight_total": 14.1256,
                "weight_share": 0.0,
                "position_multiplier": 0.0
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.0,
                "rating": 7.442,
                "minutes": 92,
                "total_pass": 39,
                "accurate_pass": 24,
                "duels_won": 0,
                "total_long_balls": 26,
                "accurate_long_balls": 11,
                "touches": 52,
                "clearances": 1,
                "ball_recovery": 10,
                "high_claims": 3,
                "punches": 0.0,
                "aerial_won": 0,
                "sweeper_actions": 0,
                "sweeper_accurate": 0,
                "saves_inside_box": 0,
                "possession_lost": 16.0677,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 17,
                "accurate_own_half_passes": 15,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "total_shots": 0,
                "shots_on_target": 0,
                "goalsAgainst": 2.0,
                "shotsOnTargetAgainst": 3.5,
                "cleanSheets": 0.0,
                "interceptions": 0,
                "tackles_won": 0,
                "crosses_total": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "penaltySave": 0.0,
                "ownGoals": 0.0,
                "savePct": 42.9,
                "cleanSheetPct": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "expected_saves": 1.77,
                "high_pressure_saves": 0.68,
                "shots_faced": 3.8,
                "opponent_faced": "Igor Jesus, Morgan Gibbs-White",
                "matchup_zone": "Goalkeeper shot-stopping context",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "expected_goals": 0.0,
                "expected_assists": 0.0,
                "fifa_overall": 76.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.0,
                "squad_weight_total": 8.6976,
                "weight_share": 0.0,
                "position_multiplier": 0.0
              }
            }
          ]
        },
        "Milan van Ewijk": {
          "player_id": 948723,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 27,
          "height": 175,
          "market_value": 23000000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "rating": 7.0222,
            "minutes": 94,
            "total_pass": 32,
            "accurate_pass": 28,
            "duels_won": 2,
            "total_long_balls": 2,
            "accurate_long_balls": 0,
            "total_own_half_passes": 14,
            "accurate_own_half_passes": 12,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 15,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 52,
            "possession_lost": 9.7765,
            "dispossessed": 0.0,
            "duels_lost": 5,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0943,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 14,
            "total_progression": 61,
            "progressive_carries": 2,
            "key_pass": 0,
            "offsides": 0,
            "yellowCards": 0.0,
            "redCards": 0.0,
            "ownGoals": 0.0,
            "minutesPct": 100.0,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "tackles_in_zone": 2.1,
            "tackles_won_in_zone": 1.8,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.552,
            "opponent_faced": "Igor Jesus",
            "pressing_zone": "LW vs CB",
            "matchup_zone": "LW vs CB",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363642.0,
              "match_date": "2026-09-13 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Brighton",
              "home_score_current": 0.0,
              "away_score_current": 5.0,
              "team_side": "home",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Coventry",
              "opponent": "Brighton",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363263.0,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0631,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 19,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 4,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.1874,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 46,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 5.4,
                "assists": 0,
                "expected_assists": 0.0071,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 14,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 3,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3641,
            "combined_rank_score": 1606.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 1001.0,
            "sofascore_rating": 6.0,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2211.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "projected_match_rating": 7.0222,
            "source_file": "data/player_rankings.csv",
            "player_name": "Milan van Ewijk",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Derek Cornelius",
                  "ranking": 3636
                },
                {
                  "player_name": "Ardian Ismajli",
                  "ranking": 3637
                },
                {
                  "player_name": "Nélson Semedo",
                  "ranking": 3638
                },
                {
                  "player_name": "Jan Kuchta",
                  "ranking": 3639
                },
                {
                  "player_name": "Rodrigo Mora",
                  "ranking": 3640
                }
              ],
              "lower": [
                {
                  "player_name": "William Gomes",
                  "ranking": 3642
                },
                {
                  "player_name": "Miguel Román",
                  "ranking": 3643
                },
                {
                  "player_name": "João Moutinho",
                  "ranking": 3644
                },
                {
                  "player_name": "Tom Cairney",
                  "ranking": 3645
                },
                {
                  "player_name": "Mads Hermansen",
                  "ranking": 3646
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.457,
          "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",
              "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",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.457,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0479,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 3 historical appearances across 6 target models; FBref 2026-2027 prior blended (Premier League, Coventry City, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 6 target models",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "rating": 6.7015,
                "minutes": 90,
                "total_pass": 30,
                "accurate_pass": 26,
                "duels_won": 2,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 13,
                "accurate_own_half_passes": 12,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 15,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 49,
                "possession_lost": 9.33,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 3,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.09,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 13,
                "total_progression": 58,
                "progressive_carries": 2,
                "key_pass": 0
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:44.724055+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 374,
                    "rows": 1289
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 6.6
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 5.4
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "accuratePass": 26.517,
                  "touches_p90": 50.0564,
                  "possessionLostCtrl": 9.4383,
                  "totalClearance": 2.7279,
                  "aerialWon": 0.7775
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.8946144580841064,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0944
                      },
                      {
                        "name": "duel_win_rate",
                        "importance": 0.0353
                      },
                      {
                        "name": "duelWon_p90",
                        "importance": 0.0341
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0326
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0322
                      }
                    ],
                    "decomposition": {
                      "base": 0.9108,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0411
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0188
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0182
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0144
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0116
                        }
                      ],
                      "others": -0.0307,
                      "total": 0.8946
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.9087166786193848,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0588
                      },
                      {
                        "name": "duelLost",
                        "importance": 0.0461
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0446
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0406
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0401
                      }
                    ],
                    "decomposition": {
                      "base": 1.3553,
                      "items": [
                        {
                          "name": "defensive_actions",
                          "contribution": 0.1011
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.1069
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.1105
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.1052
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0738
                        }
                      ],
                      "others": 0.2663,
                      "total": 1.9087
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 1.2488336563110352,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0565
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0432
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0353
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0347
                      },
                      {
                        "name": "wonTackle",
                        "importance": 0.0329
                      }
                    ],
                    "decomposition": {
                      "base": 0.8675,
                      "items": [
                        {
                          "name": "defensive_actions",
                          "contribution": 0.0888
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0685
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0641
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0576
                        },
                        {
                          "name": "tackle_success_rate",
                          "contribution": -0.0441
                        }
                      ],
                      "others": 0.2746,
                      "total": 1.2488
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 2.256598472595215,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0506
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0425
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0417
                      },
                      {
                        "name": "tackle_success_rate",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 3.4032,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.5563
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.3158
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.2189
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.1403
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1279
                        }
                      ],
                      "others": -0.2252,
                      "total": 2.2566
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.054363489151001,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0798
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0597
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0439
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0426
                      },
                      {
                        "name": "errorLeadToAShot",
                        "importance": 0.0411
                      }
                    ],
                    "decomposition": {
                      "base": 1.2421,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": -0.101
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.0615
                        },
                        {
                          "name": "error_severity",
                          "contribution": 0.0606
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0547
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0473
                        }
                      ],
                      "others": -0.0784,
                      "total": 1.0544
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.701503753662109,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches_p90",
                        "importance": 0.0708
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0705
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0537
                      },
                      {
                        "name": "pass_accuracy",
                        "importance": 0.0518
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 6.6627,
                      "items": [
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0483
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0383
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.0306
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0261
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0248
                        }
                      ],
                      "others": 0.0607,
                      "total": 6.7015
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0479, quality 0.660)",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "rating": 7.0222,
                "minutes": 94,
                "total_pass": 32,
                "accurate_pass": 28,
                "duels_won": 2,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 14,
                "accurate_own_half_passes": 12,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 15,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 52,
                "possession_lost": 9.7765,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 3,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0943,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 14,
                "total_progression": 61,
                "progressive_carries": 2,
                "key_pass": 0
              },
              "params": {
                "market_value_eur": 23000000,
                "quality_factor": 0.6595,
                "boost_factor": 1.0479
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0542)",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "rating": 7.0222,
                "minutes": 94,
                "total_pass": 32,
                "accurate_pass": 28,
                "duels_won": 2,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 14,
                "accurate_own_half_passes": 12,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 15,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 52,
                "possession_lost": 9.7765,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 3,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0943,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 14,
                "total_progression": 61,
                "progressive_carries": 2,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": -2.0
              },
              "params": {
                "blend_weight": 0.0542,
                "history_matches": 3,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 0.0,
                  "after": 0.0812
                },
                {
                  "stat": "fouls",
                  "before": 0.0,
                  "after": 0.0542
                },
                {
                  "stat": "wonTackle",
                  "before": 1.3086,
                  "after": 1.2648
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.9374,
                  "after": 0.9137
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "rating": 7.0222,
                "minutes": 94,
                "total_pass": 32,
                "accurate_pass": 28,
                "duels_won": 2,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 14,
                "accurate_own_half_passes": 12,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 15,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 52,
                "possession_lost": 9.7765,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 3,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0943,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 14,
                "total_progression": 61,
                "progressive_carries": 2,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0
              },
              "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,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "rating": 7.0222,
                "minutes": 94,
                "total_pass": 32,
                "accurate_pass": 28,
                "duels_won": 2,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 14,
                "accurate_own_half_passes": 12,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 15,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 52,
                "possession_lost": 9.7765,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 3,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0943,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 14,
                "total_progression": 61,
                "progressive_carries": 2,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.8,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 1.0,
                "defensive_success_rate": 0.552,
                "opponent_faced": "Igor Jesus",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Igor Jesus",
                  "matchup_zone": "LW vs CB"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "rating": 7.0222,
                "minutes": 94,
                "total_pass": 32,
                "accurate_pass": 28,
                "duels_won": 2,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 14,
                "accurate_own_half_passes": 12,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 15,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 52,
                "possession_lost": 9.7765,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 3,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0943,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 14,
                "total_progression": 61,
                "progressive_carries": 2,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.8,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 1.0,
                "defensive_success_rate": 0.552,
                "opponent_faced": "Igor Jesus",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 1, fifa_overall 75.0)",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "rating": 7.0222,
                "minutes": 94,
                "total_pass": 32,
                "accurate_pass": 28,
                "duels_won": 2,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 14,
                "accurate_own_half_passes": 12,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 15,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 52,
                "possession_lost": 9.7765,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 3,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0943,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 14,
                "total_progression": 61,
                "progressive_carries": 2,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.8,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 1.0,
                "defensive_success_rate": 0.552,
                "opponent_faced": "Igor Jesus",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.0
              },
              "params": {
                "match_squad_rank": 1,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3641,
                "fifa_rank": 2211.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "rating": 7.0222,
                "minutes": 94,
                "total_pass": 32,
                "accurate_pass": 28,
                "duels_won": 2,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 14,
                "accurate_own_half_passes": 12,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 15,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 52,
                "possession_lost": 9.7765,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 3,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0943,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 14,
                "total_progression": 61,
                "progressive_carries": 2,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.8,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 1.0,
                "defensive_success_rate": 0.552,
                "opponent_faced": "Igor Jesus",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.1651,
                "squad_weight_total": 14.1256,
                "weight_share": 0.0117,
                "position_multiplier": 0.38
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "rating": 7.0222,
                "minutes": 94,
                "total_pass": 32,
                "accurate_pass": 28,
                "duels_won": 2,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 14,
                "accurate_own_half_passes": 12,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 15,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 52,
                "possession_lost": 9.7765,
                "dispossessed": 0.0,
                "duels_lost": 5,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 3,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0943,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 14,
                "total_progression": 61,
                "progressive_carries": 2,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "tackles_in_zone": 2.1,
                "tackles_won_in_zone": 1.8,
                "interceptions_in_zone": 1.1,
                "clearances_in_zone": 0.9,
                "aerial_duels_won": 1.0,
                "defensive_success_rate": 0.552,
                "opponent_faced": "Igor Jesus",
                "pressing_zone": "LW vs CB",
                "matchup_zone": "LW vs CB",
                "antagonist_source": "defensive_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.2273,
                "squad_weight_total": 8.6976,
                "weight_share": 0.0261,
                "position_multiplier": 0.45
              }
            }
          ]
        },
        "Bobby Thomas": {
          "player_id": 1033352,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 4,
          "height": 186,
          "market_value": 16500000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 2,
            "rating": 7.0086,
            "minutes": 88,
            "total_pass": 42,
            "accurate_pass": 33,
            "duels_won": 5,
            "total_long_balls": 6,
            "accurate_long_balls": 0,
            "total_own_half_passes": 24,
            "accurate_own_half_passes": 23,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 10,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 58,
            "possession_lost": 9.5967,
            "dispossessed": 0.0,
            "duels_lost": 3,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 2,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0617,
            "total_shots": 2,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 19,
            "total_progression": 25,
            "progressive_carries": 0,
            "key_pass": 0,
            "offsides": 0,
            "yellowCards": 0.0,
            "redCards": 0.0,
            "ownGoals": 0.0,
            "shotAccuracy": 0.0,
            "shotConversion": 0.0,
            "minutesPct": 92.8,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 1.1,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.752,
            "opponent_faced": "Liam Delap",
            "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,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363642.0,
              "match_date": "2026-09-13 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Brighton",
              "home_score_current": 0.0,
              "away_score_current": 5.0,
              "team_side": "home",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Coventry",
              "opponent": "Brighton",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363263.0,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 8.4,
                "assists": 0,
                "expected_goals": 0.2204,
                "expected_assists": 0.1671,
                "total_shots": 5,
                "shots_off_target": 3,
                "total_pass": 21,
                "accurate_pass": 11,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 4,
                "clearances": 6,
                "aerial_won": 5,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 78,
                "rating": 7.2,
                "assists": 0,
                "expected_assists": 0.0056,
                "total_shots": 0,
                "total_pass": 62,
                "accurate_pass": 49,
                "clearances": 9,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assists": 0,
                "expected_goals": 0.0183,
                "expected_assists": 0.0136,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 39,
                "accurate_pass": 35,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 7,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3465,
            "combined_rank_score": 1457.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 229.0,
            "sofascore_rating": 7.15,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2685.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "projected_match_rating": 7.0086,
            "source_file": "data/player_rankings.csv",
            "player_name": "Bobby Thomas",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Eric Dier",
                  "ranking": 3460
                },
                {
                  "player_name": "Benjamin Nygren",
                  "ranking": 3461
                },
                {
                  "player_name": "Arnau Tenas",
                  "ranking": 3462
                },
                {
                  "player_name": "Yvon Mvogo",
                  "ranking": 3463
                },
                {
                  "player_name": "Duje Ćaleta-Car",
                  "ranking": 3464
                }
              ],
              "lower": [
                {
                  "player_name": "Clinton Mata",
                  "ranking": 3466
                },
                {
                  "player_name": "Emerson Palmieri",
                  "ranking": 3467
                },
                {
                  "player_name": "Jakub Moder",
                  "ranking": 3468
                },
                {
                  "player_name": "Nabil Bentaleb",
                  "ranking": 3469
                },
                {
                  "player_name": "Ludovic Ajorque",
                  "ranking": 3470
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.457,
          "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",
              "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",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.457,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0286,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 167.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.54,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1267
            },
            "rationale": "XGBoost regressor (D_service) evaluated 3 historical appearances across 6 target models; FBref 2026-2027 prior blended (Premier League, Coventry City, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 6 target models",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 6.8138,
                "minutes": 86,
                "total_pass": 41,
                "accurate_pass": 32,
                "duels_won": 5,
                "total_long_balls": 6,
                "accurate_long_balls": 0,
                "total_own_half_passes": 23,
                "accurate_own_half_passes": 22,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 57,
                "possession_lost": 9.33,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.06,
                "total_shots": 2,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 18,
                "total_progression": 25,
                "progressive_carries": 0,
                "key_pass": 0
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:44.724055+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 374,
                    "rows": 1289
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 8.4
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 78.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.2
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "accuratePass": 30.2964,
                  "touches_p90": 59.999,
                  "possessionLostCtrl": 9.6365,
                  "totalClearance": 7.2721,
                  "aerialWon": 2.8358
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.9486352801322937,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0944
                      },
                      {
                        "name": "duel_win_rate",
                        "importance": 0.0353
                      },
                      {
                        "name": "duelWon_p90",
                        "importance": 0.0341
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0326
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0322
                      }
                    ],
                    "decomposition": {
                      "base": 0.9108,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0435
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0118
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0115
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.011
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0096
                        }
                      ],
                      "others": 0.0146,
                      "total": 0.9486
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.2467913627624512,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0588
                      },
                      {
                        "name": "duelLost",
                        "importance": 0.0461
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0446
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0406
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0401
                      }
                    ],
                    "decomposition": {
                      "base": 1.3553,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0706
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0613
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0554
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.0241
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.021
                        }
                      ],
                      "others": 0.0819,
                      "total": 1.2468
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.7042295932769775,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0565
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0432
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0353
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0347
                      },
                      {
                        "name": "wonTackle",
                        "importance": 0.0329
                      }
                    ],
                    "decomposition": {
                      "base": 0.8675,
                      "items": [
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0644
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.0593
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0401
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0339
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0268
                        }
                      ],
                      "others": 0.0076,
                      "total": 0.7042
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 4.2678399085998535,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0506
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0425
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0417
                      },
                      {
                        "name": "tackle_success_rate",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 3.4032,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.298
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.2295
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.2025
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1958
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.1865
                        }
                      ],
                      "others": 0.5843,
                      "total": 4.2678
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.5195260047912598,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0798
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0597
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0439
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0426
                      },
                      {
                        "name": "errorLeadToAShot",
                        "importance": 0.0411
                      }
                    ],
                    "decomposition": {
                      "base": 1.2421,
                      "items": [
                        {
                          "name": "totalClearance",
                          "contribution": 0.0963
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0748
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.0694
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0614
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0538
                        }
                      ],
                      "others": 0.0605,
                      "total": 1.5195
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.81376838684082,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches_p90",
                        "importance": 0.0708
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0705
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0537
                      },
                      {
                        "name": "pass_accuracy",
                        "importance": 0.0518
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 6.6627,
                      "items": [
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0458
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0412
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": 0.0343
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": 0.0204
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0193
                        }
                      ],
                      "others": 0.0725,
                      "total": 6.8138
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0286, quality 0.595)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 7.0086,
                "minutes": 88,
                "total_pass": 42,
                "accurate_pass": 33,
                "duels_won": 5,
                "total_long_balls": 6,
                "accurate_long_balls": 0,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 58,
                "possession_lost": 9.5967,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0617,
                "total_shots": 2,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 19,
                "total_progression": 25,
                "progressive_carries": 0,
                "key_pass": 0
              },
              "params": {
                "market_value_eur": 16500000,
                "quality_factor": 0.5953,
                "boost_factor": 1.0286
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0515)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 7.0086,
                "minutes": 88,
                "total_pass": 42,
                "accurate_pass": 33,
                "duels_won": 5,
                "total_long_balls": 6,
                "accurate_long_balls": 0,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 58,
                "possession_lost": 9.5967,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0617,
                "total_shots": 2,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 19,
                "total_progression": 25,
                "progressive_carries": 0,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 92.8,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": -1.62
              },
              "params": {
                "blend_weight": 0.0515,
                "history_matches": 3,
                "prior_reliability": 0.1267,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.0,
                  "after": 0.0813
                },
                {
                  "stat": "totalShots",
                  "before": 2.0572,
                  "after": 1.9791
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.9758,
                  "after": 0.9256
                },
                {
                  "stat": "totalCross",
                  "before": 0.0,
                  "after": 0.0271
                },
                {
                  "stat": "wasFouled",
                  "before": 1.7177,
                  "after": 1.7376
                },
                {
                  "stat": "wonTackle",
                  "before": 0.7244,
                  "after": 0.7142
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 7.0086,
                "minutes": 88,
                "total_pass": 42,
                "accurate_pass": 33,
                "duels_won": 5,
                "total_long_balls": 6,
                "accurate_long_balls": 0,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 58,
                "possession_lost": 9.5967,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0617,
                "total_shots": 2,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 19,
                "total_progression": 25,
                "progressive_carries": 0,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 92.8,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0
              },
              "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,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 7.0086,
                "minutes": 88,
                "total_pass": 42,
                "accurate_pass": 33,
                "duels_won": 5,
                "total_long_balls": 6,
                "accurate_long_balls": 0,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 58,
                "possession_lost": 9.5967,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0617,
                "total_shots": 2,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 19,
                "total_progression": 25,
                "progressive_carries": 0,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 92.8,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.752,
                "opponent_faced": "Liam Delap",
                "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": "Liam Delap",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 7.0086,
                "minutes": 88,
                "total_pass": 42,
                "accurate_pass": 33,
                "duels_won": 5,
                "total_long_balls": 6,
                "accurate_long_balls": 0,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 58,
                "possession_lost": 9.5967,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0617,
                "total_shots": 2,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 19,
                "total_progression": 25,
                "progressive_carries": 0,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 92.8,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.752,
                "opponent_faced": "Liam Delap",
                "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": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 9, fifa_overall 74.0)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 7.0086,
                "minutes": 88,
                "total_pass": 42,
                "accurate_pass": 33,
                "duels_won": 5,
                "total_long_balls": 6,
                "accurate_long_balls": 0,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 58,
                "possession_lost": 9.5967,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0617,
                "total_shots": 2,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 19,
                "total_progression": 25,
                "progressive_carries": 0,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 92.8,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.752,
                "opponent_faced": "Liam Delap",
                "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,
                "fifa_overall": 74.0
              },
              "params": {
                "match_squad_rank": 9,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3465,
                "fifa_rank": 2685.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 74.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 7.0086,
                "minutes": 88,
                "total_pass": 42,
                "accurate_pass": 33,
                "duels_won": 5,
                "total_long_balls": 6,
                "accurate_long_balls": 0,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 58,
                "possession_lost": 9.5967,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0617,
                "total_shots": 2,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 19,
                "total_progression": 25,
                "progressive_carries": 0,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 92.8,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.752,
                "opponent_faced": "Liam Delap",
                "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,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.4476,
                "squad_weight_total": 14.1256,
                "weight_share": 0.0317,
                "position_multiplier": 0.38
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 7.0086,
                "minutes": 88,
                "total_pass": 42,
                "accurate_pass": 33,
                "duels_won": 5,
                "total_long_balls": 6,
                "accurate_long_balls": 0,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 18,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 58,
                "possession_lost": 9.5967,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 2,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0617,
                "total_shots": 2,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 19,
                "total_progression": 25,
                "progressive_carries": 0,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 92.8,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "tackles_in_zone": 1.0,
                "tackles_won_in_zone": 1.1,
                "interceptions_in_zone": 1.0,
                "clearances_in_zone": 0.8,
                "aerial_duels_won": 0.6,
                "defensive_success_rate": 0.752,
                "opponent_faced": "Liam Delap",
                "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,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.1686,
                "squad_weight_total": 8.6976,
                "weight_share": 0.0194,
                "position_multiplier": 0.45
              }
            }
          ]
        },
        "Aurèle Amenda": {
          "player_id": 999276,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 24,
          "height": 194,
          "market_value": 10300000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 2,
            "rating": 6.7167,
            "minutes": 91,
            "total_pass": 45,
            "accurate_pass": 40,
            "duels_won": 3,
            "total_long_balls": 6,
            "accurate_long_balls": 4,
            "total_own_half_passes": 24,
            "accurate_own_half_passes": 23,
            "total_opp_half_passes": 21,
            "accurate_opp_half_passes": 17,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 54,
            "possession_lost": 6.722,
            "dispossessed": 0.0,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.131,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 20,
            "total_progression": 108,
            "progressive_carries": 2,
            "key_pass": 0,
            "offsides": 0,
            "yellowCards": 0.5,
            "redCards": 0.0,
            "ownGoals": 0.0,
            "shotAccuracy": 0.0,
            "shotConversion": 0.0,
            "minutesPct": 100.0,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "opponent_faced": "Arnaud Kalimuendo",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363642.0,
              "match_date": "2026-09-13 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Brighton",
              "home_score_current": 0.0,
              "away_score_current": 5.0,
              "team_side": "home",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Coventry",
              "opponent": "Brighton",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363263.0,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.343,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 22,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.0154,
                "expected_assists": 0.0373,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 73,
                "accurate_pass": 69,
                "clearances": 4,
                "aerial_won": 5,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assists": 0,
                "expected_assists": 0.0058,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 28,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3516,
            "combined_rank_score": 1492.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 292.0,
            "sofascore_rating": 7.05,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2692.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "starter",
            "projected_match_rating": 6.7167,
            "source_file": "data/player_rankings.csv",
            "player_name": "Aurèle Amenda",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Robin Zentner",
                  "ranking": 3511
                },
                {
                  "player_name": "Kevin Diks",
                  "ranking": 3512
                },
                {
                  "player_name": "Zuriko Davitashvili",
                  "ranking": 3513
                },
                {
                  "player_name": "Grischa Prömel",
                  "ranking": 3514
                },
                {
                  "player_name": "Pol Lozano",
                  "ranking": 3515
                }
              ],
              "lower": [
                {
                  "player_name": "Manu Morlanes",
                  "ranking": 3517
                },
                {
                  "player_name": "Alexis Claude-Maurice",
                  "ranking": 3518
                },
                {
                  "player_name": "Sebastián Cáceres",
                  "ranking": 3519
                },
                {
                  "player_name": "Anthony Caci",
                  "ranking": 3520
                },
                {
                  "player_name": "Amar Memić",
                  "ranking": 3521
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.457,
          "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",
              "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",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.457,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0078,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 180.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.5,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "XGBoost regressor (D_service) evaluated 3 historical appearances across 6 target models; FBref 2026-2027 prior blended (Premier League, Coventry City, rel: 0.13, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost D_service raw output over 6 target models",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 6.6648,
                "minutes": 90,
                "total_pass": 45,
                "accurate_pass": 40,
                "duels_won": 3,
                "total_long_balls": 6,
                "accurate_long_balls": 4,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 21,
                "accurate_opp_half_passes": 17,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 54,
                "possession_lost": 6.67,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 1,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.13,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 20,
                "total_progression": 107,
                "progressive_carries": 2,
                "key_pass": 0
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:44.724055+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 374,
                    "rows": 1289
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 7.1
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "accuratePass": 39.2148,
                  "touches_p90": 53.4956,
                  "possessionLostCtrl": 6.9436,
                  "totalClearance": 3.3955,
                  "aerialWon": 2.7104
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.8799143433570862,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0944
                      },
                      {
                        "name": "duel_win_rate",
                        "importance": 0.0353
                      },
                      {
                        "name": "duelWon_p90",
                        "importance": 0.0341
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0326
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0322
                      }
                    ],
                    "decomposition": {
                      "base": 0.9108,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0397
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0324
                        },
                        {
                          "name": "interceptionWon_p90",
                          "contribution": -0.0157
                        },
                        {
                          "name": "totalTackle_p90",
                          "contribution": 0.0153
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.009
                        }
                      ],
                      "others": -0.0288,
                      "total": 0.8799
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.2861417531967163,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0588
                      },
                      {
                        "name": "duelLost",
                        "importance": 0.0461
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0446
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0406
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0401
                      }
                    ],
                    "decomposition": {
                      "base": 1.3553,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0708
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0605
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0283
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0249
                        },
                        {
                          "name": "totalProgression",
                          "contribution": 0.022
                        }
                      ],
                      "others": 0.0367,
                      "total": 1.2861
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.960252583026886,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0565
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0432
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0353
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0347
                      },
                      {
                        "name": "wonTackle",
                        "importance": 0.0329
                      }
                    ],
                    "decomposition": {
                      "base": 0.8675,
                      "items": [
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.068
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.042
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": 0.0337
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0255
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0247
                        }
                      ],
                      "others": 0.1683,
                      "total": 0.9603
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 3.5273711681365967,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0506
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0425
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0417
                      },
                      {
                        "name": "tackle_success_rate",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 3.4032,
                      "items": [
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.3517
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.283
                        },
                        {
                          "name": "aerialWon",
                          "contribution": 0.1989
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.1028
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.0969
                        }
                      ],
                      "others": -0.0001,
                      "total": 3.5274
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 1.5106786489486694,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0798
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0597
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0439
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0426
                      },
                      {
                        "name": "errorLeadToAShot",
                        "importance": 0.0411
                      }
                    ],
                    "decomposition": {
                      "base": 1.2421,
                      "items": [
                        {
                          "name": "aerialWon",
                          "contribution": 0.1244
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": 0.093
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.087
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0717
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0723
                        }
                      ],
                      "others": -0.0058,
                      "total": 1.5107
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.664778232574463,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches_p90",
                        "importance": 0.0708
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0705
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0537
                      },
                      {
                        "name": "pass_accuracy",
                        "importance": 0.0518
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 6.6627,
                      "items": [
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.035
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0252
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0245
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0175
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0158
                        }
                      ],
                      "others": 0.0697,
                      "total": 6.6648
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0078, quality 0.526)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 6.7167,
                "minutes": 91,
                "total_pass": 45,
                "accurate_pass": 40,
                "duels_won": 3,
                "total_long_balls": 6,
                "accurate_long_balls": 4,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 21,
                "accurate_opp_half_passes": 17,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 54,
                "possession_lost": 6.722,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 1,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.131,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 20,
                "total_progression": 108,
                "progressive_carries": 2,
                "key_pass": 0
              },
              "params": {
                "market_value_eur": 10300000,
                "quality_factor": 0.526,
                "boost_factor": 1.0078
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0542)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 6.7167,
                "minutes": 91,
                "total_pass": 45,
                "accurate_pass": 40,
                "duels_won": 3,
                "total_long_balls": 6,
                "accurate_long_balls": 4,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 21,
                "accurate_opp_half_passes": 17,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 54,
                "possession_lost": 6.722,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 1,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.131,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 20,
                "total_progression": 108,
                "progressive_carries": 2,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.5,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": -2.0
              },
              "params": {
                "blend_weight": 0.0542,
                "history_matches": 3,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "wonTackle",
                  "before": 0.9677,
                  "after": 0.9153
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.8868,
                  "after": 0.8388
                },
                {
                  "stat": "fouls",
                  "before": 1.683,
                  "after": 1.6731
                },
                {
                  "stat": "totalShots",
                  "before": 0.3326,
                  "after": 0.3417
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 6.7167,
                "minutes": 91,
                "total_pass": 45,
                "accurate_pass": 40,
                "duels_won": 3,
                "total_long_balls": 6,
                "accurate_long_balls": 4,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 21,
                "accurate_opp_half_passes": 17,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 54,
                "possession_lost": 6.722,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 1,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.131,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 20,
                "total_progression": 108,
                "progressive_carries": 2,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.5,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0
              },
              "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,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 6.7167,
                "minutes": 91,
                "total_pass": 45,
                "accurate_pass": 40,
                "duels_won": 3,
                "total_long_balls": 6,
                "accurate_long_balls": 4,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 21,
                "accurate_opp_half_passes": 17,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 54,
                "possession_lost": 6.722,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 1,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.131,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 20,
                "total_progression": 108,
                "progressive_carries": 2,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.5,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "opponent_faced": "Arnaud Kalimuendo",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Arnaud Kalimuendo",
                  "matchup_zone": "Shape fallback"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 6.7167,
                "minutes": 91,
                "total_pass": 45,
                "accurate_pass": 40,
                "duels_won": 3,
                "total_long_balls": 6,
                "accurate_long_balls": 4,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 21,
                "accurate_opp_half_passes": 17,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 54,
                "possession_lost": 6.722,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 1,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.131,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 20,
                "total_progression": 108,
                "progressive_carries": 2,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.5,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "opponent_faced": "Arnaud Kalimuendo",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 16, fifa_overall 74.0)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 6.7167,
                "minutes": 91,
                "total_pass": 45,
                "accurate_pass": 40,
                "duels_won": 3,
                "total_long_balls": 6,
                "accurate_long_balls": 4,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 21,
                "accurate_opp_half_passes": 17,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 54,
                "possession_lost": 6.722,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 1,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.131,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 20,
                "total_progression": 108,
                "progressive_carries": 2,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.5,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "opponent_faced": "Arnaud Kalimuendo",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 74.0
              },
              "params": {
                "match_squad_rank": 16,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3516,
                "fifa_rank": 2692.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 74.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 6.7167,
                "minutes": 91,
                "total_pass": 45,
                "accurate_pass": 40,
                "duels_won": 3,
                "total_long_balls": 6,
                "accurate_long_balls": 4,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 21,
                "accurate_opp_half_passes": 17,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 54,
                "possession_lost": 6.722,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 1,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.131,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 20,
                "total_progression": 108,
                "progressive_carries": 2,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.5,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "opponent_faced": "Arnaud Kalimuendo",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.7305,
                "squad_weight_total": 14.1256,
                "weight_share": 0.0517,
                "position_multiplier": 0.38
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "rating": 6.7167,
                "minutes": 91,
                "total_pass": 45,
                "accurate_pass": 40,
                "duels_won": 3,
                "total_long_balls": 6,
                "accurate_long_balls": 4,
                "total_own_half_passes": 24,
                "accurate_own_half_passes": 23,
                "total_opp_half_passes": 21,
                "accurate_opp_half_passes": 17,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 54,
                "possession_lost": 6.722,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 1,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 4,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.131,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 20,
                "total_progression": 108,
                "progressive_carries": 2,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.5,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "opponent_faced": "Arnaud Kalimuendo",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.2846,
                "squad_weight_total": 8.6976,
                "weight_share": 0.0327,
                "position_multiplier": 0.45
              }
            }
          ]
        },
        "Jack Rudoni": {
          "player_id": 979565,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 5,
          "height": 185,
          "market_value": 21000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1339,
            "assists": 0,
            "expected_goals": 0.1071,
            "rating": 7.2329,
            "minutes": 54,
            "total_pass": 20,
            "accurate_pass": 15,
            "duels_won": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 11,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 31,
            "possession_lost": 9.724,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 10,
            "total_progression": 58,
            "progressive_carries": 1,
            "total_shots": 1,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.4,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.21,
            "pressing_faced": "HIGH",
            "matchup_zone": "Central Mid vs Mid + CDM Pressing Trap",
            "numerical_situation": "1v2",
            "opponent_defenders": "Morgan Gibbs-White, Dan Ndoye",
            "opponent_faced": "Morgan Gibbs-White, Dan Ndoye",
            "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363642.0,
              "match_date": "2026-09-13 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Brighton",
              "home_score_current": 0.0,
              "away_score_current": 5.0,
              "team_side": "home",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Coventry",
              "opponent": "Brighton",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363263.0,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 63,
                "rating": 6.2,
                "assists": 0,
                "expected_goals": 0.2889,
                "expected_assists": 0.0948,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 10,
                "accurate_pass": 5,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 71,
                "rating": 6.5,
                "assists": 0,
                "expected_goals": 0.0579,
                "expected_assists": 0.089,
                "total_shots": 1,
                "total_pass": 35,
                "accurate_pass": 28,
                "key_pass": 2,
                "tackles": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 20,
                "rating": 6.7,
                "assists": 0,
                "expected_goals": 0.1455,
                "expected_assists": 0.0012,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 13,
                "accurate_pass": 9,
                "tackles": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3549,
            "combined_rank_score": 1517.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2212.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "starter",
            "projected_match_rating": 7.2329,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jack Rudoni",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jindřich Staněk",
                  "ranking": 3544
                },
                {
                  "player_name": "Janis Blaswich",
                  "ranking": 3545
                },
                {
                  "player_name": "Jobe Bellingham",
                  "ranking": 3546
                },
                {
                  "player_name": "Omar El Hilali",
                  "ranking": 3547
                },
                {
                  "player_name": "Matt Turner",
                  "ranking": 3548
                }
              ],
              "lower": [
                {
                  "player_name": "Nemanja Matić",
                  "ranking": 3550
                },
                {
                  "player_name": "Reiss Nelson",
                  "ranking": 3551
                },
                {
                  "player_name": "Tolu Arokodare",
                  "ranking": 3552
                },
                {
                  "player_name": "Giovanni Simeone",
                  "ranking": 3553
                },
                {
                  "player_name": "Nuno Santos",
                  "ranking": 3554
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "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",
              "numberOfSprints",
              "kilometersCovered",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "intensity_index",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.438,
            "data_sources": [
              "match_history",
              "market_value"
            ],
            "market_value_adjustment": 1.0422,
            "fbref_prior_metrics": null,
            "rationale": "XGBoost regressor (M_service) evaluated 3 historical appearances across 5 target models."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 5 target models",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.1285,
                "assists": 0,
                "expected_goals": 0.1094,
                "rating": 6.9398,
                "minutes": 51,
                "total_pass": 19,
                "accurate_pass": 14,
                "duels_won": 2,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 4,
                "total_opp_half_passes": 15,
                "accurate_opp_half_passes": 10,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 29,
                "possession_lost": 9.33,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 1,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 56,
                "progressive_carries": 1
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:48.236605+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 461,
                    "rows": 1422
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 63.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.2
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 20.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "ballRecovery_p90": 7.8414,
                  "ballRecovery": 3.2225,
                  "intensity_index": 6.0796,
                  "expectedAssists": 0.0666,
                  "kilometersCovered": 7.141
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.1749556064605713,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0551
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0489
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0393
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.035
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 0.9691,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0536
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": 0.037
                        },
                        {
                          "name": "cross_accuracy",
                          "contribution": 0.0309
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0256
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.025
                        }
                      ],
                      "others": 0.0338,
                      "total": 1.175
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.12847529351711273,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "cross_creative_contribution",
                        "importance": 0.0714
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0375
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0356
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0345
                      }
                    ],
                    "decomposition": {
                      "base": 0.0929,
                      "items": [
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0169
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": 0.0059
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.0051
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0049
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0051
                        }
                      ],
                      "others": -0.0023,
                      "total": 0.1285
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.08312511444091797,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0378
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0368
                      },
                      {
                        "name": "cross_accuracy",
                        "importance": 0.036
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0315
                      }
                    ],
                    "decomposition": {
                      "base": 0.0956,
                      "items": [
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0083
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0049
                        },
                        {
                          "name": "keyPass_p90",
                          "contribution": 0.0045
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.0028
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0026
                        }
                      ],
                      "others": -0.0036,
                      "total": 0.0831
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.10938726365566254,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.077
                      },
                      {
                        "name": "intensity_index",
                        "importance": 0.0622
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0454
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0399
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0384
                      }
                    ],
                    "decomposition": {
                      "base": 0.1087,
                      "items": [
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.014
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": 0.008
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0061
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0059
                        },
                        {
                          "name": "intensity_index",
                          "contribution": 0.0057
                        }
                      ],
                      "others": 0.0008,
                      "total": 0.1094
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.93983268737793,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "ballRecovery_p90",
                        "importance": 0.0847
                      },
                      {
                        "name": "ballRecovery",
                        "importance": 0.0836
                      },
                      {
                        "name": "kilometersCovered",
                        "importance": 0.0597
                      },
                      {
                        "name": "defensive_midfield_actions",
                        "importance": 0.05
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0441
                      }
                    ],
                    "decomposition": {
                      "base": 6.8318,
                      "items": [
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0324
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0224
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0213
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0213
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": 0.0183
                        }
                      ],
                      "others": -0.0077,
                      "total": 6.9398
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0422, quality 0.641)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.1339,
                "assists": 0,
                "expected_goals": 0.114,
                "rating": 7.2329,
                "minutes": 54,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 2,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 4,
                "total_opp_half_passes": 16,
                "accurate_opp_half_passes": 11,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 31,
                "possession_lost": 9.724,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 1,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 58,
                "progressive_carries": 1
              },
              "params": {
                "market_value_eur": 21000000,
                "quality_factor": 0.6408,
                "boost_factor": 1.0422
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.1339,
                "assists": 0,
                "expected_goals": 0.114,
                "rating": 7.2329,
                "minutes": 54,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 2,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 4,
                "total_opp_half_passes": 16,
                "accurate_opp_half_passes": 11,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 31,
                "possession_lost": 9.724,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 1,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 58,
                "progressive_carries": 1
              },
              "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,
                "expected_assists": 0.1339,
                "assists": 0,
                "expected_goals": 0.114,
                "rating": 7.2329,
                "minutes": 54,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 2,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 4,
                "total_opp_half_passes": 16,
                "accurate_opp_half_passes": 11,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 31,
                "possession_lost": 9.724,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 1,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 58,
                "progressive_carries": 1,
                "total_shots": 1,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.21,
                "pressing_faced": "HIGH",
                "matchup_zone": "Central Mid vs Mid + CDM Pressing Trap",
                "numerical_situation": "1v2",
                "opponent_defenders": "Morgan Gibbs-White, Dan Ndoye",
                "opponent_faced": "Morgan Gibbs-White, Dan Ndoye",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Morgan Gibbs-White, Dan Ndoye",
                  "matchup_zone": "Central Mid vs Mid + CDM Pressing Trap",
                  "duel_win_rate": 0.21,
                  "pressing_faced": "HIGH",
                  "numerical_situation": "1v2"
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 0.0,
                  "after": 1.2
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.1339,
                "assists": 0,
                "expected_goals": 0.1071,
                "rating": 7.2329,
                "minutes": 54,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 2,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 4,
                "total_opp_half_passes": 16,
                "accurate_opp_half_passes": 11,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 31,
                "possession_lost": 9.724,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 1,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 58,
                "progressive_carries": 1,
                "total_shots": 1,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.21,
                "pressing_faced": "HIGH",
                "matchup_zone": "Central Mid vs Mid + CDM Pressing Trap",
                "numerical_situation": "1v2",
                "opponent_defenders": "Morgan Gibbs-White, Dan Ndoye",
                "opponent_faced": "Morgan Gibbs-White, Dan Ndoye",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.114,
                  "after": 0.1071
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 2, fifa_overall 75.0)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.1339,
                "assists": 0,
                "expected_goals": 0.1071,
                "rating": 7.2329,
                "minutes": 54,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 2,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 4,
                "total_opp_half_passes": 16,
                "accurate_opp_half_passes": 11,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 31,
                "possession_lost": 9.724,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 1,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 58,
                "progressive_carries": 1,
                "total_shots": 1,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.21,
                "pressing_faced": "HIGH",
                "matchup_zone": "Central Mid vs Mid + CDM Pressing Trap",
                "numerical_situation": "1v2",
                "opponent_defenders": "Morgan Gibbs-White, Dan Ndoye",
                "opponent_faced": "Morgan Gibbs-White, Dan Ndoye",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.0
              },
              "params": {
                "match_squad_rank": 2,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3549,
                "fifa_rank": 2212.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.1339,
                "assists": 0,
                "expected_goals": 0.1071,
                "rating": 7.2329,
                "minutes": 54,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 2,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 4,
                "total_opp_half_passes": 16,
                "accurate_opp_half_passes": 11,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 31,
                "possession_lost": 9.724,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 1,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 58,
                "progressive_carries": 1,
                "total_shots": 1,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.21,
                "pressing_faced": "HIGH",
                "matchup_zone": "Central Mid vs Mid + CDM Pressing Trap",
                "numerical_situation": "1v2",
                "opponent_defenders": "Morgan Gibbs-White, Dan Ndoye",
                "opponent_faced": "Morgan Gibbs-White, Dan Ndoye",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.5244,
                "squad_weight_total": 14.1256,
                "weight_share": 0.0371,
                "position_multiplier": 0.78
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.1339,
                "assists": 0,
                "expected_goals": 0.1071,
                "rating": 7.2329,
                "minutes": 54,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 2,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "total_own_half_passes": 4,
                "accurate_own_half_passes": 4,
                "total_opp_half_passes": 16,
                "accurate_opp_half_passes": 11,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 31,
                "possession_lost": 9.724,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 1,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 58,
                "progressive_carries": 1,
                "total_shots": 1,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.4,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.21,
                "pressing_faced": "HIGH",
                "matchup_zone": "Central Mid vs Mid + CDM Pressing Trap",
                "numerical_situation": "1v2",
                "opponent_defenders": "Morgan Gibbs-White, Dan Ndoye",
                "opponent_faced": "Morgan Gibbs-White, Dan Ndoye",
                "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 1.6518,
                "squad_weight_total": 8.6976,
                "weight_share": 0.1899,
                "position_multiplier": 1.45
              }
            }
          ]
        },
        "Caleb Yirenkyi": {
          "player_id": 1986794,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 8,
          "height": 182,
          "market_value": 18700000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0823,
            "assists": 0,
            "expected_goals": 0.0694,
            "rating": 7.0866,
            "minutes": 55,
            "total_pass": 22,
            "accurate_pass": 18,
            "duels_won": 3,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 11,
            "accurate_own_half_passes": 10,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 8,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 30,
            "possession_lost": 6.5543,
            "dispossessed": 0.0,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 11,
            "total_progression": 50,
            "progressive_carries": 1,
            "total_shots": 1,
            "offsides": 0,
            "yellowCards": 0.6667,
            "redCards": 0.0,
            "ownGoals": 0.0,
            "shotAccuracy": 0.0,
            "shotConversion": 0.0,
            "minutesPct": 72.8,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.8,
            "crosses_attempted": 2.6,
            "duel_win_rate": 0.445,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Left Wingback vs Right Winger — Tracking Run Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Arnaud Kalimuendo",
            "opponent_faced": "Arnaud Kalimuendo",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363263.0,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 27,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 5,
                "interceptions": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 71,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.0344,
                "expected_assists": 0.1292,
                "total_shots": 1,
                "total_pass": 38,
                "accurate_pass": 37,
                "key_pass": 1,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 62,
                "rating": 6.1,
                "assists": 0,
                "expected_assists": 0.0045,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 10,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4068,
            "combined_rank_score": 2047.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 873.0,
            "sofascore_rating": 6.55,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3222.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "projected_match_rating": 7.0866,
            "source_file": "data/player_rankings.csv",
            "player_name": "Caleb Yirenkyi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Manuel Lanzini",
                  "ranking": 4063
                },
                {
                  "player_name": "Yerson Mosquera",
                  "ranking": 4064
                },
                {
                  "player_name": "Sebastián Driussi",
                  "ranking": 4065
                },
                {
                  "player_name": "Franco Cristaldo",
                  "ranking": 4066
                },
                {
                  "player_name": "Ondrej Duda",
                  "ranking": 4067
                }
              ],
              "lower": [
                {
                  "player_name": "Gabriel Ávalos",
                  "ranking": 4069
                },
                {
                  "player_name": "Cecilio Domínguez",
                  "ranking": 4070
                },
                {
                  "player_name": "Álvaro Montero",
                  "ranking": 4071
                },
                {
                  "player_name": "Iker Muñoz",
                  "ranking": 4072
                },
                {
                  "player_name": "Elvis Rexhbeçaj",
                  "ranking": 4073
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.453,
          "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",
              "numberOfSprints",
              "kilometersCovered",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "intensity_index",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.453,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0354,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "minutes": 131.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.69,
              "shots_on_target_pct": 0.0,
              "prior_reliability": 0.1
            },
            "rationale": "XGBoost regressor (M_service) evaluated 3 historical appearances across 5 target models; FBref 2026-2027 prior blended (Premier League, Coventry City, rel: 0.10, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 5 target models",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0795,
                "assists": 0,
                "expected_goals": 0.0714,
                "rating": 6.8442,
                "minutes": 53,
                "total_pass": 21,
                "accurate_pass": 17,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 11,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 8,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 29,
                "possession_lost": 6.33,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_won": 2,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 49,
                "progressive_carries": 1
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:48.236605+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 461,
                    "rows": 1422
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.3887,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 62.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.1
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "ballRecovery_p90": 8.0815,
                  "ballRecovery": 3.7191,
                  "intensity_index": 5.2093,
                  "expectedAssists": 0.0441,
                  "kilometersCovered": 6.6517
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 1.0189647674560547,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0551
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0489
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0393
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.035
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 0.9691,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0526
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": 0.0391
                        },
                        {
                          "name": "cross_accuracy",
                          "contribution": 0.0377
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": 0.0326
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0269
                        }
                      ],
                      "others": -0.139,
                      "total": 1.019
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07948717474937439,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "cross_creative_contribution",
                        "importance": 0.0714
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0375
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0356
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0345
                      }
                    ],
                    "decomposition": {
                      "base": 0.0929,
                      "items": [
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0169
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0065
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0049
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0036
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.0034
                        }
                      ],
                      "others": -0.0119,
                      "total": 0.0795
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.08357880264520645,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0378
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0368
                      },
                      {
                        "name": "cross_accuracy",
                        "importance": 0.036
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0315
                      }
                    ],
                    "decomposition": {
                      "base": 0.0956,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0061
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0052
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.0033
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": -0.003
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0029
                        }
                      ],
                      "others": -0.0039,
                      "total": 0.0836
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07138372212648392,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.077
                      },
                      {
                        "name": "intensity_index",
                        "importance": 0.0622
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0454
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0399
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0384
                      }
                    ],
                    "decomposition": {
                      "base": 0.1087,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0171
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0117
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.006
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": -0.0054
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0046
                        }
                      ],
                      "others": -0.0017,
                      "total": 0.0714
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.844168663024902,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "ballRecovery_p90",
                        "importance": 0.0847
                      },
                      {
                        "name": "ballRecovery",
                        "importance": 0.0836
                      },
                      {
                        "name": "kilometersCovered",
                        "importance": 0.0597
                      },
                      {
                        "name": "defensive_midfield_actions",
                        "importance": 0.05
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0441
                      }
                    ],
                    "decomposition": {
                      "base": 6.8318,
                      "items": [
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.0323
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0237
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0199
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": 0.0182
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0179
                        }
                      ],
                      "others": -0.035,
                      "total": 6.8442
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0354, quality 0.618)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0823,
                "assists": 0,
                "expected_goals": 0.0739,
                "rating": 7.0866,
                "minutes": 55,
                "total_pass": 22,
                "accurate_pass": 18,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 11,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 8,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 30,
                "possession_lost": 6.5543,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_won": 2,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 11,
                "total_progression": 50,
                "progressive_carries": 1
              },
              "params": {
                "market_value_eur": 18700000,
                "quality_factor": 0.6181,
                "boost_factor": 1.0354
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0406)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0823,
                "assists": 0,
                "expected_goals": 0.0739,
                "rating": 7.0866,
                "minutes": 55,
                "total_pass": 22,
                "accurate_pass": 18,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 11,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 8,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 30,
                "possession_lost": 6.5543,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_won": 2,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 11,
                "total_progression": 50,
                "progressive_carries": 1,
                "total_shots": 1,
                "offsides": 0,
                "yellowCards": 0.6667,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 72.8,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": -2.06
              },
              "params": {
                "blend_weight": 0.0406,
                "history_matches": 3,
                "prior_reliability": 0.1,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 0.0,
                  "after": 0.0542
                },
                {
                  "stat": "totalCross",
                  "before": 0.0,
                  "after": 0.0271
                },
                {
                  "stat": "fouls",
                  "before": 1.3771,
                  "after": 1.4024
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0823,
                "assists": 0,
                "expected_goals": 0.0739,
                "rating": 7.0866,
                "minutes": 55,
                "total_pass": 22,
                "accurate_pass": 18,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 11,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 8,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 30,
                "possession_lost": 6.5543,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_won": 2,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 11,
                "total_progression": 50,
                "progressive_carries": 1,
                "total_shots": 1,
                "offsides": 0,
                "yellowCards": 0.6667,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 72.8,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0
              },
              "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,
                "expected_assists": 0.0823,
                "assists": 0,
                "expected_goals": 0.0739,
                "rating": 7.0866,
                "minutes": 55,
                "total_pass": 22,
                "accurate_pass": 18,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 11,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 8,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 30,
                "possession_lost": 6.5543,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 11,
                "total_progression": 50,
                "progressive_carries": 1,
                "total_shots": 1,
                "offsides": 0,
                "yellowCards": 0.6667,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 72.8,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.8,
                "crosses_attempted": 2.6,
                "duel_win_rate": 0.445,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wingback vs Right Winger — Tracking Run Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Arnaud Kalimuendo",
                "opponent_faced": "Arnaud Kalimuendo",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Arnaud Kalimuendo",
                  "matchup_zone": "Left Wingback vs Right Winger — Tracking Run Duel",
                  "duel_win_rate": 0.445,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v1"
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 1.7292,
                  "after": 1.1
                },
                {
                  "stat": "totalShots",
                  "before": 0.69,
                  "after": 1.0
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0823,
                "assists": 0,
                "expected_goals": 0.0694,
                "rating": 7.0866,
                "minutes": 55,
                "total_pass": 22,
                "accurate_pass": 18,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 11,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 8,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 30,
                "possession_lost": 6.5543,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 11,
                "total_progression": 50,
                "progressive_carries": 1,
                "total_shots": 1,
                "offsides": 0,
                "yellowCards": 0.6667,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 72.8,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.8,
                "crosses_attempted": 2.6,
                "duel_win_rate": 0.445,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wingback vs Right Winger — Tracking Run Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Arnaud Kalimuendo",
                "opponent_faced": "Arnaud Kalimuendo",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 3, fifa_overall 73.0)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0823,
                "assists": 0,
                "expected_goals": 0.0694,
                "rating": 7.0866,
                "minutes": 55,
                "total_pass": 22,
                "accurate_pass": 18,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 11,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 8,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 30,
                "possession_lost": 6.5543,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 11,
                "total_progression": 50,
                "progressive_carries": 1,
                "total_shots": 1,
                "offsides": 0,
                "yellowCards": 0.6667,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 72.8,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.8,
                "crosses_attempted": 2.6,
                "duel_win_rate": 0.445,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wingback vs Right Winger — Tracking Run Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Arnaud Kalimuendo",
                "opponent_faced": "Arnaud Kalimuendo",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 3,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4068,
                "fifa_rank": 3222.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 73.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0823,
                "assists": 0,
                "expected_goals": 0.0694,
                "rating": 7.0866,
                "minutes": 55,
                "total_pass": 22,
                "accurate_pass": 18,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 11,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 8,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 30,
                "possession_lost": 6.5543,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 11,
                "total_progression": 50,
                "progressive_carries": 1,
                "total_shots": 1,
                "offsides": 0,
                "yellowCards": 0.6667,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 72.8,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.8,
                "crosses_attempted": 2.6,
                "duel_win_rate": 0.445,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wingback vs Right Winger — Tracking Run Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Arnaud Kalimuendo",
                "opponent_faced": "Arnaud Kalimuendo",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.4095,
                "squad_weight_total": 14.1256,
                "weight_share": 0.029,
                "position_multiplier": 0.78
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0823,
                "assists": 0,
                "expected_goals": 0.0694,
                "rating": 7.0866,
                "minutes": 55,
                "total_pass": 22,
                "accurate_pass": 18,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 11,
                "accurate_own_half_passes": 10,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 8,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 30,
                "possession_lost": 6.5543,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 1,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 11,
                "total_progression": 50,
                "progressive_carries": 1,
                "total_shots": 1,
                "offsides": 0,
                "yellowCards": 0.6667,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 72.8,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.8,
                "crosses_attempted": 2.6,
                "duel_win_rate": 0.445,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Left Wingback vs Right Winger — Tracking Run Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Arnaud Kalimuendo",
                "opponent_faced": "Arnaud Kalimuendo",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 73.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 1.3659,
                "squad_weight_total": 8.6976,
                "weight_share": 0.157,
                "position_multiplier": 1.45
              }
            }
          ]
        },
        "Ephron Mason-Clark": {
          "player_id": 861315,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 10,
          "height": 178,
          "market_value": 17200000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0647,
            "assists": 0,
            "expected_goals": 0.0779,
            "rating": 6.9262,
            "minutes": 66,
            "total_pass": 10,
            "accurate_pass": 7,
            "duels_won": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 5,
            "crosses_total": 4,
            "crosses_accurate": 0,
            "touches": 24,
            "possession_lost": 9.7926,
            "dispossessed": 1.0308,
            "duels_lost": 7,
            "aerial_won": 0,
            "aerial_lost": 2,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 2,
            "total_contest": 2,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 3,
            "fouls_drawn": 2,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 9,
            "total_progression": 45,
            "progressive_carries": 3,
            "total_shots": 0,
            "offsides": 2,
            "yellowCards": 0.0,
            "redCards": 0.0,
            "ownGoals": 0.0,
            "minutesPct": 32.2,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "opponent_faced": "Morgan Gibbs-White",
            "matchup_zone": "Midfield lane",
            "antagonist_source": "midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363642.0,
              "match_date": "2026-09-13 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Brighton",
              "home_score_current": 0.0,
              "away_score_current": 5.0,
              "team_side": "home",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Coventry",
              "opponent": "Brighton",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363263.0,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 71,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0019,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 6,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 58,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0556,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 8,
                "key_pass": 1,
                "clearances": 2,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3588,
            "combined_rank_score": 1556.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 915.0,
            "sofascore_rating": 6.5,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2197.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "projected_match_rating": 6.9262,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ephron Mason-Clark",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alisson Santos",
                  "ranking": 3583
                },
                {
                  "player_name": "Dakonam Djené",
                  "ranking": 3584
                },
                {
                  "player_name": "Álvaro Ferllo",
                  "ranking": 3585
                },
                {
                  "player_name": "Sivera",
                  "ranking": 3586
                },
                {
                  "player_name": "Kike García",
                  "ranking": 3587
                }
              ],
              "lower": [
                {
                  "player_name": "Zubeldia",
                  "ranking": 3589
                },
                {
                  "player_name": "Hugo Rincón",
                  "ranking": 3590
                },
                {
                  "player_name": "Christos Zafeiris",
                  "ranking": 3591
                },
                {
                  "player_name": "Luiz Felipe",
                  "ranking": 3592
                },
                {
                  "player_name": "Catena",
                  "ranking": 3593
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.381,
          "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",
              "numberOfSprints",
              "kilometersCovered",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "intensity_index",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "rating"
            ],
            "history_matches": 2,
            "data_confidence": 0.381,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0308,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "minutes": 58.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.04
            },
            "rationale": "XGBoost regressor (M_service) evaluated 2 historical appearances across 5 target models; FBref 2026-2027 prior blended (Premier League, Coventry City, rel: 0.04, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 5 target models",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0628,
                "assists": 0,
                "expected_goals": 0.0805,
                "rating": 6.7192,
                "minutes": 64,
                "total_pass": 10,
                "accurate_pass": 7,
                "duels_won": 2,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 6,
                "accurate_opp_half_passes": 4,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 23,
                "possession_lost": 9.5,
                "dispossessed": 1.0,
                "duels_lost": 6,
                "aerial_won": 0,
                "aerial_lost": 2,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 2,
                "total_contest": 2,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 2,
                "fouls_drawn": 2,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 8,
                "total_progression": 43,
                "progressive_carries": 2
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:48.236605+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 461,
                    "rows": 1422
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 71.0,
                    "is_starting": true,
                    "weight": 0.5405,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 58.0,
                    "is_starting": true,
                    "weight": 0.4595,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 1.0,
                  "ballRecovery_p90": 3.4815,
                  "ballRecovery": 2.5405,
                  "intensity_index": 9.172,
                  "expectedAssists": 0.0266,
                  "kilometersCovered": 7.5103
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.8536134362220764,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0551
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0489
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0393
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.035
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 0.9691,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0555
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0499
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0319
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0256
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0225
                        }
                      ],
                      "others": -0.0749,
                      "total": 0.8536
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.06280184537172318,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "cross_creative_contribution",
                        "importance": 0.0714
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0375
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0356
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0345
                      }
                    ],
                    "decomposition": {
                      "base": 0.0929,
                      "items": [
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0129
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0117
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0085
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0073
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": 0.0067
                        }
                      ],
                      "others": -0.0222,
                      "total": 0.0628
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.13900884985923767,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0378
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0368
                      },
                      {
                        "name": "cross_accuracy",
                        "importance": 0.036
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0315
                      }
                    ],
                    "decomposition": {
                      "base": 0.0956,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": 0.022
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0094
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": 0.0071
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0059
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0055
                        }
                      ],
                      "others": 0.0123,
                      "total": 0.139
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.08045274019241333,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.077
                      },
                      {
                        "name": "intensity_index",
                        "importance": 0.0622
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0454
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0399
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0384
                      }
                    ],
                    "decomposition": {
                      "base": 0.1087,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0224
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0171
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": 0.0055
                        },
                        {
                          "name": "defensive_midfield_actions",
                          "contribution": 0.0054
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0053
                        }
                      ],
                      "others": 0.0057,
                      "total": 0.0805
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.719249248504639,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "ballRecovery_p90",
                        "importance": 0.0847
                      },
                      {
                        "name": "ballRecovery",
                        "importance": 0.0836
                      },
                      {
                        "name": "kilometersCovered",
                        "importance": 0.0597
                      },
                      {
                        "name": "defensive_midfield_actions",
                        "importance": 0.05
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0441
                      }
                    ],
                    "decomposition": {
                      "base": 6.8318,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0322
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0197
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": 0.0195
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.0191
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.0177
                        }
                      ],
                      "others": -0.0828,
                      "total": 6.7192
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0308, quality 0.603)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0647,
                "assists": 0,
                "expected_goals": 0.0829,
                "rating": 6.9262,
                "minutes": 66,
                "total_pass": 10,
                "accurate_pass": 7,
                "duels_won": 2,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 3,
                "total_opp_half_passes": 7,
                "accurate_opp_half_passes": 5,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 24,
                "possession_lost": 9.7926,
                "dispossessed": 1.0308,
                "duels_lost": 7,
                "aerial_won": 0,
                "aerial_lost": 2,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 2,
                "total_contest": 2,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 3,
                "fouls_drawn": 2,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 9,
                "total_progression": 45,
                "progressive_carries": 3
              },
              "params": {
                "market_value_eur": 17200000,
                "quality_factor": 0.6027,
                "boost_factor": 1.0308
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0186)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0647,
                "assists": 0,
                "expected_goals": 0.0829,
                "rating": 6.9262,
                "minutes": 66,
                "total_pass": 10,
                "accurate_pass": 7,
                "duels_won": 2,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 3,
                "total_opp_half_passes": 7,
                "accurate_opp_half_passes": 5,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 24,
                "possession_lost": 9.7926,
                "dispossessed": 1.0308,
                "duels_lost": 7,
                "aerial_won": 0,
                "aerial_lost": 2,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 2,
                "total_contest": 2,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 3,
                "fouls_drawn": 2,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 9,
                "total_progression": 45,
                "progressive_carries": 3,
                "total_shots": 0,
                "offsides": 2,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 32.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0
              },
              "params": {
                "blend_weight": 0.0186,
                "history_matches": 2,
                "prior_reliability": 0.04,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 3.6078,
                  "after": 3.7265
                },
                {
                  "stat": "wasFouled",
                  "before": 1.5462,
                  "after": 1.5794
                },
                {
                  "stat": "fouls",
                  "before": 2.577,
                  "after": 2.591
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0647,
                "assists": 0,
                "expected_goals": 0.0829,
                "rating": 6.9262,
                "minutes": 66,
                "total_pass": 10,
                "accurate_pass": 7,
                "duels_won": 2,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 3,
                "total_opp_half_passes": 7,
                "accurate_opp_half_passes": 5,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 24,
                "possession_lost": 9.7926,
                "dispossessed": 1.0308,
                "duels_lost": 7,
                "aerial_won": 0,
                "aerial_lost": 2,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 2,
                "total_contest": 2,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 3,
                "fouls_drawn": 2,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 9,
                "total_progression": 45,
                "progressive_carries": 3,
                "total_shots": 0,
                "offsides": 2,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 32.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0
              },
              "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,
                "expected_assists": 0.0647,
                "assists": 0,
                "expected_goals": 0.0829,
                "rating": 6.9262,
                "minutes": 66,
                "total_pass": 10,
                "accurate_pass": 7,
                "duels_won": 2,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 3,
                "total_opp_half_passes": 7,
                "accurate_opp_half_passes": 5,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 24,
                "possession_lost": 9.7926,
                "dispossessed": 1.0308,
                "duels_lost": 7,
                "aerial_won": 0,
                "aerial_lost": 2,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 2,
                "total_contest": 2,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 3,
                "fouls_drawn": 2,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 9,
                "total_progression": 45,
                "progressive_carries": 3,
                "total_shots": 0,
                "offsides": 2,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 32.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "opponent_faced": "Morgan Gibbs-White",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Morgan Gibbs-White",
                  "matchup_zone": "Midfield lane"
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0647,
                "assists": 0,
                "expected_goals": 0.0779,
                "rating": 6.9262,
                "minutes": 66,
                "total_pass": 10,
                "accurate_pass": 7,
                "duels_won": 2,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 3,
                "total_opp_half_passes": 7,
                "accurate_opp_half_passes": 5,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 24,
                "possession_lost": 9.7926,
                "dispossessed": 1.0308,
                "duels_lost": 7,
                "aerial_won": 0,
                "aerial_lost": 2,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 2,
                "total_contest": 2,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 3,
                "fouls_drawn": 2,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 9,
                "total_progression": 45,
                "progressive_carries": 3,
                "total_shots": 0,
                "offsides": 2,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 32.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "opponent_faced": "Morgan Gibbs-White",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.0829,
                  "after": 0.0779
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 4, fifa_overall 75.0)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0647,
                "assists": 0,
                "expected_goals": 0.0779,
                "rating": 6.9262,
                "minutes": 66,
                "total_pass": 10,
                "accurate_pass": 7,
                "duels_won": 2,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 3,
                "total_opp_half_passes": 7,
                "accurate_opp_half_passes": 5,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 24,
                "possession_lost": 9.7926,
                "dispossessed": 1.0308,
                "duels_lost": 7,
                "aerial_won": 0,
                "aerial_lost": 2,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 2,
                "total_contest": 2,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 3,
                "fouls_drawn": 2,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 9,
                "total_progression": 45,
                "progressive_carries": 3,
                "total_shots": 0,
                "offsides": 2,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 32.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "opponent_faced": "Morgan Gibbs-White",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.0
              },
              "params": {
                "match_squad_rank": 4,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3588,
                "fifa_rank": 2197.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0647,
                "assists": 0,
                "expected_goals": 0.0779,
                "rating": 6.9262,
                "minutes": 66,
                "total_pass": 10,
                "accurate_pass": 7,
                "duels_won": 2,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 3,
                "total_opp_half_passes": 7,
                "accurate_opp_half_passes": 5,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 24,
                "possession_lost": 9.7926,
                "dispossessed": 1.0308,
                "duels_lost": 7,
                "aerial_won": 0,
                "aerial_lost": 2,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 2,
                "total_contest": 2,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 3,
                "fouls_drawn": 2,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 9,
                "total_progression": 45,
                "progressive_carries": 3,
                "total_shots": 0,
                "offsides": 2,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 32.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "opponent_faced": "Morgan Gibbs-White",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.3545,
                "squad_weight_total": 14.1256,
                "weight_share": 0.0251,
                "position_multiplier": 0.78
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0647,
                "assists": 0,
                "expected_goals": 0.0779,
                "rating": 6.9262,
                "minutes": 66,
                "total_pass": 10,
                "accurate_pass": 7,
                "duels_won": 2,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 3,
                "total_opp_half_passes": 7,
                "accurate_opp_half_passes": 5,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 24,
                "possession_lost": 9.7926,
                "dispossessed": 1.0308,
                "duels_lost": 7,
                "aerial_won": 0,
                "aerial_lost": 2,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 2,
                "total_contest": 2,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 3,
                "fouls_drawn": 2,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 9,
                "total_progression": 45,
                "progressive_carries": 3,
                "total_shots": 0,
                "offsides": 2,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 32.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "opponent_faced": "Morgan Gibbs-White",
                "matchup_zone": "Midfield lane",
                "antagonist_source": "midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 1.2489,
                "squad_weight_total": 8.6976,
                "weight_share": 0.1436,
                "position_multiplier": 1.45
              }
            }
          ]
        },
        "Gustavo Hamer": {
          "player_id": 837495,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 38,
          "height": 169,
          "market_value": 14700000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0467,
            "assists": 0,
            "expected_goals": 0.0452,
            "rating": 6.9362,
            "minutes": 13,
            "total_pass": 7,
            "accurate_pass": 6,
            "duels_won": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 0,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 2.7308,
            "dispossessed": 0.0,
            "duels_lost": 2,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 0,
            "total_progression": 0,
            "progressive_carries": 0,
            "total_shots": 1,
            "offsides": 0,
            "yellowCards": 0.0,
            "redCards": 0.0,
            "ownGoals": 0.0,
            "minutesPct": 16.1,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.6,
            "crosses_attempted": 2.5,
            "duel_win_rate": 0.351,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "Right Wingback vs Left Winger — Tracking Run Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Igor Jesus",
            "opponent_faced": "Igor Jesus",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16363263.0,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 11,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 19,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0164,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 11
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 5,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3612,
            "combined_rank_score": 1584.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 941.0,
            "sofascore_rating": 6.45,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2227.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "starter",
            "projected_match_rating": 6.9362,
            "source_file": "data/player_rankings.csv",
            "player_name": "Gustavo Hamer",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yeremay",
                  "ranking": 3607
                },
                {
                  "player_name": "Javi Guerra",
                  "ranking": 3608
                },
                {
                  "player_name": "Ramiro Carrera",
                  "ranking": 3609
                },
                {
                  "player_name": "Mateus Mané",
                  "ranking": 3610
                },
                {
                  "player_name": "Batista Mendy",
                  "ranking": 3611
                }
              ],
              "lower": [
                {
                  "player_name": "Fernando Zampedri",
                  "ranking": 3613
                },
                {
                  "player_name": "Sam Johnstone",
                  "ranking": 3614
                },
                {
                  "player_name": "Igor Júlio",
                  "ranking": 3615
                },
                {
                  "player_name": "Arribas",
                  "ranking": 3616
                },
                {
                  "player_name": "Lukáš Červ",
                  "ranking": 3617
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.441,
          "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",
              "numberOfSprints",
              "kilometersCovered",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "intensity_index",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.441,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "market_value_adjustment": 1.0228,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "minutes": 29.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "shots_per90": 0.0,
              "prior_reliability": 0.02
            },
            "rationale": "XGBoost regressor (M_service) evaluated 3 historical appearances across 5 target models; FBref 2026-2027 prior blended (Premier League, Coventry City, rel: 0.02, gls/90: 0.0, ast/90: 0.0)."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 5 target models",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0457,
                "assists": 0,
                "expected_goals": 0.047,
                "rating": 6.7818,
                "minutes": 13,
                "total_pass": 7,
                "accurate_pass": 6,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 2.67,
                "dispossessed": 0.0,
                "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": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:48.236605+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 461,
                    "rows": 1422
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 11.0,
                    "is_starting": false,
                    "weight": 0.3887,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.3304,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 8.0,
                    "is_starting": false,
                    "weight": 0.2809,
                    "rating": 6.5
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 1.0,
                  "ballRecovery_p90": 6.3401,
                  "ballRecovery": 0.6696,
                  "intensity_index": 1.5793,
                  "expectedAssists": 0.0058,
                  "kilometersCovered": 1.7513
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.7438730597496033,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0551
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0489
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0393
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.035
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 0.9691,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0657
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": 0.0656
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0643
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.043
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.023
                        }
                      ],
                      "others": -0.0948,
                      "total": 0.7439
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.04566681757569313,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "cross_creative_contribution",
                        "importance": 0.0714
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0375
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0356
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0345
                      }
                    ],
                    "decomposition": {
                      "base": 0.0929,
                      "items": [
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0193
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.007
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0046
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0041
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0035
                        }
                      ],
                      "others": -0.0087,
                      "total": 0.0457
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.08367766439914703,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0378
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0368
                      },
                      {
                        "name": "cross_accuracy",
                        "importance": 0.036
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0315
                      }
                    ],
                    "decomposition": {
                      "base": 0.0956,
                      "items": [
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0075
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": -0.0065
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0053
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0048
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0043
                        }
                      ],
                      "others": 0.0015,
                      "total": 0.0837
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.04699733480811119,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.077
                      },
                      {
                        "name": "intensity_index",
                        "importance": 0.0622
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0454
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0399
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0384
                      }
                    ],
                    "decomposition": {
                      "base": 0.1087,
                      "items": [
                        {
                          "name": "totalShots",
                          "contribution": -0.0168
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0139
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.008
                        },
                        {
                          "name": "intensity_index",
                          "contribution": -0.0066
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0057
                        }
                      ],
                      "others": -0.0107,
                      "total": 0.047
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.781804084777832,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "ballRecovery_p90",
                        "importance": 0.0847
                      },
                      {
                        "name": "ballRecovery",
                        "importance": 0.0836
                      },
                      {
                        "name": "kilometersCovered",
                        "importance": 0.0597
                      },
                      {
                        "name": "defensive_midfield_actions",
                        "importance": 0.05
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0441
                      }
                    ],
                    "decomposition": {
                      "base": 6.8318,
                      "items": [
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0251
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": -0.0247
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0206
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0168
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": 0.0152
                        }
                      ],
                      "others": -0.0192,
                      "total": 6.7818
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0228, quality 0.576)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0467,
                "assists": 0,
                "expected_goals": 0.0481,
                "rating": 6.9362,
                "minutes": 13,
                "total_pass": 7,
                "accurate_pass": 6,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 2.7308,
                "dispossessed": 0.0,
                "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": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "params": {
                "market_value_eur": 14700000,
                "quality_factor": 0.5759,
                "boost_factor": 1.0228
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0081)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0467,
                "assists": 0,
                "expected_goals": 0.0481,
                "rating": 6.9362,
                "minutes": 13,
                "total_pass": 7,
                "accurate_pass": 6,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 2.7308,
                "dispossessed": 0.0,
                "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": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 16.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": -3.1
              },
              "params": {
                "blend_weight": 0.0081,
                "history_matches": 3,
                "prior_reliability": 0.02,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 0.0,
                  "after": 0.0271
                },
                {
                  "stat": "fouls",
                  "before": 0.0,
                  "after": 0.0271
                }
              ]
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0467,
                "assists": 0,
                "expected_goals": 0.0481,
                "rating": 6.9362,
                "minutes": 13,
                "total_pass": 7,
                "accurate_pass": 6,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 2.7308,
                "dispossessed": 0.0,
                "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": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 16.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0
              },
              "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,
                "expected_assists": 0.0467,
                "assists": 0,
                "expected_goals": 0.0481,
                "rating": 6.9362,
                "minutes": 13,
                "total_pass": 7,
                "accurate_pass": 6,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 2.7308,
                "dispossessed": 0.0,
                "duels_lost": 2,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 1,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 16.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.6,
                "crosses_attempted": 2.5,
                "duel_win_rate": 0.351,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Right Wingback vs Left Winger — Tracking Run Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Igor Jesus",
                "opponent_faced": "Igor Jesus",
                "antagonist_source": "attacking_duel, midfield_pairing"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Igor Jesus",
                  "matchup_zone": "Right Wingback vs Left Winger — Tracking Run Duel",
                  "duel_win_rate": 0.351,
                  "pressing_faced": "MEDIUM",
                  "numerical_situation": "1v1"
                }
              },
              "changes": [
                {
                  "stat": "totalShots",
                  "before": 0.0,
                  "after": 0.9
                },
                {
                  "stat": "aerialWon",
                  "before": 0.0,
                  "after": 0.8
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0467,
                "assists": 0,
                "expected_goals": 0.0452,
                "rating": 6.9362,
                "minutes": 13,
                "total_pass": 7,
                "accurate_pass": 6,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 2.7308,
                "dispossessed": 0.0,
                "duels_lost": 2,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 1,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 16.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.6,
                "crosses_attempted": 2.5,
                "duel_win_rate": 0.351,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Right Wingback vs Left Winger — Tracking Run Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Igor Jesus",
                "opponent_faced": "Igor Jesus",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 12, fifa_overall 75.0)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0467,
                "assists": 0,
                "expected_goals": 0.0452,
                "rating": 6.9362,
                "minutes": 13,
                "total_pass": 7,
                "accurate_pass": 6,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 2.7308,
                "dispossessed": 0.0,
                "duels_lost": 2,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 1,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 16.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.6,
                "crosses_attempted": 2.5,
                "duel_win_rate": 0.351,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Right Wingback vs Left Winger — Tracking Run Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Igor Jesus",
                "opponent_faced": "Igor Jesus",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.0
              },
              "params": {
                "match_squad_rank": 12,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3612,
                "fifa_rank": 2227.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 75.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0467,
                "assists": 0,
                "expected_goals": 0.0452,
                "rating": 6.9362,
                "minutes": 13,
                "total_pass": 7,
                "accurate_pass": 6,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 2.7308,
                "dispossessed": 0.0,
                "duels_lost": 2,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 1,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 16.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.6,
                "crosses_attempted": 2.5,
                "duel_win_rate": 0.351,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Right Wingback vs Left Winger — Tracking Run Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Igor Jesus",
                "opponent_faced": "Igor Jesus",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 0.3318,
                "squad_weight_total": 14.1256,
                "weight_share": 0.0235,
                "position_multiplier": 0.78
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0467,
                "assists": 0,
                "expected_goals": 0.0452,
                "rating": 6.9362,
                "minutes": 13,
                "total_pass": 7,
                "accurate_pass": 6,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 0,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 9,
                "possession_lost": 2.7308,
                "dispossessed": 0.0,
                "duels_lost": 2,
                "aerial_won": 1,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 1,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 16.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.6,
                "crosses_attempted": 2.5,
                "duel_win_rate": 0.351,
                "pressing_faced": "MEDIUM",
                "matchup_zone": "Right Wingback vs Left Winger — Tracking Run Duel",
                "numerical_situation": "1v1",
                "opponent_defenders": "Igor Jesus",
                "opponent_faced": "Igor Jesus",
                "antagonist_source": "attacking_duel, midfield_pairing",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 75.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 1.1413,
                "squad_weight_total": 8.6976,
                "weight_share": 0.1312,
                "position_multiplier": 1.45
              }
            }
          ]
        },
        "Sidiki Cherif": {
          "player_id": 1514916,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 49,
          "height": 188,
          "market_value": 16900000,
          "stats": {
            "expected_goals": 0.1844,
            "goal_rate": 0.18,
            "goals": 0,
            "total_shots": 3,
            "shots_on_target": 2,
            "expected_assists": 0.104,
            "duels_won": 4,
            "aerial_won": 1,
            "rating": 7.1,
            "minutes": 90,
            "total_pass": 31,
            "accurate_pass": 23,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 17,
            "accurate_opp_half_passes": 12,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 45,
            "possession_lost": 9.2,
            "dispossessed": 1.2,
            "duels_lost": 5,
            "aerial_lost": 1,
            "total_contest": 6,
            "won_contest": 3,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "assists": 0,
            "shots_off_target": 1,
            "key_pass": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.22,
            "offsides": 1,
            "ball_carries": 22,
            "total_progression": 55,
            "progressive_carries": 6,
            "dribbles_attempted": 3,
            "dribbles_successful": 0.5,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.205,
            "pressing_faced": "ULTRA_HIGH",
            "matchup_zone": "Shadow Striker vs CB + Mid Cover — Layered Defense",
            "numerical_situation": "1v2",
            "opponent_defenders": "Ousmane Diomande, Morgan Gibbs-White",
            "opponent_faced": "Ousmane Diomande, Morgan Gibbs-White",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 72.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 4195,
            "combined_rank_score": 2226.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4352.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "projected_match_rating": 7.1,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sidiki Cherif",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Gonzalo",
                  "ranking": 4190
                },
                {
                  "player_name": "José Sosa",
                  "ranking": 4191
                },
                {
                  "player_name": "Jason Knight",
                  "ranking": 4192
                },
                {
                  "player_name": "Pablo Marín",
                  "ranking": 4193
                },
                {
                  "player_name": "Yvan Neyou",
                  "ranking": 4194
                }
              ],
              "lower": [
                {
                  "player_name": "Miguel Rodríguez",
                  "ranking": 4196
                },
                {
                  "player_name": "Federico Navarro",
                  "ranking": 4197
                },
                {
                  "player_name": "Yukinari Sugawara",
                  "ranking": 4198
                },
                {
                  "player_name": "Patrick Pentz",
                  "ranking": 4199
                },
                {
                  "player_name": "Álex Sancris",
                  "ranking": 4200
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "F_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "market_value_adjustment": 0.5995,
            "fbref_prior_metrics": null,
            "rationale": "Market-value baseline (€16,900,000) applied for position F (quality factor 0.60)."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position F (quality 0.60)",
              "stats": {
                "expected_goals": 0.288,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.104,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.22,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6
              },
              "params": {
                "market_value_eur": 16900000,
                "quality_factor": 0.5995
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.288,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.104,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.22,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6
              },
              "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.1962,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.104,
                "duels_won": 4,
                "aerial_won": 1,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.22,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "dribbles_attempted": 3,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.205,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Shadow Striker vs CB + Mid Cover — Layered Defense",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ousmane Diomande, Morgan Gibbs-White",
                "opponent_faced": "Ousmane Diomande, Morgan Gibbs-White",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ousmane Diomande, Morgan Gibbs-White",
                  "matchup_zone": "Shadow Striker vs CB + Mid Cover — Layered Defense",
                  "duel_win_rate": 0.205,
                  "pressing_faced": "ULTRA_HIGH",
                  "numerical_situation": "1v2",
                  "xg_override": 0.1962
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 1.8,
                  "after": 1.2
                },
                {
                  "stat": "totalShots",
                  "before": 2.9,
                  "after": 2.5
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.288,
                  "after": 0.1962
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "expected_goals": 0.1844,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.104,
                "duels_won": 4,
                "aerial_won": 1,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.22,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "dribbles_attempted": 3,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.205,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Shadow Striker vs CB + Mid Cover — Layered Defense",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ousmane Diomande, Morgan Gibbs-White",
                "opponent_faced": "Ousmane Diomande, Morgan Gibbs-White",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.1962,
                  "after": 0.1844
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 5, fifa_overall 72.0)",
              "stats": {
                "expected_goals": 0.1844,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.104,
                "duels_won": 4,
                "aerial_won": 1,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.22,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "dribbles_attempted": 3,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.205,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Shadow Striker vs CB + Mid Cover — Layered Defense",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ousmane Diomande, Morgan Gibbs-White",
                "opponent_faced": "Ousmane Diomande, Morgan Gibbs-White",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 72.0
              },
              "params": {
                "match_squad_rank": 5,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4195,
                "fifa_rank": 4352.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 72.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.1844,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.104,
                "duels_won": 4,
                "aerial_won": 1,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.22,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "dribbles_attempted": 3,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.205,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Shadow Striker vs CB + Mid Cover — Layered Defense",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ousmane Diomande, Morgan Gibbs-White",
                "opponent_faced": "Ousmane Diomande, Morgan Gibbs-White",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 3.5853,
                "squad_weight_total": 14.1256,
                "weight_share": 0.2538,
                "position_multiplier": 1.45
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.1844,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.104,
                "duels_won": 4,
                "aerial_won": 1,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.22,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "dribbles_attempted": 3,
                "dribbles_successful": 0.5,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.205,
                "pressing_faced": "ULTRA_HIGH",
                "matchup_zone": "Shadow Striker vs CB + Mid Cover — Layered Defense",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ousmane Diomande, Morgan Gibbs-White",
                "opponent_faced": "Ousmane Diomande, Morgan Gibbs-White",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 72.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.8722,
                "squad_weight_total": 8.6976,
                "weight_share": 0.1003,
                "position_multiplier": 0.85
              }
            }
          ]
        },
        "Haji Wright": {
          "player_id": 818391,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 11,
          "height": 193,
          "market_value": 16600000,
          "stats": {
            "expected_goals": 0.1738,
            "goal_rate": 0.18,
            "goals": 0,
            "total_shots": 3,
            "shots_on_target": 2,
            "expected_assists": 0.103,
            "duels_won": 4,
            "aerial_won": 2,
            "rating": 7.1,
            "minutes": 90,
            "total_pass": 31,
            "accurate_pass": 23,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 17,
            "accurate_opp_half_passes": 12,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 45,
            "possession_lost": 9.2,
            "dispossessed": 1.2,
            "duels_lost": 5,
            "aerial_lost": 1,
            "total_contest": 6,
            "won_contest": 3,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "assists": 0,
            "shots_off_target": 1,
            "key_pass": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.219,
            "offsides": 1,
            "ball_carries": 22,
            "total_progression": 55,
            "progressive_carries": 6,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "HIGH",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Ousmane Diomande, Nikola Milenković",
            "opponent_faced": "Ousmane Diomande, Nikola Milenković",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3672,
            "combined_rank_score": 1628.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 578.0,
            "sofascore_rating": 6.8,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2679.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "projected_match_rating": 7.1,
            "source_file": "data/player_rankings.csv",
            "player_name": "Haji Wright",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Raphael Veiga",
                  "ranking": 3667
                },
                {
                  "player_name": "Marcel Ruiz",
                  "ranking": 3668
                },
                {
                  "player_name": "Alemão",
                  "ranking": 3669
                },
                {
                  "player_name": "José Paradela",
                  "ranking": 3670
                },
                {
                  "player_name": "Lucas Høgsberg",
                  "ranking": 3671
                }
              ],
              "lower": [
                {
                  "player_name": "Willer Ditta",
                  "ranking": 3673
                },
                {
                  "player_name": "Eren Elmalı",
                  "ranking": 3674
                },
                {
                  "player_name": "Erik Lira",
                  "ranking": 3675
                },
                {
                  "player_name": "Milan Borjan",
                  "ranking": 3676
                },
                {
                  "player_name": "Hugo Sotelo",
                  "ranking": 3677
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "F_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "market_value_adjustment": 0.5964,
            "fbref_prior_metrics": null,
            "rationale": "Market-value baseline (€16,600,000) applied for position F (quality factor 0.60)."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position F (quality 0.60)",
              "stats": {
                "expected_goals": 0.287,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.103,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.219,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6
              },
              "params": {
                "market_value_eur": 16600000,
                "quality_factor": 0.5964
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.287,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.103,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.219,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6
              },
              "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.185,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.103,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.219,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ousmane Diomande, Nikola Milenković",
                "opponent_faced": "Ousmane Diomande, Nikola Milenković",
                "antagonist_source": "attacking_duel"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Ousmane Diomande, Nikola Milenković",
                  "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                  "duel_win_rate": 0.18,
                  "pressing_faced": "HIGH",
                  "numerical_situation": "1v2",
                  "xg_override": 0.185
                }
              },
              "changes": [
                {
                  "stat": "aerialWon",
                  "before": 1.8,
                  "after": 2.1
                },
                {
                  "stat": "totalShots",
                  "before": 2.8,
                  "after": 2.5
                },
                {
                  "stat": "expectedGoals",
                  "before": 0.287,
                  "after": 0.185
                }
              ]
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "expected_goals": 0.1738,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.103,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.219,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ousmane Diomande, Nikola Milenković",
                "opponent_faced": "Ousmane Diomande, Nikola Milenković",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.185,
                  "after": 0.1738
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 6, fifa_overall 74.0)",
              "stats": {
                "expected_goals": 0.1738,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.103,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.219,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ousmane Diomande, Nikola Milenković",
                "opponent_faced": "Ousmane Diomande, Nikola Milenković",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 74.0
              },
              "params": {
                "match_squad_rank": 6,
                "squad_role": "starter",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3672,
                "fifa_rank": 2679.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 74.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.1738,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.103,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.219,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ousmane Diomande, Nikola Milenković",
                "opponent_faced": "Ousmane Diomande, Nikola Milenković",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 3.5242,
                "squad_weight_total": 14.1256,
                "weight_share": 0.2495,
                "position_multiplier": 1.45
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.1738,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.103,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.219,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "dribbles_attempted": 2,
                "dribbles_successful": 0.3,
                "crosses_attempted": 0.0,
                "duel_win_rate": 0.18,
                "pressing_faced": "HIGH",
                "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
                "numerical_situation": "1v2",
                "opponent_defenders": "Ousmane Diomande, Nikola Milenković",
                "opponent_faced": "Ousmane Diomande, Nikola Milenković",
                "antagonist_source": "attacking_duel",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 74.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.8685,
                "squad_weight_total": 8.6976,
                "weight_share": 0.0999,
                "position_multiplier": 0.85
              }
            }
          ]
        },
        "Yann Gboho": {
          "player_id": 911851,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 10,
          "height": 173,
          "market_value": 16600000,
          "stats": {
            "expected_goals": 0.2697,
            "goal_rate": 0.18,
            "goals": 0,
            "total_shots": 3,
            "shots_on_target": 2,
            "expected_assists": 0.103,
            "duels_won": 4,
            "aerial_won": 2,
            "rating": 7.1,
            "minutes": 90,
            "total_pass": 31,
            "accurate_pass": 23,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 17,
            "accurate_opp_half_passes": 12,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 45,
            "possession_lost": 9.2,
            "dispossessed": 1.2,
            "duels_lost": 5,
            "aerial_lost": 1,
            "total_contest": 6,
            "won_contest": 3,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "assists": 0,
            "shots_off_target": 1,
            "key_pass": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.219,
            "offsides": 1,
            "ball_carries": 22,
            "total_progression": 55,
            "progressive_carries": 6,
            "opponent_faced": "Murillo, Neco Williams",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 77.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3489,
            "combined_rank_score": 1475.0,
            "ranking_source": "fifa_csv",
            "ranking_status": "missing_sofascore_player_rating",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 1475.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "projected_match_rating": 7.1,
            "source_file": "data/player_rankings.csv",
            "player_name": "Yann Gboho",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mahdi Camara",
                  "ranking": 3484
                },
                {
                  "player_name": "Saud Abdulhamid",
                  "ranking": 3485
                },
                {
                  "player_name": "Orel Mangala",
                  "ranking": 3486
                },
                {
                  "player_name": "Lassine Sinayoko",
                  "ranking": 3487
                },
                {
                  "player_name": "Tyrhys Dolan",
                  "ranking": 3488
                }
              ],
              "lower": [
                {
                  "player_name": "Ansu Fati",
                  "ranking": 3490
                },
                {
                  "player_name": "Marcus Edwards",
                  "ranking": 3491
                },
                {
                  "player_name": "Ismaël Doukouré",
                  "ranking": 3492
                },
                {
                  "player_name": "Unai Marrero",
                  "ranking": 3493
                },
                {
                  "player_name": "Ilan Kebbal",
                  "ranking": 3494
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "F_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value"
            ],
            "market_value_adjustment": 0.5964,
            "fbref_prior_metrics": null,
            "rationale": "Market-value baseline (€16,600,000) applied for position F (quality factor 0.60)."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position F (quality 0.60)",
              "stats": {
                "expected_goals": 0.287,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.103,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.219,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6
              },
              "params": {
                "market_value_eur": 16600000,
                "quality_factor": 0.5964
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.287,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.103,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.219,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6
              },
              "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.287,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.103,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.219,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "opponent_faced": "Murillo, Neco Williams",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback"
              },
              "params": {
                "duel_context_applied": true,
                "duel_context": {
                  "opponent_faced": "Murillo, Neco Williams",
                  "matchup_zone": "Shape fallback",
                  "xg_override": 0.287
                }
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "expected_goals": 0.2697,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.103,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.219,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "opponent_faced": "Murillo, Neco Williams",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              },
              "changes": [
                {
                  "stat": "expected_goals",
                  "before": 0.287,
                  "after": 0.2697
                }
              ]
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 7, fifa_overall 77.0)",
              "stats": {
                "expected_goals": 0.2697,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.103,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.219,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "opponent_faced": "Murillo, Neco Williams",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "match_squad_rank": 7,
                "squad_role": "starter",
                "ranking_source": "fifa_csv",
                "ranking_status": "missing_sofascore_player_rating",
                "global_player_rank": 3489,
                "fifa_rank": 1475.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 77.0
              }
            },
            {
              "step": "integer_goal_projection",
              "description": "Team scoreline allocation skipped: 0 projected goals",
              "stats": {
                "expected_goals": 0.2697,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.103,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.219,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "opponent_faced": "Murillo, Neco Williams",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_goals": 0,
                "goals_allocated": 0,
                "goal_probability": 0.0,
                "scorer_weight": 4.0526,
                "squad_weight_total": 14.1256,
                "weight_share": 0.2869,
                "position_multiplier": 1.45
              }
            },
            {
              "step": "integer_assist_projection",
              "description": "Team scoreline allocation skipped: 0 projected assists",
              "stats": {
                "expected_goals": 0.2697,
                "goal_rate": 0.18,
                "goals": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "expected_assists": 0.103,
                "duels_won": 4,
                "aerial_won": 2,
                "rating": 7.1,
                "minutes": 90,
                "total_pass": 31,
                "accurate_pass": 23,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_opp_half_passes": 17,
                "accurate_opp_half_passes": 12,
                "crosses_total": 2,
                "crosses_accurate": 1,
                "touches": 45,
                "possession_lost": 9.2,
                "dispossessed": 1.2,
                "duels_lost": 5,
                "aerial_lost": 1,
                "total_contest": 6,
                "won_contest": 3,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 2,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 1,
                "key_pass": 1,
                "interceptions": 0,
                "tackles_won": 1,
                "tackles": 1,
                "clearances": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.219,
                "offsides": 1,
                "ball_carries": 22,
                "total_progression": 55,
                "progressive_carries": 6,
                "opponent_faced": "Murillo, Neco Williams",
                "matchup_zone": "Shape fallback",
                "antagonist_source": "formation_fallback",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 77.0
              },
              "params": {
                "allocation_applied": false,
                "team_assists": 0,
                "assists_allocated": 0,
                "assist_probability": 0.0,
                "provider_weight": 0.8685,
                "squad_weight_total": 8.6976,
                "weight_share": 0.0999,
                "position_multiplier": 0.85
              }
            }
          ]
        }
      },
      "bench_players": {
        "Daniel Bentley": {
          "player_id": 101367,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 25,
          "height": 188,
          "market_value": 730000,
          "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": 3,
            "projected_substitution_expected_count": 2.226,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 70.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 4833,
            "combined_rank_score": 2924.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 257.0,
            "sofascore_rating": 7.1,
            "sofascore_appearances": 3.0,
            "fifa_rank": 5591.0,
            "fifa_overall": 70.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "projected_match_rating": 6.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "Daniel Bentley",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jeanuël Belocian",
                  "ranking": 4828
                },
                {
                  "player_name": "Max Alleyne",
                  "ranking": 4829
                },
                {
                  "player_name": "Herrando",
                  "ranking": 4830
                },
                {
                  "player_name": "Nectarios Triantis",
                  "ranking": 4831
                },
                {
                  "player_name": "Andy Polo",
                  "ranking": 4832
                }
              ],
              "lower": [
                {
                  "player_name": "Marco Pellegrino",
                  "ranking": 4834
                },
                {
                  "player_name": "Álex Muñoz",
                  "ranking": 4835
                },
                {
                  "player_name": "Malick Yalcouyé",
                  "ranking": 4836
                },
                {
                  "player_name": "Juan Ferney Otero",
                  "ranking": 4837
                },
                {
                  "player_name": "Lucas Silva",
                  "ranking": 4838
                }
              ]
            }
          },
          "data_sources": [
            "market_value",
            "fbref_season"
          ],
          "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",
              "fbref_season"
            ],
            "bench_expected_minutes": 4.392222187561249,
            "bench_appearance_prob": 0.10873737216187492,
            "market_value_adjustment": 0.4374,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "sub_appearances": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "Bench projection from market-value prior (€730,000) scaled to 4.4 expected mins; FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position G (quality 0.44)",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.45,
                "rating": 6.8,
                "minutes": 90,
                "total_pass": 27,
                "accurate_pass": 20,
                "total_long_balls": 8,
                "accurate_long_balls": 4,
                "touches": 32,
                "clearances": 1,
                "ball_recovery": 1,
                "high_claims": 0,
                "punches": 0.3,
                "aerial_won": 1,
                "sweeper_actions": 1,
                "sweeper_accurate": 1,
                "saves_inside_box": 1,
                "possession_lost": 2.4,
                "duels_won": 0,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 21,
                "accurate_own_half_passes": 16
              },
              "params": {
                "market_value_eur": 730000,
                "quality_factor": 0.4374
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0000)",
              "stats": {
                "saves": 3,
                "goals_prevented": 0.45,
                "rating": 6.8,
                "minutes": 90,
                "total_pass": 27,
                "accurate_pass": 20,
                "total_long_balls": 8,
                "accurate_long_balls": 4,
                "touches": 32,
                "clearances": 1,
                "ball_recovery": 1,
                "high_claims": 0,
                "punches": 0.3,
                "aerial_won": 1,
                "sweeper_actions": 1,
                "sweeper_accurate": 1,
                "saves_inside_box": 1,
                "possession_lost": 2.4,
                "duels_won": 0,
                "duels_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "total_own_half_passes": 21,
                "accurate_own_half_passes": 16
              },
              "params": {
                "blend_weight": 0.0,
                "history_matches": 0,
                "prior_reliability": 0.0,
                "competition": "Premier League",
                "squad": "Coventry City"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 4.4 expected minutes (appearance prob 0.11)",
              "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
              },
              "params": {
                "expected_minutes": 4.39,
                "appearance_probability": 0.109
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "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
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 18, fifa_overall 70.0)",
              "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": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "goals": 0,
                "projected_goals": 0,
                "goal_probability": 0.0,
                "assists": 0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 70.0
              },
              "params": {
                "match_squad_rank": 18,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4833,
                "fifa_rank": 5591.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 70.0
              }
            }
          ]
        },
        "Liam Kitching": {
          "player_id": 921006,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 15,
          "height": 186,
          "market_value": 15200000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "duels_won": 1,
            "total_pass": 7,
            "accurate_pass": 6,
            "expected_goals": 0.0031,
            "rating": 7.0,
            "minutes": 14,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 1.0842,
            "dispossessed": 0.5,
            "duels_lost": 1,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_assists": 0.009,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0024,
            "key_pass": 0,
            "ball_carries": 3,
            "total_progression": 10,
            "progressive_carries": 1,
            "bench_appearance_probability": 0.325,
            "bench_expected_minutes": 14.14,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.226,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 73.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3718,
            "combined_rank_score": 1691.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 3270.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "substitute",
            "projected_match_rating": 7.0,
            "source_file": "data/player_rankings.csv",
            "player_name": "Liam Kitching",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Santiago Núñez",
                  "ranking": 3713
                },
                {
                  "player_name": "Viktor Johansson",
                  "ranking": 3714
                },
                {
                  "player_name": "Isaac Romero",
                  "ranking": 3715
                },
                {
                  "player_name": "Roman Yaremchuk",
                  "ranking": 3716
                },
                {
                  "player_name": "Joe Gelhardt",
                  "ranking": 3717
                }
              ],
              "lower": [
                {
                  "player_name": "Andreas Tetteh",
                  "ranking": 3719
                },
                {
                  "player_name": "Kiril Despodov",
                  "ranking": 3720
                },
                {
                  "player_name": "Lamare Bogarde",
                  "ranking": 3721
                },
                {
                  "player_name": "Darius Olaru",
                  "ranking": 3722
                },
                {
                  "player_name": "Jairo Concha",
                  "ranking": 3723
                }
              ]
            }
          },
          "data_sources": [
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.25,
          "history_matches": 0,
          "xgboost_reasoning": {
            "model_source": "market_value_prior",
            "position_service": "D_service",
            "features_evaluated": [],
            "targets_predicted": [],
            "history_matches": 0,
            "data_confidence": 0.25,
            "data_sources": [
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 14.142160785804542,
            "bench_appearance_prob": 0.3246436720820246,
            "market_value_adjustment": 0.5814,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 0.0,
              "starts": 0.0,
              "sub_appearances": 0.0,
              "prior_reliability": 0.0
            },
            "rationale": "Bench projection from market-value prior (€15,200,000) scaled to 14.1 expected mins; FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "market_value_prior",
              "description": "Market-value baseline for position D (quality 0.58)",
              "stats": {
                "interceptions": 2,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 6,
                "total_pass": 47,
                "accurate_pass": 37,
                "expected_goals": 0.02,
                "rating": 7.0,
                "minutes": 90,
                "total_long_balls": 6,
                "accurate_long_balls": 3,
                "total_own_half_passes": 30,
                "accurate_own_half_passes": 24,
                "total_opp_half_passes": 11,
                "accurate_opp_half_passes": 8,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 62,
                "possession_lost": 6.9,
                "dispossessed": 0.5,
                "duels_lost": 4,
                "aerial_lost": 2,
                "total_contest": 4,
                "won_contest": 2,
                "ball_recovery": 5,
                "challenges_lost": 1,
                "fouls": 1,
                "fouls_drawn": 1,
                "blocks": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_assists": 0.057,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.015,
                "key_pass": 1,
                "ball_carries": 22,
                "total_progression": 65,
                "progressive_carries": 5
              },
              "params": {
                "market_value_eur": 15200000,
                "quality_factor": 0.5814
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0000)",
              "stats": {
                "interceptions": 2,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 6,
                "total_pass": 47,
                "accurate_pass": 37,
                "expected_goals": 0.02,
                "rating": 7.0,
                "minutes": 90,
                "total_long_balls": 6,
                "accurate_long_balls": 3,
                "total_own_half_passes": 30,
                "accurate_own_half_passes": 24,
                "total_opp_half_passes": 11,
                "accurate_opp_half_passes": 8,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 62,
                "possession_lost": 6.9,
                "dispossessed": 0.5,
                "duels_lost": 4,
                "aerial_lost": 2,
                "total_contest": 4,
                "won_contest": 2,
                "ball_recovery": 5,
                "challenges_lost": 1,
                "fouls": 1,
                "fouls_drawn": 1,
                "blocks": 1,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_assists": 0.057,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.015,
                "key_pass": 1,
                "ball_carries": 22,
                "total_progression": 65,
                "progressive_carries": 5
              },
              "params": {
                "blend_weight": 0.0,
                "history_matches": 0,
                "prior_reliability": 0.0,
                "competition": "Premier League",
                "squad": "Coventry City"
              }
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 14.1 expected minutes (appearance prob 0.32)",
              "stats": {
                "interceptions": 0,
                "tackles": 0,
                "tackles_won": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "expected_goals": 0.0031,
                "rating": 7.0,
                "minutes": 14,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_own_half_passes": 5,
                "accurate_own_half_passes": 4,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 10,
                "possession_lost": 1.0842,
                "dispossessed": 0.5,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 1,
                "won_contest": 0,
                "ball_recovery": 1,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_assists": 0.009,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0024,
                "key_pass": 0,
                "ball_carries": 3,
                "total_progression": 10,
                "progressive_carries": 1,
                "bench_appearance_probability": 0.325,
                "bench_expected_minutes": 14.14
              },
              "params": {
                "expected_minutes": 14.14,
                "appearance_probability": 0.325
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0,
                "tackles": 0,
                "tackles_won": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "expected_goals": 0.0031,
                "rating": 7.0,
                "minutes": 14,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_own_half_passes": 5,
                "accurate_own_half_passes": 4,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 10,
                "possession_lost": 1.0842,
                "dispossessed": 0.5,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 1,
                "won_contest": 0,
                "ball_recovery": 1,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_assists": 0.009,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0024,
                "key_pass": 0,
                "ball_carries": 3,
                "total_progression": 10,
                "progressive_carries": 1,
                "bench_appearance_probability": 0.325,
                "bench_expected_minutes": 14.14
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 11, fifa_overall 73.0)",
              "stats": {
                "interceptions": 0,
                "tackles": 0,
                "tackles_won": 0,
                "clearances": 0,
                "aerial_won": 0,
                "duels_won": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "expected_goals": 0.0031,
                "rating": 7.0,
                "minutes": 14,
                "total_long_balls": 1,
                "accurate_long_balls": 1,
                "total_own_half_passes": 5,
                "accurate_own_half_passes": 4,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 10,
                "possession_lost": 1.0842,
                "dispossessed": 0.5,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 1,
                "won_contest": 0,
                "ball_recovery": 1,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_assists": 0.009,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0024,
                "key_pass": 0,
                "ball_carries": 3,
                "total_progression": 10,
                "progressive_carries": 1,
                "bench_appearance_probability": 0.325,
                "bench_expected_minutes": 14.14,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 11,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3718,
                "fifa_rank": 3270.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 73.0
              }
            }
          ]
        },
        "Jay DaSilva": {
          "player_id": 791985,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 3,
          "height": 170,
          "market_value": 8700000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 6.6153,
            "minutes": 14,
            "total_pass": 6,
            "accurate_pass": 5,
            "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": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 1.5928,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0077,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 10,
            "progressive_carries": 0,
            "key_pass": 0,
            "offsides": 0,
            "yellowCards": 0.0,
            "redCards": 0.0,
            "ownGoals": 0.0,
            "shotAccuracy": 100.0,
            "shotConversion": 0.0,
            "minutesPct": 100.0,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "bench_appearance_probability": 0.223,
            "bench_expected_minutes": 13.85,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.226,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_type": "played",
              "match_id": 16363642.0,
              "match_date": "2026-09-13 13:00:00 UTC",
              "league_name": "Premier League",
              "league_id": 17.0,
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": 96668.0,
              "season_name": "Premier League 26/27",
              "season_year": "26/27",
              "home_team": "Coventry",
              "away_team": "Brighton",
              "home_score_current": 0.0,
              "away_score_current": 5.0,
              "team_side": "home",
              "status_code": 100.0,
              "status_type": "finished",
              "status_description": "Ended",
              "player_status": "starter",
              "is_starting_11": true,
              "team": "Coventry",
              "opponent": "Brighton",
              "stats": {},
              "has_player_stats": false,
              "source": "depth_chart.csv"
            },
            {
              "match_id": 16363263.0,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 85,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0845,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 10,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.1831,
                "expected_assists": 0.0455,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 69,
                "accurate_pass": 61,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assists": 0,
                "expected_assists": 0.0232,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 22,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3727,
            "combined_rank_score": 1711.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 5.0,
            "fifa_rank": 3265.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "substitute",
            "projected_match_rating": 6.6153,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jay DaSilva",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Darius Olaru",
                  "ranking": 3722
                },
                {
                  "player_name": "Jairo Concha",
                  "ranking": 3723
                },
                {
                  "player_name": "Facundo Bernal",
                  "ranking": 3724
                },
                {
                  "player_name": "Roberto Fernández",
                  "ranking": 3725
                },
                {
                  "player_name": "Veljko Birmančević",
                  "ranking": 3726
                }
              ],
              "lower": [
                {
                  "player_name": "Oskar Pietuszewski",
                  "ranking": 3728
                },
                {
                  "player_name": "Honest Ahanor",
                  "ranking": 3729
                },
                {
                  "player_name": "Alexandru Mitriță",
                  "ranking": 3730
                },
                {
                  "player_name": "Fabio Carvalho",
                  "ranking": 3731
                },
                {
                  "player_name": "Facundo Buonanotte",
                  "ranking": 3732
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.457,
          "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",
              "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",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.457,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 13.847985272763946,
            "bench_appearance_prob": 0.223,
            "market_value_adjustment": 1.0021,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.1333
            },
            "rationale": "Bench projection scaled from XGBoost D_service (3 historical appearances) to 13.8 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 6 target models",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "rating": 6.6013,
                "minutes": 88,
                "total_pass": 37,
                "accurate_pass": 31,
                "duels_won": 4,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 14,
                "accurate_own_half_passes": 11,
                "total_opp_half_passes": 23,
                "accurate_opp_half_passes": 20,
                "crosses_total": 3,
                "crosses_accurate": 0,
                "touches": 55,
                "possession_lost": 10.33,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 0,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 2,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.05,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 13,
                "total_progression": 65,
                "progressive_carries": 1,
                "key_pass": 0
              },
              "trace": {
                "model": {
                  "position_service": "D",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:44.724055+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 374,
                    "rows": 1289
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 85.0,
                    "is_starting": true,
                    "weight": 0.3887,
                    "rating": 6.9
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.0
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 90.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.0
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "accuratePass": 30.2216,
                  "touches_p90": 54.1499,
                  "possessionLostCtrl": 10.2138,
                  "totalClearance": 2.1817,
                  "aerialWon": 1.0
                },
                "per_target": [
                  {
                    "target": "interceptionWon",
                    "predicted": 0.7514934539794922,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0944
                      },
                      {
                        "name": "duel_win_rate",
                        "importance": 0.0353
                      },
                      {
                        "name": "duelWon_p90",
                        "importance": 0.0341
                      },
                      {
                        "name": "interceptionWon_p90",
                        "importance": 0.0326
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0322
                      }
                    ],
                    "decomposition": {
                      "base": 0.9108,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1778
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0303
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0279
                        },
                        {
                          "name": "history_matches",
                          "contribution": 0.0208
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": 0.0161
                        }
                      ],
                      "others": -0.016,
                      "total": 0.7515
                    }
                  },
                  {
                    "target": "totalTackle",
                    "predicted": 1.2019333839416504,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0588
                      },
                      {
                        "name": "duelLost",
                        "importance": 0.0461
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0446
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0406
                      },
                      {
                        "name": "defensive_actions",
                        "importance": 0.0401
                      }
                    ],
                    "decomposition": {
                      "base": 1.3553,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0763
                        },
                        {
                          "name": "duelLost",
                          "contribution": -0.0631
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0506
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0251
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0206
                        }
                      ],
                      "others": 0.0823,
                      "total": 1.2019
                    }
                  },
                  {
                    "target": "wonTackle",
                    "predicted": 0.7342586517333984,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "history_matches",
                        "importance": 0.0565
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0432
                      },
                      {
                        "name": "challengeLost",
                        "importance": 0.0353
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0347
                      },
                      {
                        "name": "wonTackle",
                        "importance": 0.0329
                      }
                    ],
                    "decomposition": {
                      "base": 0.8675,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1617
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": 0.0667
                        },
                        {
                          "name": "long_ball_accuracy",
                          "contribution": -0.062
                        },
                        {
                          "name": "defensive_actions",
                          "contribution": -0.0504
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.0495
                        }
                      ],
                      "others": 0.0247,
                      "total": 0.7343
                    }
                  },
                  {
                    "target": "totalClearance",
                    "predicted": 1.0658485889434814,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.11
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0506
                      },
                      {
                        "name": "totalClearance_p90",
                        "importance": 0.0425
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0417
                      },
                      {
                        "name": "tackle_success_rate",
                        "importance": 0.0343
                      }
                    ],
                    "decomposition": {
                      "base": 3.4032,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -1.7436
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.1798
                        },
                        {
                          "name": "totalLongBalls",
                          "contribution": -0.0812
                        },
                        {
                          "name": "progressiveBallCarriesCount",
                          "contribution": -0.0598
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0474
                        }
                      ],
                      "others": -0.2256,
                      "total": 1.0658
                    }
                  },
                  {
                    "target": "aerialWon",
                    "predicted": 0.7492098808288574,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0798
                      },
                      {
                        "name": "aerialWon",
                        "importance": 0.0597
                      },
                      {
                        "name": "totalClearance",
                        "importance": 0.0439
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0426
                      },
                      {
                        "name": "errorLeadToAShot",
                        "importance": 0.0411
                      }
                    ],
                    "decomposition": {
                      "base": 1.2421,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.3191
                        },
                        {
                          "name": "totalClearance",
                          "contribution": -0.051
                        },
                        {
                          "name": "aerialWon",
                          "contribution": -0.041
                        },
                        {
                          "name": "totalClearance_p90",
                          "contribution": -0.0242
                        },
                        {
                          "name": "error_severity",
                          "contribution": 0.0163
                        }
                      ],
                      "others": -0.0739,
                      "total": 0.7492
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.6012654304504395,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "touches_p90",
                        "importance": 0.0708
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0705
                      },
                      {
                        "name": "totalLongBalls",
                        "importance": 0.0537
                      },
                      {
                        "name": "pass_accuracy",
                        "importance": 0.0518
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0478
                      }
                    ],
                    "decomposition": {
                      "base": 6.6627,
                      "items": [
                        {
                          "name": "totalProgression",
                          "contribution": -0.05
                        },
                        {
                          "name": "totalOppositionHalfPasses",
                          "contribution": -0.0238
                        },
                        {
                          "name": "accuratePass",
                          "contribution": 0.0197
                        },
                        {
                          "name": "press_vulnerability",
                          "contribution": -0.0175
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.014
                        }
                      ],
                      "others": -0.0038,
                      "total": 6.6013
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0021, quality 0.507)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "rating": 6.6153,
                "minutes": 89,
                "total_pass": 37,
                "accurate_pass": 31,
                "duels_won": 4,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 14,
                "accurate_own_half_passes": 11,
                "total_opp_half_passes": 23,
                "accurate_opp_half_passes": 20,
                "crosses_total": 3,
                "crosses_accurate": 0,
                "touches": 55,
                "possession_lost": 10.3519,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 0,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 2,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0501,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 13,
                "total_progression": 65,
                "progressive_carries": 1,
                "key_pass": 0
              },
              "params": {
                "market_value_eur": 8700000,
                "quality_factor": 0.5071,
                "boost_factor": 1.0021
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0542)",
              "stats": {
                "interceptions": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "rating": 6.6153,
                "minutes": 89,
                "total_pass": 37,
                "accurate_pass": 31,
                "duels_won": 4,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 14,
                "accurate_own_half_passes": 11,
                "total_opp_half_passes": 23,
                "accurate_opp_half_passes": 20,
                "crosses_total": 3,
                "crosses_accurate": 0,
                "touches": 55,
                "possession_lost": 10.3519,
                "dispossessed": 0.0,
                "duels_lost": 3,
                "aerial_lost": 0,
                "total_contest": 2,
                "won_contest": 0,
                "ball_recovery": 2,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0501,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 13,
                "total_progression": 65,
                "progressive_carries": 1,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 100.0,
                "shotConversion": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": -2.0
              },
              "params": {
                "blend_weight": 0.0542,
                "history_matches": 3,
                "prior_reliability": 0.1333,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.0,
                  "after": 0.0271
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.0,
                  "after": 0.0271
                },
                {
                  "stat": "wonTackle",
                  "before": 0.7358,
                  "after": 0.7501
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.7531,
                  "after": 0.7394
                },
                {
                  "stat": "totalCross",
                  "before": 2.6757,
                  "after": 2.6662
                },
                {
                  "stat": "totalShots",
                  "before": 0.3307,
                  "after": 0.3399
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 13.8 expected minutes (appearance prob 0.22)",
              "stats": {
                "interceptions": 0,
                "tackles": 0,
                "tackles_won": 0,
                "clearances": 0,
                "aerial_won": 0,
                "rating": 6.6153,
                "minutes": 14,
                "total_pass": 6,
                "accurate_pass": 5,
                "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": 4,
                "accurate_opp_half_passes": 3,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 8,
                "possession_lost": 1.5928,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0077,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 2,
                "total_progression": 10,
                "progressive_carries": 0,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 100.0,
                "shotConversion": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.223,
                "bench_expected_minutes": 13.85
              },
              "params": {
                "expected_minutes": 13.85,
                "appearance_probability": 0.223
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "interceptions": 0,
                "tackles": 0,
                "tackles_won": 0,
                "clearances": 0,
                "aerial_won": 0,
                "rating": 6.6153,
                "minutes": 14,
                "total_pass": 6,
                "accurate_pass": 5,
                "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": 4,
                "accurate_opp_half_passes": 3,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 8,
                "possession_lost": 1.5928,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0077,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 2,
                "total_progression": 10,
                "progressive_carries": 0,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 100.0,
                "shotConversion": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.223,
                "bench_expected_minutes": 13.85
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 17, fifa_overall 73.0)",
              "stats": {
                "interceptions": 0,
                "tackles": 0,
                "tackles_won": 0,
                "clearances": 0,
                "aerial_won": 0,
                "rating": 6.6153,
                "minutes": 14,
                "total_pass": 6,
                "accurate_pass": 5,
                "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": 4,
                "accurate_opp_half_passes": 3,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 8,
                "possession_lost": 1.5928,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "blocks": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "assists": 0,
                "expected_goals": 0.0,
                "expected_assists": 0.0077,
                "total_shots": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "big_chances_created": 0,
                "xgot": 0.0,
                "ball_carries": 2,
                "total_progression": 10,
                "progressive_carries": 0,
                "key_pass": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 100.0,
                "shotConversion": 0.0,
                "minutesPct": 100.0,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.223,
                "bench_expected_minutes": 13.85,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 17,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 3727,
                "fifa_rank": 3265.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 73.0
              }
            }
          ]
        },
        "Victor Torp": {
          "player_id": 837011,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 29,
          "height": 178,
          "market_value": 14500000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0156,
            "assists": 0,
            "expected_goals": 0.0082,
            "rating": 6.9491,
            "minutes": 24,
            "total_pass": 4,
            "accurate_pass": 3,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 3,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 5,
            "possession_lost": 1.2204,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 1,
            "total_progression": 1,
            "progressive_carries": 0,
            "total_shots": 0,
            "offsides": 0,
            "yellowCards": 0.0,
            "redCards": 0.0,
            "ownGoals": 0.0,
            "minutesPct": 27.2,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "bench_appearance_probability": 0.703,
            "bench_expected_minutes": 23.88,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.226,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 19,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0053,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 11,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 28,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.1114,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 1,
                "interceptions": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4103,
            "combined_rank_score": 2091.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 915.0,
            "sofascore_rating": 6.5,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3267.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "projected_match_rating": 6.9491,
            "source_file": "data/player_rankings.csv",
            "player_name": "Victor Torp",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Adam Smith",
                  "ranking": 4098
                },
                {
                  "player_name": "Dayne St. Clair",
                  "ranking": 4099
                },
                {
                  "player_name": "Kieffer Moore",
                  "ranking": 4100
                },
                {
                  "player_name": "Ryan Giles",
                  "ranking": 4101
                },
                {
                  "player_name": "Alex Tóth",
                  "ranking": 4102
                }
              ],
              "lower": [
                {
                  "player_name": "Dro Fernández",
                  "ranking": 4104
                },
                {
                  "player_name": "Agustín Sández",
                  "ranking": 4105
                },
                {
                  "player_name": "Axel Tuanzebe",
                  "ranking": 4106
                },
                {
                  "player_name": "Abdoul Ouattara",
                  "ranking": 4107
                },
                {
                  "player_name": "Liam Millar",
                  "ranking": 4108
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.38,
          "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",
              "numberOfSprints",
              "kilometersCovered",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "intensity_index",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "rating"
            ],
            "history_matches": 2,
            "data_confidence": 0.38,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 23.88,
            "bench_appearance_prob": 0.703,
            "market_value_adjustment": 1.0221,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 25.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0333
            },
            "rationale": "Bench projection scaled from XGBoost M_service (2 historical appearances) to 23.9 expected mins (appearance prob 0.70); FBref playing time empirical prior: 2.0 sub appearances, 25.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 5 target models",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0574,
                "assists": 0,
                "expected_goals": 0.0322,
                "rating": 6.7988,
                "minutes": 24,
                "total_pass": 13,
                "accurate_pass": 12,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 2,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 10,
                "crosses_total": 2,
                "crosses_accurate": 0,
                "touches": 19,
                "possession_lost": 4.5,
                "dispossessed": 0.0,
                "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": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 4,
                "total_progression": 3,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:48.236605+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 461,
                    "rows": 1422
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.5405,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.4595,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 0.0,
                  "ballRecovery_p90": 5.1209,
                  "ballRecovery": 1.0811,
                  "intensity_index": 2.6337,
                  "expectedAssists": 0.054,
                  "kilometersCovered": 3.6439
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5474444627761841,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0551
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0489
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0393
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.035
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 0.9691,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2141
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0585
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0384
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0266
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.024
                        }
                      ],
                      "others": -0.0601,
                      "total": 0.5474
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.05744640529155731,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "cross_creative_contribution",
                        "importance": 0.0714
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0375
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0356
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0345
                      }
                    ],
                    "decomposition": {
                      "base": 0.0929,
                      "items": [
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0142
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0128
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0087
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0052
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0048
                        }
                      ],
                      "others": -0.0182,
                      "total": 0.0574
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.08977456390857697,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0378
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0368
                      },
                      {
                        "name": "cross_accuracy",
                        "importance": 0.036
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0315
                      }
                    ],
                    "decomposition": {
                      "base": 0.0956,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0054
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0053
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0045
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": 0.0041
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0027
                        }
                      ],
                      "others": -0.008,
                      "total": 0.0898
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.03215080127120018,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.077
                      },
                      {
                        "name": "intensity_index",
                        "importance": 0.0622
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0454
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0399
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0384
                      }
                    ],
                    "decomposition": {
                      "base": 0.1087,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0287
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0144
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0084
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0072
                        },
                        {
                          "name": "intensity_index",
                          "contribution": -0.0049
                        }
                      ],
                      "others": -0.0129,
                      "total": 0.0322
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.798789978027344,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "ballRecovery_p90",
                        "importance": 0.0847
                      },
                      {
                        "name": "ballRecovery",
                        "importance": 0.0836
                      },
                      {
                        "name": "kilometersCovered",
                        "importance": 0.0597
                      },
                      {
                        "name": "defensive_midfield_actions",
                        "importance": 0.05
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0441
                      }
                    ],
                    "decomposition": {
                      "base": 6.8318,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0663
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0163
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.016
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": 0.0147
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0123
                        }
                      ],
                      "others": -0.026,
                      "total": 6.7988
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0221, quality 0.574)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0587,
                "assists": 0,
                "expected_goals": 0.0329,
                "rating": 6.9491,
                "minutes": 24,
                "total_pass": 13,
                "accurate_pass": 12,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 11,
                "accurate_opp_half_passes": 10,
                "crosses_total": 2,
                "crosses_accurate": 0,
                "touches": 19,
                "possession_lost": 4.5995,
                "dispossessed": 0.0,
                "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": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 4,
                "total_progression": 3,
                "progressive_carries": 0
              },
              "params": {
                "market_value_eur": 14500000,
                "quality_factor": 0.5737,
                "boost_factor": 1.0221
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0155)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0587,
                "assists": 0,
                "expected_goals": 0.0329,
                "rating": 6.9491,
                "minutes": 24,
                "total_pass": 13,
                "accurate_pass": 12,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 11,
                "accurate_opp_half_passes": 10,
                "crosses_total": 2,
                "crosses_accurate": 0,
                "touches": 19,
                "possession_lost": 4.5995,
                "dispossessed": 0.0,
                "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": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 4,
                "total_progression": 3,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 27.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": -1.84
              },
              "params": {
                "blend_weight": 0.0155,
                "history_matches": 2,
                "prior_reliability": 0.0333,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 2.0442,
                  "after": 2.1363
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.0,
                  "after": 0.0309
                },
                {
                  "stat": "fouls",
                  "before": 0.0,
                  "after": 0.0309
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 23.9 expected minutes (appearance prob 0.70)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0156,
                "assists": 0,
                "expected_goals": 0.0087,
                "rating": 6.9491,
                "minutes": 24,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 3,
                "accurate_opp_half_passes": 3,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.2204,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 1,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 27.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88
              },
              "params": {
                "expected_minutes": 23.88,
                "appearance_probability": 0.703
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0156,
                "assists": 0,
                "expected_goals": 0.0087,
                "rating": 6.9491,
                "minutes": 24,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 3,
                "accurate_opp_half_passes": 3,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.2204,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 1,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 27.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0156,
                "assists": 0,
                "expected_goals": 0.0082,
                "rating": 6.9491,
                "minutes": 24,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 3,
                "accurate_opp_half_passes": 3,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.2204,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 1,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 27.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 13, fifa_overall 73.0)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0156,
                "assists": 0,
                "expected_goals": 0.0082,
                "rating": 6.9491,
                "minutes": 24,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 3,
                "accurate_opp_half_passes": 3,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.2204,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 1,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 27.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 13,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4103,
                "fifa_rank": 3267.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 73.0
              }
            }
          ]
        },
        "Loum Tchaouna": {
          "player_id": 1004505,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 18,
          "height": 180,
          "market_value": 13800000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0194,
            "assists": 0,
            "expected_goals": 0.0187,
            "rating": 6.9471,
            "minutes": 22,
            "total_pass": 5,
            "accurate_pass": 4,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 3,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 2.3767,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 3,
            "total_progression": 9,
            "progressive_carries": 0,
            "total_shots": 0,
            "offsides": 0,
            "yellowCards": 0.0,
            "redCards": 0.0,
            "ownGoals": 0.0,
            "shotAccuracy": 0.0,
            "shotConversion": 0.0,
            "minutesPct": 77.2,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "bench_appearance_probability": 0.317,
            "bench_expected_minutes": 22.48,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.226,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363263.0,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 27,
                "rating": 6.7,
                "assists": 0,
                "expected_goals": 0.101,
                "expected_assists": 0.0298,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 6,
                "key_pass": 2,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 59,
                "rating": 7.1,
                "assists": 0,
                "expected_goals": 0.0544,
                "expected_assists": 0.1343,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 22,
                "accurate_pass": 17,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 82,
                "rating": 6.3,
                "assists": 0,
                "expected_goals": 0.0405,
                "expected_assists": 0.0218,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 22,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4005,
            "combined_rank_score": 1987.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 698.0,
            "sofascore_rating": 6.7,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3276.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "projected_match_rating": 6.9471,
            "source_file": "data/player_rankings.csv",
            "player_name": "Loum Tchaouna",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Turrientes",
                  "ranking": 4000
                },
                {
                  "player_name": "Agirrezabala",
                  "ranking": 4001
                },
                {
                  "player_name": "Enzo Bardeli",
                  "ranking": 4002
                },
                {
                  "player_name": "Andrés García",
                  "ranking": 4003
                },
                {
                  "player_name": "Antoni Milambo",
                  "ranking": 4004
                }
              ],
              "lower": [
                {
                  "player_name": "Marco Grüll",
                  "ranking": 4006
                },
                {
                  "player_name": "Soungoutou Magassa",
                  "ranking": 4007
                },
                {
                  "player_name": "Mikel Amondarain",
                  "ranking": 4008
                },
                {
                  "player_name": "Gustavo Velázquez",
                  "ranking": 4009
                },
                {
                  "player_name": "Vicente Pizarro",
                  "ranking": 4010
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.453,
          "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",
              "numberOfSprints",
              "kilometersCovered",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "intensity_index",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.453,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 22.48122902993721,
            "bench_appearance_prob": 0.317,
            "market_value_adjustment": 1.0198,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 2.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.1
            },
            "rationale": "Bench projection scaled from XGBoost M_service (3 historical appearances) to 22.5 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 5 target models",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0762,
                "assists": 0,
                "expected_goals": 0.0733,
                "rating": 6.8122,
                "minutes": 56,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 2,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 6,
                "accurate_own_half_passes": 5,
                "total_opp_half_passes": 14,
                "accurate_opp_half_passes": 10,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 31,
                "possession_lost": 9.33,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 36,
                "progressive_carries": 1
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:48.236605+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 461,
                    "rows": 1422
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 27.0,
                    "is_starting": false,
                    "weight": 0.3887,
                    "rating": 6.7
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 59.0,
                    "is_starting": true,
                    "weight": 0.3304,
                    "rating": 7.1
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 82.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "ballRecovery_p90": 4.3491,
                  "ballRecovery": 2.7843,
                  "intensity_index": 5.7133,
                  "expectedAssists": 0.0621,
                  "kilometersCovered": 6.2796
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.8711622357368469,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0551
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0489
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0393
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.035
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 0.9691,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1413
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0493
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0409
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": 0.033
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": 0.019
                        }
                      ],
                      "others": -0.017,
                      "total": 0.8712
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.07620890438556671,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "cross_creative_contribution",
                        "importance": 0.0714
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0375
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0356
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0345
                      }
                    ],
                    "decomposition": {
                      "base": 0.0929,
                      "items": [
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0138
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.012
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0065
                        },
                        {
                          "name": "progressive_carries_p90",
                          "contribution": -0.0056
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.0034
                        }
                      ],
                      "others": -0.0098,
                      "total": 0.0762
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.0941166803240776,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0378
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0368
                      },
                      {
                        "name": "cross_accuracy",
                        "importance": 0.036
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0315
                      }
                    ],
                    "decomposition": {
                      "base": 0.0956,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0062
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0046
                        },
                        {
                          "name": "duelLost",
                          "contribution": 0.003
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": 0.003
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0029
                        }
                      ],
                      "others": 0.0004,
                      "total": 0.0941
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.07332874834537506,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.077
                      },
                      {
                        "name": "intensity_index",
                        "importance": 0.0622
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0454
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0399
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0384
                      }
                    ],
                    "decomposition": {
                      "base": 0.1087,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0186
                        },
                        {
                          "name": "totalShots",
                          "contribution": 0.0171
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0155
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": -0.0085
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0048
                        }
                      ],
                      "others": -0.0051,
                      "total": 0.0733
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.8122358322143555,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "ballRecovery_p90",
                        "importance": 0.0847
                      },
                      {
                        "name": "ballRecovery",
                        "importance": 0.0836
                      },
                      {
                        "name": "kilometersCovered",
                        "importance": 0.0597
                      },
                      {
                        "name": "defensive_midfield_actions",
                        "importance": 0.05
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0441
                      }
                    ],
                    "decomposition": {
                      "base": 6.8318,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0896
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0263
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.0192
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": 0.0162
                        },
                        {
                          "name": "creative_index",
                          "contribution": 0.012
                        }
                      ],
                      "others": -0.0037,
                      "total": 6.8122
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0198, quality 0.566)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0777,
                "assists": 0,
                "expected_goals": 0.0748,
                "rating": 6.9471,
                "minutes": 57,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 2,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 6,
                "accurate_own_half_passes": 5,
                "total_opp_half_passes": 14,
                "accurate_opp_half_passes": 11,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 32,
                "possession_lost": 9.5146,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 37,
                "progressive_carries": 1
              },
              "params": {
                "market_value_eur": 13800000,
                "quality_factor": 0.566,
                "boost_factor": 1.0198
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0406)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0777,
                "assists": 0,
                "expected_goals": 0.0748,
                "rating": 6.9471,
                "minutes": 57,
                "total_pass": 20,
                "accurate_pass": 15,
                "duels_won": 2,
                "total_long_balls": 2,
                "accurate_long_balls": 0,
                "total_own_half_passes": 6,
                "accurate_own_half_passes": 5,
                "total_opp_half_passes": 14,
                "accurate_opp_half_passes": 11,
                "crosses_total": 4,
                "crosses_accurate": 0,
                "touches": 32,
                "possession_lost": 9.5146,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 10,
                "total_progression": 37,
                "progressive_carries": 1,
                "total_shots": 2,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 77.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": -1.94
              },
              "params": {
                "blend_weight": 0.0406,
                "history_matches": 3,
                "prior_reliability": 0.1,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "wasFouled",
                  "before": 0.0,
                  "after": 0.0542
                },
                {
                  "stat": "wonTackle",
                  "before": 0.0,
                  "after": 0.0271
                },
                {
                  "stat": "fouls",
                  "before": 0.0,
                  "after": 0.0271
                },
                {
                  "stat": "totalCross",
                  "before": 4.0792,
                  "after": 4.1031
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 22.5 expected minutes (appearance prob 0.32)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0194,
                "assists": 0,
                "expected_goals": 0.0187,
                "rating": 6.9471,
                "minutes": 22,
                "total_pass": 5,
                "accurate_pass": 4,
                "duels_won": 1,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "total_own_half_passes": 2,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 3,
                "accurate_opp_half_passes": 3,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 8,
                "possession_lost": 2.3767,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 3,
                "total_progression": 9,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 77.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.317,
                "bench_expected_minutes": 22.48
              },
              "params": {
                "expected_minutes": 22.48,
                "appearance_probability": 0.317
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0194,
                "assists": 0,
                "expected_goals": 0.0187,
                "rating": 6.9471,
                "minutes": 22,
                "total_pass": 5,
                "accurate_pass": 4,
                "duels_won": 1,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "total_own_half_passes": 2,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 3,
                "accurate_opp_half_passes": 3,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 8,
                "possession_lost": 2.3767,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 3,
                "total_progression": 9,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 77.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.317,
                "bench_expected_minutes": 22.48
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 14, fifa_overall 73.0)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0194,
                "assists": 0,
                "expected_goals": 0.0187,
                "rating": 6.9471,
                "minutes": 22,
                "total_pass": 5,
                "accurate_pass": 4,
                "duels_won": 1,
                "total_long_balls": 1,
                "accurate_long_balls": 0,
                "total_own_half_passes": 2,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 3,
                "accurate_opp_half_passes": 3,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 8,
                "possession_lost": 2.3767,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 3,
                "total_progression": 9,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "shotAccuracy": 0.0,
                "shotConversion": 0.0,
                "minutesPct": 77.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.317,
                "bench_expected_minutes": 22.48,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "available_bench_not_projected_used",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 14,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4005,
                "fifa_rank": 3276.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 73.0
              }
            }
          ]
        },
        "Brandon Thomas-Asante": {
          "player_id": 846061,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 23,
          "height": 180,
          "market_value": 16500000,
          "stats": {
            "expected_goals": 0.0395,
            "goal_rate": 0.1009,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0128,
            "key_pass": 0,
            "rating": 7.0124,
            "minutes": 29,
            "total_pass": 3,
            "accurate_pass": 2,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 5,
            "possession_lost": 1.8961,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "assists": 0,
            "shots_off_target": 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,
            "total_shots": 0,
            "yellowCards": 0.0,
            "redCards": 0.0,
            "ownGoals": 0.0,
            "minutesPct": 56.1,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "bench_appearance_probability": 0.539,
            "bench_expected_minutes": 29.26,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.226,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363263.0,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 19,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 2,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 32,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 6,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 70,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0169,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 6,
                "interceptions": 4,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4122,
            "combined_rank_score": 2117.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 969.0,
            "sofascore_rating": 6.35,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3266.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "substitute",
            "projected_match_rating": 7.0124,
            "source_file": "data/player_rankings.csv",
            "player_name": "Brandon Thomas-Asante",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Pol Fernández",
                  "ranking": 4117
                },
                {
                  "player_name": "Carlos Domínguez",
                  "ranking": 4118
                },
                {
                  "player_name": "Fredrik Sjøvold",
                  "ranking": 4119
                },
                {
                  "player_name": "Domagoj Bradarić",
                  "ranking": 4120
                },
                {
                  "player_name": "Sheyko Studer",
                  "ranking": 4121
                }
              ],
              "lower": [
                {
                  "player_name": "Ali Ahmed",
                  "ranking": 4123
                },
                {
                  "player_name": "Josip Brekalo",
                  "ranking": 4124
                },
                {
                  "player_name": "Alexander Bernhardsson",
                  "ranking": 4125
                },
                {
                  "player_name": "Andrija Bulatovic",
                  "ranking": 4126
                },
                {
                  "player_name": "Alberto Reina",
                  "ranking": 4127
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.448,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "topSpeed",
              "numberOfSprints",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "speed_threat",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.448,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 29.26,
            "bench_appearance_prob": 0.539,
            "market_value_adjustment": 1.0286,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 32.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0733
            },
            "rationale": "Bench projection scaled from XGBoost F_service (3 historical appearances) to 29.3 expected mins (appearance prob 0.54); FBref playing time empirical prior: 1.0 sub appearances, 32.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 6 target models",
              "stats": {
                "expected_goals": 0.1255,
                "goal_rate": 0.3109,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0383,
                "key_pass": 0,
                "rating": 6.8174,
                "minutes": 40,
                "total_pass": 8,
                "accurate_pass": 5,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 6,
                "accurate_opp_half_passes": 4,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 16,
                "possession_lost": 5.67,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 2,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 8,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:52.318462+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 278,
                    "rows": 769
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.3887,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.3304,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "onTargetScoringAttempt": 0.0,
                  "totalShots": 0.0,
                  "minutesPlayed": 37.619,
                  "touches": 15.344,
                  "dribbleValueNormalized": -0.0609
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.12554681301116943,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "minutesPlayed",
                        "importance": 0.093
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0745
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0545
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.043
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0314
                      }
                    ],
                    "decomposition": {
                      "base": 0.2757,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0573
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0256
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0155
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0154
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0129
                        }
                      ],
                      "others": -0.0543,
                      "total": 0.1255
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.31086501479148865,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.1
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0371
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0298
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.3455,
                      "items": [
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0442
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0278
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0245
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0234
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0211
                        }
                      ],
                      "others": -0.0316,
                      "total": 0.3109
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5174543857574463,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0703
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0583
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0486
                      },
                      {
                        "name": "touches",
                        "importance": 0.0401
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 0.6329,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0528
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0371
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0302
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0093
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.008
                        }
                      ],
                      "others": -0.0384,
                      "total": 0.5175
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03825639188289642,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0802
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0621
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0547
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0537
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0397
                      }
                    ],
                    "decomposition": {
                      "base": 0.0579,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0075
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0046
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0035
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0029
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0045,
                      "total": 0.0383
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.338751882314682,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0738
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0657
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0615
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0458
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0313
                      }
                    ],
                    "decomposition": {
                      "base": 0.6829,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.192
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.032
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0227
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": -0.0187
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.017
                        }
                      ],
                      "others": -0.0617,
                      "total": 0.3388
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.817447662353516,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "speed_threat",
                        "importance": 0.0598
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0489
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0439
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0425
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0404
                      }
                    ],
                    "decomposition": {
                      "base": 6.7136,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0632
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0542
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0438
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0221
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0219
                        }
                      ],
                      "others": 0.113,
                      "total": 6.8174
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0286, quality 0.595)",
              "stats": {
                "expected_goals": 0.1291,
                "goal_rate": 0.3198,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0394,
                "key_pass": 0,
                "rating": 7.0124,
                "minutes": 41,
                "total_pass": 8,
                "accurate_pass": 5,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 7,
                "accurate_opp_half_passes": 4,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 16,
                "possession_lost": 5.8321,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 2,
                "assists": 0,
                "shots_off_target": 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": 8,
                "total_progression": 8,
                "progressive_carries": 0
              },
              "params": {
                "market_value_eur": 16500000,
                "quality_factor": 0.5953,
                "boost_factor": 1.0286
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0298)",
              "stats": {
                "expected_goals": 0.1291,
                "goal_rate": 0.3103,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0394,
                "key_pass": 0,
                "rating": 7.0124,
                "minutes": 41,
                "total_pass": 8,
                "accurate_pass": 5,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 7,
                "accurate_opp_half_passes": 4,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 16,
                "possession_lost": 5.8321,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 2,
                "assists": 0,
                "shots_off_target": 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": 8,
                "total_progression": 8,
                "progressive_carries": 0,
                "total_shots": 1,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 56.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": -3.56
              },
              "params": {
                "blend_weight": 0.0298,
                "history_matches": 3,
                "prior_reliability": 0.0733,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 0.0,
                  "after": 0.1083
                },
                {
                  "stat": "totalCross",
                  "before": 0.0,
                  "after": 0.0541
                },
                {
                  "stat": "wasFouled",
                  "before": 1.7177,
                  "after": 1.7478
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5322,
                  "after": 0.5164
                },
                {
                  "stat": "goals",
                  "before": 0.3198,
                  "after": 0.3103
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 29.3 expected minutes (appearance prob 0.54)",
              "stats": {
                "expected_goals": 0.042,
                "goal_rate": 0.1009,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0128,
                "key_pass": 0,
                "rating": 7.0124,
                "minutes": 29,
                "total_pass": 3,
                "accurate_pass": 2,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.8961,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 1,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 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,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 56.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 29.26
              },
              "params": {
                "expected_minutes": 29.26,
                "appearance_probability": 0.539
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.042,
                "goal_rate": 0.1009,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0128,
                "key_pass": 0,
                "rating": 7.0124,
                "minutes": 29,
                "total_pass": 3,
                "accurate_pass": 2,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.8961,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 1,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 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,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 56.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 29.26
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "expected_goals": 0.0395,
                "goal_rate": 0.1009,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0128,
                "key_pass": 0,
                "rating": 7.0124,
                "minutes": 29,
                "total_pass": 3,
                "accurate_pass": 2,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.8961,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 1,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 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,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 56.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 29.26,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 8, fifa_overall 73.0)",
              "stats": {
                "expected_goals": 0.0395,
                "goal_rate": 0.1009,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0128,
                "key_pass": 0,
                "rating": 7.0124,
                "minutes": 29,
                "total_pass": 3,
                "accurate_pass": 2,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.8961,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 1,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 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,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 56.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 29.26,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 8,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4122,
                "fifa_rank": 3266.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 73.0
              }
            }
          ]
        },
        "Ellis Simms": {
          "player_id": 991614,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 190,
          "market_value": 11500000,
          "stats": {
            "expected_goals": 0.0448,
            "goal_rate": 0.0712,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0056,
            "key_pass": 0,
            "rating": 6.7443,
            "minutes": 26,
            "total_pass": 2,
            "accurate_pass": 0,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 4,
            "possession_lost": 1.5893,
            "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,
            "assists": 0,
            "shots_off_target": 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": 0,
            "total_progression": 0,
            "progressive_carries": 0,
            "total_shots": 0,
            "yellowCards": 0.0,
            "redCards": 0.0,
            "ownGoals": 0.0,
            "minutesPct": 38.3,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "bench_appearance_probability": 0.342,
            "bench_expected_minutes": 25.7,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.226,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16363263.0,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 19,
                "rating": 6.5,
                "assists": 0,
                "expected_goals": 0.2959,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 1,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 70,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.0068,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 9,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4696,
            "combined_rank_score": 2785.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 1.0,
            "fifa_rank": 4748.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "projected_match_rating": 6.7443,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ellis Simms",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Badredine Bouanani",
                  "ranking": 4691
                },
                {
                  "player_name": "Aljoscha Kemlein",
                  "ranking": 4692
                },
                {
                  "player_name": "Yoel Lago",
                  "ranking": 4693
                },
                {
                  "player_name": "Joel Latibeaudiere",
                  "ranking": 4694
                },
                {
                  "player_name": "Mats Rots",
                  "ranking": 4695
                }
              ],
              "lower": [
                {
                  "player_name": "Oscar Højlund",
                  "ranking": 4697
                },
                {
                  "player_name": "Yannick Gerhardt",
                  "ranking": 4698
                },
                {
                  "player_name": "Eric Smith",
                  "ranking": 4699
                },
                {
                  "player_name": "Hauke Wahl",
                  "ranking": 4700
                },
                {
                  "player_name": "Moritz Jenz",
                  "ranking": 4701
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.383,
          "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",
              "topSpeed",
              "numberOfSprints",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "speed_threat",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 2,
            "data_confidence": 0.383,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 25.698067743081424,
            "bench_appearance_prob": 0.342,
            "market_value_adjustment": 1.012,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0533
            },
            "rationale": "Bench projection scaled from XGBoost F_service (2 historical appearances) to 25.7 expected mins (appearance prob 0.34); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 6 target models",
              "stats": {
                "expected_goals": 0.1649,
                "goal_rate": 0.2525,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0195,
                "key_pass": 0,
                "rating": 6.6645,
                "minutes": 44,
                "total_pass": 7,
                "accurate_pass": 0,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 5,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 13,
                "possession_lost": 5.5,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:52.318462+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 278,
                    "rows": 769
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.5405,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.4595,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 0.0,
                  "onTargetScoringAttempt": 0.5405,
                  "totalShots": 0.5405,
                  "minutesPlayed": 42.4324,
                  "touches": 12.2703,
                  "dribbleValueNormalized": -0.0046
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.16492226719856262,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "minutesPlayed",
                        "importance": 0.093
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0745
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0545
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.043
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0314
                      }
                    ],
                    "decomposition": {
                      "base": 0.2757,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0516
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0252
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0246
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0184
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0144
                        }
                      ],
                      "others": -0.0626,
                      "total": 0.1649
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.2524528205394745,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.1
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0371
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0298
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.3455,
                      "items": [
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0491
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0392
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0225
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0168
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0171
                        }
                      ],
                      "others": -0.0161,
                      "total": 0.2525
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5286093354225159,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0703
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0583
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0486
                      },
                      {
                        "name": "touches",
                        "importance": 0.0401
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 0.6329,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0533
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0406
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0328
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0204
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0118
                        }
                      ],
                      "others": -0.0346,
                      "total": 0.5286
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.019503358751535416,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0802
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0621
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0547
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0537
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0397
                      }
                    ],
                    "decomposition": {
                      "base": 0.0579,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.012
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.007
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0046
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0035
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0025
                        }
                      ],
                      "others": -0.0088,
                      "total": 0.0195
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.39011240005493164,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0738
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0657
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0615
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0458
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0313
                      }
                    ],
                    "decomposition": {
                      "base": 0.6829,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1668
                        },
                        {
                          "name": "duelWon",
                          "contribution": 0.0355
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0348
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0325
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0254
                        }
                      ],
                      "others": -0.0688,
                      "total": 0.3901
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.664484977722168,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "speed_threat",
                        "importance": 0.0598
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0489
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0439
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0425
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0404
                      }
                    ],
                    "decomposition": {
                      "base": 6.7136,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0782
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0657
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0601
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0529
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0456
                        }
                      ],
                      "others": 0.0308,
                      "total": 6.6645
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0120, quality 0.540)",
              "stats": {
                "expected_goals": 0.1669,
                "goal_rate": 0.2555,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0197,
                "key_pass": 0,
                "rating": 6.7443,
                "minutes": 45,
                "total_pass": 7,
                "accurate_pass": 0,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 5,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 13,
                "possession_lost": 5.5659,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "params": {
                "market_value_eur": 11500000,
                "quality_factor": 0.5399,
                "boost_factor": 1.012
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0247)",
              "stats": {
                "expected_goals": 0.1669,
                "goal_rate": 0.2492,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0197,
                "key_pass": 0,
                "rating": 6.7443,
                "minutes": 45,
                "total_pass": 7,
                "accurate_pass": 0,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 5,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 13,
                "possession_lost": 5.5659,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 1,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 38.3,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": -3.91
              },
              "params": {
                "blend_weight": 0.0247,
                "history_matches": 2,
                "prior_reliability": 0.0533,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.0,
                  "after": 0.0619
                },
                {
                  "stat": "wasFouled",
                  "before": 0.0,
                  "after": 0.0309
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5349,
                  "after": 0.5217
                },
                {
                  "stat": "goals",
                  "before": 0.2555,
                  "after": 0.2492
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 25.7 expected minutes (appearance prob 0.34)",
              "stats": {
                "expected_goals": 0.0477,
                "goal_rate": 0.0712,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0056,
                "key_pass": 0,
                "rating": 6.7443,
                "minutes": 26,
                "total_pass": 2,
                "accurate_pass": 0,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 4,
                "possession_lost": 1.5893,
                "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,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 38.3,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.7
              },
              "params": {
                "expected_minutes": 25.7,
                "appearance_probability": 0.342
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0477,
                "goal_rate": 0.0712,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0056,
                "key_pass": 0,
                "rating": 6.7443,
                "minutes": 26,
                "total_pass": 2,
                "accurate_pass": 0,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 4,
                "possession_lost": 1.5893,
                "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,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 38.3,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.7
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "expected_goals": 0.0448,
                "goal_rate": 0.0712,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0056,
                "key_pass": 0,
                "rating": 6.7443,
                "minutes": 26,
                "total_pass": 2,
                "accurate_pass": 0,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 4,
                "possession_lost": 1.5893,
                "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,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 38.3,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.7,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 15, fifa_overall 71.0)",
              "stats": {
                "expected_goals": 0.0448,
                "goal_rate": 0.0712,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0056,
                "key_pass": 0,
                "rating": 6.7443,
                "minutes": 26,
                "total_pass": 2,
                "accurate_pass": 0,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 4,
                "possession_lost": 1.5893,
                "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,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 38.3,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.7,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 71.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4696,
                "fifa_rank": 4748.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 71.0
              }
            }
          ]
        }
      },
      "substitutes": {
        "Victor Torp": {
          "player_id": 837011,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 29,
          "height": 178,
          "market_value": 14500000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0156,
            "assists": 0,
            "expected_goals": 0.0082,
            "rating": 6.9491,
            "minutes": 24,
            "total_pass": 4,
            "accurate_pass": 3,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 3,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 5,
            "possession_lost": 1.2204,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 1,
            "total_progression": 1,
            "progressive_carries": 0,
            "total_shots": 0,
            "offsides": 0,
            "yellowCards": 0.0,
            "redCards": 0.0,
            "ownGoals": 0.0,
            "minutesPct": 27.2,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "bench_appearance_probability": 0.703,
            "bench_expected_minutes": 23.88,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.226,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 19,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0053,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 11,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 28,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.1114,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 1,
                "interceptions": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4103,
            "combined_rank_score": 2091.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 915.0,
            "sofascore_rating": 6.5,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3267.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "projected_match_rating": 6.9491,
            "source_file": "data/player_rankings.csv",
            "player_name": "Victor Torp",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Adam Smith",
                  "ranking": 4098
                },
                {
                  "player_name": "Dayne St. Clair",
                  "ranking": 4099
                },
                {
                  "player_name": "Kieffer Moore",
                  "ranking": 4100
                },
                {
                  "player_name": "Ryan Giles",
                  "ranking": 4101
                },
                {
                  "player_name": "Alex Tóth",
                  "ranking": 4102
                }
              ],
              "lower": [
                {
                  "player_name": "Dro Fernández",
                  "ranking": 4104
                },
                {
                  "player_name": "Agustín Sández",
                  "ranking": 4105
                },
                {
                  "player_name": "Axel Tuanzebe",
                  "ranking": 4106
                },
                {
                  "player_name": "Abdoul Ouattara",
                  "ranking": 4107
                },
                {
                  "player_name": "Liam Millar",
                  "ranking": 4108
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.38,
          "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",
              "numberOfSprints",
              "kilometersCovered",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "intensity_index",
              "history_matches"
            ],
            "targets_predicted": [
              "keyPass",
              "expectedAssists",
              "goalAssist",
              "expectedGoals",
              "rating"
            ],
            "history_matches": 2,
            "data_confidence": 0.38,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 23.88,
            "bench_appearance_prob": 0.703,
            "market_value_adjustment": 1.0221,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 0.0,
              "sub_appearances": 2.0,
              "minutes_per_sub": 25.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0333
            },
            "rationale": "Bench projection scaled from XGBoost M_service (2 historical appearances) to 23.9 expected mins (appearance prob 0.70); FBref playing time empirical prior: 2.0 sub appearances, 25.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost M_service raw output over 5 target models",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0574,
                "assists": 0,
                "expected_goals": 0.0322,
                "rating": 6.7988,
                "minutes": 24,
                "total_pass": 13,
                "accurate_pass": 12,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 2,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 10,
                "accurate_opp_half_passes": 10,
                "crosses_total": 2,
                "crosses_accurate": 0,
                "touches": 19,
                "possession_lost": 4.5,
                "dispossessed": 0.0,
                "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": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 4,
                "total_progression": 3,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "M",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:48.236605+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 461,
                    "rows": 1422
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.5405,
                    "rating": 6.3
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 28.0,
                    "is_starting": false,
                    "weight": 0.4595,
                    "rating": 6.7
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 0.0,
                  "ballRecovery_p90": 5.1209,
                  "ballRecovery": 1.0811,
                  "intensity_index": 2.6337,
                  "expectedAssists": 0.054,
                  "kilometersCovered": 3.6439
                },
                "per_target": [
                  {
                    "target": "keyPass",
                    "predicted": 0.5474444627761841,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0551
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0489
                      },
                      {
                        "name": "creative_efficiency",
                        "importance": 0.0393
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.035
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0319
                      }
                    ],
                    "decomposition": {
                      "base": 0.9691,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.2141
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0585
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0384
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0266
                        },
                        {
                          "name": "creative_index",
                          "contribution": -0.024
                        }
                      ],
                      "others": -0.0601,
                      "total": 0.5474
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.05744640529155731,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "cross_creative_contribution",
                        "importance": 0.0714
                      },
                      {
                        "name": "totalOppositionHalfPasses",
                        "importance": 0.0375
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0361
                      },
                      {
                        "name": "accurateCross",
                        "importance": 0.0356
                      },
                      {
                        "name": "creative_index",
                        "importance": 0.0345
                      }
                    ],
                    "decomposition": {
                      "base": 0.0929,
                      "items": [
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0142
                        },
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0128
                        },
                        {
                          "name": "ballCarriesCount",
                          "contribution": -0.0087
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0052
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0048
                        }
                      ],
                      "others": -0.0182,
                      "total": 0.0574
                    }
                  },
                  {
                    "target": "goalAssist",
                    "predicted": 0.08977456390857697,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0442
                      },
                      {
                        "name": "keyPass_p90",
                        "importance": 0.0378
                      },
                      {
                        "name": "totalCross",
                        "importance": 0.0368
                      },
                      {
                        "name": "cross_accuracy",
                        "importance": 0.036
                      },
                      {
                        "name": "interceptionWon",
                        "importance": 0.0315
                      }
                    ],
                    "decomposition": {
                      "base": 0.0956,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0054
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0053
                        },
                        {
                          "name": "dribbleValueNormalized",
                          "contribution": -0.0045
                        },
                        {
                          "name": "totalPass_p90",
                          "contribution": 0.0041
                        },
                        {
                          "name": "cross_creative_contribution",
                          "contribution": 0.0027
                        }
                      ],
                      "others": -0.008,
                      "total": 0.0898
                    }
                  },
                  {
                    "target": "expectedGoals",
                    "predicted": 0.03215080127120018,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "totalShots",
                        "importance": 0.077
                      },
                      {
                        "name": "intensity_index",
                        "importance": 0.0622
                      },
                      {
                        "name": "progressiveBallCarriesCount",
                        "importance": 0.0454
                      },
                      {
                        "name": "possessionLostCtrl",
                        "importance": 0.0399
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0384
                      }
                    ],
                    "decomposition": {
                      "base": 0.1087,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0287
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0144
                        },
                        {
                          "name": "possessionLostCtrl",
                          "contribution": -0.0084
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0072
                        },
                        {
                          "name": "intensity_index",
                          "contribution": -0.0049
                        }
                      ],
                      "others": -0.0129,
                      "total": 0.0322
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.798789978027344,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "ballRecovery_p90",
                        "importance": 0.0847
                      },
                      {
                        "name": "ballRecovery",
                        "importance": 0.0836
                      },
                      {
                        "name": "kilometersCovered",
                        "importance": 0.0597
                      },
                      {
                        "name": "defensive_midfield_actions",
                        "importance": 0.05
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0441
                      }
                    ],
                    "decomposition": {
                      "base": 6.8318,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0663
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0163
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": 0.016
                        },
                        {
                          "name": "kilometersCovered",
                          "contribution": 0.0147
                        },
                        {
                          "name": "ballRecovery_p90",
                          "contribution": 0.0123
                        }
                      ],
                      "others": -0.026,
                      "total": 6.7988
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0221, quality 0.574)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0587,
                "assists": 0,
                "expected_goals": 0.0329,
                "rating": 6.9491,
                "minutes": 24,
                "total_pass": 13,
                "accurate_pass": 12,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 11,
                "accurate_opp_half_passes": 10,
                "crosses_total": 2,
                "crosses_accurate": 0,
                "touches": 19,
                "possession_lost": 4.5995,
                "dispossessed": 0.0,
                "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": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 4,
                "total_progression": 3,
                "progressive_carries": 0
              },
              "params": {
                "market_value_eur": 14500000,
                "quality_factor": 0.5737,
                "boost_factor": 1.0221
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0155)",
              "stats": {
                "key_pass": 1,
                "expected_assists": 0.0587,
                "assists": 0,
                "expected_goals": 0.0329,
                "rating": 6.9491,
                "minutes": 24,
                "total_pass": 13,
                "accurate_pass": 12,
                "duels_won": 4,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 3,
                "accurate_own_half_passes": 2,
                "total_opp_half_passes": 11,
                "accurate_opp_half_passes": 10,
                "crosses_total": 2,
                "crosses_accurate": 0,
                "touches": 19,
                "possession_lost": 4.5995,
                "dispossessed": 0.0,
                "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": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 4,
                "total_progression": 3,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 27.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": -1.84
              },
              "params": {
                "blend_weight": 0.0155,
                "history_matches": 2,
                "prior_reliability": 0.0333,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "totalCross",
                  "before": 2.0442,
                  "after": 2.1363
                },
                {
                  "stat": "interceptionWon",
                  "before": 0.0,
                  "after": 0.0309
                },
                {
                  "stat": "fouls",
                  "before": 0.0,
                  "after": 0.0309
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 23.9 expected minutes (appearance prob 0.70)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0156,
                "assists": 0,
                "expected_goals": 0.0087,
                "rating": 6.9491,
                "minutes": 24,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 3,
                "accurate_opp_half_passes": 3,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.2204,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 1,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 27.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88
              },
              "params": {
                "expected_minutes": 23.88,
                "appearance_probability": 0.703
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0156,
                "assists": 0,
                "expected_goals": 0.0087,
                "rating": 6.9491,
                "minutes": 24,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 3,
                "accurate_opp_half_passes": 3,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.2204,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 1,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 27.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0156,
                "assists": 0,
                "expected_goals": 0.0082,
                "rating": 6.9491,
                "minutes": 24,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 3,
                "accurate_opp_half_passes": 3,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.2204,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 1,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 27.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 13, fifa_overall 73.0)",
              "stats": {
                "key_pass": 0,
                "expected_assists": 0.0156,
                "assists": 0,
                "expected_goals": 0.0082,
                "rating": 6.9491,
                "minutes": 24,
                "total_pass": 4,
                "accurate_pass": 3,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_own_half_passes": 1,
                "accurate_own_half_passes": 1,
                "total_opp_half_passes": 3,
                "accurate_opp_half_passes": 3,
                "crosses_total": 1,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.2204,
                "dispossessed": 0.0,
                "duels_lost": 0,
                "aerial_won": 0,
                "aerial_lost": 0,
                "interceptions": 0,
                "tackles_won": 0,
                "tackles": 0,
                "clearances": 0,
                "total_contest": 0,
                "won_contest": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "goal_rate": 0.0,
                "goals": 0,
                "shots_on_target": 0,
                "shots_off_target": 0,
                "blocks": 0,
                "big_chances_created": 0,
                "big_chances_missed": 0,
                "xgot": 0.0,
                "ball_carries": 1,
                "total_progression": 1,
                "progressive_carries": 0,
                "total_shots": 0,
                "offsides": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 27.2,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.703,
                "bench_expected_minutes": 23.88,
                "projected_substitution_order": 1,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 13,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4103,
                "fifa_rank": 3267.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 73.0
              }
            }
          ]
        },
        "Brandon Thomas-Asante": {
          "player_id": 846061,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 23,
          "height": 180,
          "market_value": 16500000,
          "stats": {
            "expected_goals": 0.0395,
            "goal_rate": 0.1009,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0128,
            "key_pass": 0,
            "rating": 7.0124,
            "minutes": 29,
            "total_pass": 3,
            "accurate_pass": 2,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 5,
            "possession_lost": 1.8961,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "assists": 0,
            "shots_off_target": 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,
            "total_shots": 0,
            "yellowCards": 0.0,
            "redCards": 0.0,
            "ownGoals": 0.0,
            "minutesPct": 56.1,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "bench_appearance_probability": 0.539,
            "bench_expected_minutes": 29.26,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.226,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16363263.0,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 19,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0008,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 2,
                "interceptions": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363250.0,
              "match_date": "2026-08-29",
              "home_team": "Coventry City",
              "away_team": "Hull City",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Hull City",
              "stats": {
                "minutes": 32,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 6,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 70,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0169,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 6,
                "interceptions": 4,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4122,
            "combined_rank_score": 2117.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 969.0,
            "sofascore_rating": 6.35,
            "sofascore_appearances": 2.0,
            "fifa_rank": 3266.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "substitute",
            "projected_match_rating": 7.0124,
            "source_file": "data/player_rankings.csv",
            "player_name": "Brandon Thomas-Asante",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Pol Fernández",
                  "ranking": 4117
                },
                {
                  "player_name": "Carlos Domínguez",
                  "ranking": 4118
                },
                {
                  "player_name": "Fredrik Sjøvold",
                  "ranking": 4119
                },
                {
                  "player_name": "Domagoj Bradarić",
                  "ranking": 4120
                },
                {
                  "player_name": "Sheyko Studer",
                  "ranking": 4121
                }
              ],
              "lower": [
                {
                  "player_name": "Ali Ahmed",
                  "ranking": 4123
                },
                {
                  "player_name": "Josip Brekalo",
                  "ranking": 4124
                },
                {
                  "player_name": "Alexander Bernhardsson",
                  "ranking": 4125
                },
                {
                  "player_name": "Andrija Bulatovic",
                  "ranking": 4126
                },
                {
                  "player_name": "Alberto Reina",
                  "ranking": 4127
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.448,
          "history_matches": 3,
          "xgboost_reasoning": {
            "model_source": "xgboost_regressor",
            "position_service": "F_service",
            "features_evaluated": [
              "minutesPlayed",
              "is_starting_11",
              "totalPass",
              "accuratePass",
              "totalOppositionHalfPasses",
              "accurateOppositionHalfPasses",
              "totalShots",
              "onTargetScoringAttempt",
              "shotOffTarget",
              "bigChanceMissed",
              "expectedAssists",
              "keyPass",
              "duelWon",
              "duelLost",
              "aerialWon",
              "aerialLost",
              "touches",
              "dispossessed",
              "wasFouled",
              "topSpeed",
              "numberOfSprints",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "speed_threat",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 3,
            "data_confidence": 0.448,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 29.26,
            "bench_appearance_prob": 0.539,
            "market_value_adjustment": 1.0286,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 2.0,
              "starts": 1.0,
              "sub_appearances": 1.0,
              "minutes_per_sub": 32.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0733
            },
            "rationale": "Bench projection scaled from XGBoost F_service (3 historical appearances) to 29.3 expected mins (appearance prob 0.54); FBref playing time empirical prior: 1.0 sub appearances, 32.0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 6 target models",
              "stats": {
                "expected_goals": 0.1255,
                "goal_rate": 0.3109,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0383,
                "key_pass": 0,
                "rating": 6.8174,
                "minutes": 40,
                "total_pass": 8,
                "accurate_pass": 5,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 6,
                "accurate_opp_half_passes": 4,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 16,
                "possession_lost": 5.67,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 2,
                "assists": 0,
                "shots_off_target": 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": 7,
                "total_progression": 8,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:52.318462+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 278,
                    "rows": 769
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.3887,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-29",
                    "opponent": "Hull City",
                    "minutes": 32.0,
                    "is_starting": false,
                    "weight": 0.3304,
                    "rating": 6.4
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.2809,
                    "rating": 6.3
                  }
                ],
                "feature_row": {
                  "history_matches": 3.0,
                  "is_starting_11": 0.0,
                  "onTargetScoringAttempt": 0.0,
                  "totalShots": 0.0,
                  "minutesPlayed": 37.619,
                  "touches": 15.344,
                  "dribbleValueNormalized": -0.0609
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.12554681301116943,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "minutesPlayed",
                        "importance": 0.093
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0745
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0545
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.043
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0314
                      }
                    ],
                    "decomposition": {
                      "base": 0.2757,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0573
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0256
                        },
                        {
                          "name": "expectedAssists",
                          "contribution": -0.0155
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0154
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0129
                        }
                      ],
                      "others": -0.0543,
                      "total": 0.1255
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.31086501479148865,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.1
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0371
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0298
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.3455,
                      "items": [
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0442
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0278
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0245
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0234
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0211
                        }
                      ],
                      "others": -0.0316,
                      "total": 0.3109
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5174543857574463,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0703
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0583
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0486
                      },
                      {
                        "name": "touches",
                        "importance": 0.0401
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 0.6329,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0528
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0371
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0302
                        },
                        {
                          "name": "ballRecovery",
                          "contribution": -0.0093
                        },
                        {
                          "name": "duelWon_p90",
                          "contribution": -0.008
                        }
                      ],
                      "others": -0.0384,
                      "total": 0.5175
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.03825639188289642,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0802
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0621
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0547
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0537
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0397
                      }
                    ],
                    "decomposition": {
                      "base": 0.0579,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0075
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0046
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0035
                        },
                        {
                          "name": "totalShots_p90",
                          "contribution": 0.0029
                        },
                        {
                          "name": "touches",
                          "contribution": -0.0024
                        }
                      ],
                      "others": -0.0045,
                      "total": 0.0383
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.338751882314682,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0738
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0657
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0615
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0458
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0313
                      }
                    ],
                    "decomposition": {
                      "base": 0.6829,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.192
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.032
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0227
                        },
                        {
                          "name": "aerial_dominance",
                          "contribution": -0.0187
                        },
                        {
                          "name": "totalProgression",
                          "contribution": -0.017
                        }
                      ],
                      "others": -0.0617,
                      "total": 0.3388
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.817447662353516,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "speed_threat",
                        "importance": 0.0598
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0489
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0439
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0425
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0404
                      }
                    ],
                    "decomposition": {
                      "base": 6.7136,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0632
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0542
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": 0.0438
                        },
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0221
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0219
                        }
                      ],
                      "others": 0.113,
                      "total": 6.8174
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0286, quality 0.595)",
              "stats": {
                "expected_goals": 0.1291,
                "goal_rate": 0.3198,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0394,
                "key_pass": 0,
                "rating": 7.0124,
                "minutes": 41,
                "total_pass": 8,
                "accurate_pass": 5,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 7,
                "accurate_opp_half_passes": 4,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 16,
                "possession_lost": 5.8321,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 2,
                "assists": 0,
                "shots_off_target": 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": 8,
                "total_progression": 8,
                "progressive_carries": 0
              },
              "params": {
                "market_value_eur": 16500000,
                "quality_factor": 0.5953,
                "boost_factor": 1.0286
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0298)",
              "stats": {
                "expected_goals": 0.1291,
                "goal_rate": 0.3103,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0394,
                "key_pass": 0,
                "rating": 7.0124,
                "minutes": 41,
                "total_pass": 8,
                "accurate_pass": 5,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 7,
                "accurate_opp_half_passes": 4,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 16,
                "possession_lost": 5.8321,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 2,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 2,
                "assists": 0,
                "shots_off_target": 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": 8,
                "total_progression": 8,
                "progressive_carries": 0,
                "total_shots": 1,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 56.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": -3.56
              },
              "params": {
                "blend_weight": 0.0298,
                "history_matches": 3,
                "prior_reliability": 0.0733,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "interceptionWon",
                  "before": 0.0,
                  "after": 0.1083
                },
                {
                  "stat": "totalCross",
                  "before": 0.0,
                  "after": 0.0541
                },
                {
                  "stat": "wasFouled",
                  "before": 1.7177,
                  "after": 1.7478
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5322,
                  "after": 0.5164
                },
                {
                  "stat": "goals",
                  "before": 0.3198,
                  "after": 0.3103
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 29.3 expected minutes (appearance prob 0.54)",
              "stats": {
                "expected_goals": 0.042,
                "goal_rate": 0.1009,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0128,
                "key_pass": 0,
                "rating": 7.0124,
                "minutes": 29,
                "total_pass": 3,
                "accurate_pass": 2,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.8961,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 1,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 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,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 56.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 29.26
              },
              "params": {
                "expected_minutes": 29.26,
                "appearance_probability": 0.539
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.042,
                "goal_rate": 0.1009,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0128,
                "key_pass": 0,
                "rating": 7.0124,
                "minutes": 29,
                "total_pass": 3,
                "accurate_pass": 2,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.8961,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 1,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 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,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 56.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 29.26
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "expected_goals": 0.0395,
                "goal_rate": 0.1009,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0128,
                "key_pass": 0,
                "rating": 7.0124,
                "minutes": 29,
                "total_pass": 3,
                "accurate_pass": 2,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.8961,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 1,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 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,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 56.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 29.26,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 8, fifa_overall 73.0)",
              "stats": {
                "expected_goals": 0.0395,
                "goal_rate": 0.1009,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0128,
                "key_pass": 0,
                "rating": 7.0124,
                "minutes": 29,
                "total_pass": 3,
                "accurate_pass": 2,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 2,
                "accurate_opp_half_passes": 1,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 5,
                "possession_lost": 1.8961,
                "dispossessed": 0.0,
                "duels_lost": 1,
                "aerial_lost": 2,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 1,
                "challenges_lost": 1,
                "fouls": 0,
                "fouls_drawn": 1,
                "assists": 0,
                "shots_off_target": 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,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 56.1,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.539,
                "bench_expected_minutes": 29.26,
                "projected_substitution_order": 2,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 73.0
              },
              "params": {
                "match_squad_rank": 8,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4122,
                "fifa_rank": 3266.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 73.0
              }
            }
          ]
        },
        "Ellis Simms": {
          "player_id": 991614,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 190,
          "market_value": 11500000,
          "stats": {
            "expected_goals": 0.0448,
            "goal_rate": 0.0712,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0056,
            "key_pass": 0,
            "rating": 6.7443,
            "minutes": 26,
            "total_pass": 2,
            "accurate_pass": 0,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 4,
            "possession_lost": 1.5893,
            "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,
            "assists": 0,
            "shots_off_target": 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": 0,
            "total_progression": 0,
            "progressive_carries": 0,
            "total_shots": 0,
            "yellowCards": 0.0,
            "redCards": 0.0,
            "ownGoals": 0.0,
            "minutesPct": 38.3,
            "pointsPerMatch": 0.0,
            "netGoalDifferencePer90": 0.0,
            "bench_appearance_probability": 0.342,
            "bench_expected_minutes": 25.7,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.226,
            "projected_substitution_game_state_adjustment": 1,
            "substitution_usage": "projected_used_substitute",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16363263.0,
              "match_date": "2026-09-05",
              "home_team": "Manchester City",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Coventry City",
              "opponent": "Manchester City",
              "stats": {
                "minutes": 19,
                "rating": 6.5,
                "assists": 0,
                "expected_goals": 0.2959,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 1,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16363633.0,
              "match_date": "2026-08-21",
              "home_team": "Arsenal",
              "away_team": "Coventry City",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Coventry City",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 70,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.0068,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 9,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17.0",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "96668.0",
              "season_name": "Premier League 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4696,
            "combined_rank_score": 2785.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 1.0,
            "fifa_rank": 4748.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "projected_match_rating": 6.7443,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ellis Simms",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Badredine Bouanani",
                  "ranking": 4691
                },
                {
                  "player_name": "Aljoscha Kemlein",
                  "ranking": 4692
                },
                {
                  "player_name": "Yoel Lago",
                  "ranking": 4693
                },
                {
                  "player_name": "Joel Latibeaudiere",
                  "ranking": 4694
                },
                {
                  "player_name": "Mats Rots",
                  "ranking": 4695
                }
              ],
              "lower": [
                {
                  "player_name": "Oscar Højlund",
                  "ranking": 4697
                },
                {
                  "player_name": "Yannick Gerhardt",
                  "ranking": 4698
                },
                {
                  "player_name": "Eric Smith",
                  "ranking": 4699
                },
                {
                  "player_name": "Hauke Wahl",
                  "ranking": 4700
                },
                {
                  "player_name": "Moritz Jenz",
                  "ranking": 4701
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value",
            "fbref_season"
          ],
          "data_confidence": 0.383,
          "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",
              "topSpeed",
              "numberOfSprints",
              "ballRecovery",
              "possessionLostCtrl",
              "passValueNormalized",
              "dribbleValueNormalized",
              "defensiveValueNormalized",
              "shotValueNormalized",
              "ballCarriesCount",
              "totalProgression",
              "progressiveBallCarriesCount",
              "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",
              "speed_threat",
              "progressive_carries_p90",
              "history_matches"
            ],
            "targets_predicted": [
              "expectedGoals",
              "goals",
              "onTargetScoringAttempt",
              "expectedAssists",
              "keyPass",
              "rating"
            ],
            "history_matches": 2,
            "data_confidence": 0.383,
            "data_sources": [
              "match_history",
              "market_value",
              "fbref_season"
            ],
            "bench_expected_minutes": 25.698067743081424,
            "bench_appearance_prob": 0.342,
            "market_value_adjustment": 1.012,
            "fbref_prior_metrics": {
              "squad": "Coventry City",
              "competition": "Premier League",
              "season": "2026-2027",
              "appearances": 1.0,
              "starts": 1.0,
              "sub_appearances": 0.0,
              "goals_per90": 0.0,
              "assists_per90": 0.0,
              "prior_reliability": 0.0533
            },
            "rationale": "Bench projection scaled from XGBoost F_service (2 historical appearances) to 25.7 expected mins (appearance prob 0.34); FBref playing time empirical prior: 0.0 sub appearances, 0 mins/sub."
          },
          "stat_evolution": [
            {
              "step": "xgboost_raw",
              "description": "XGBoost F_service raw output over 6 target models",
              "stats": {
                "expected_goals": 0.1649,
                "goal_rate": 0.2525,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0195,
                "key_pass": 0,
                "rating": 6.6645,
                "minutes": 44,
                "total_pass": 7,
                "accurate_pass": 0,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 5,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 13,
                "possession_lost": 5.5,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "trace": {
                "model": {
                  "position_service": "F",
                  "schema_version": 3,
                  "trained_at": "2026-09-15T10:01:52.318462+00:00",
                  "trained_on": {
                    "matches": 93,
                    "players": 278,
                    "rows": 769
                  }
                },
                "player_history": [
                  {
                    "match_date": "2026-09-05",
                    "opponent": "Manchester City",
                    "minutes": 19.0,
                    "is_starting": false,
                    "weight": 0.5405,
                    "rating": 6.5
                  },
                  {
                    "match_date": "2026-08-21",
                    "opponent": "Arsenal",
                    "minutes": 70.0,
                    "is_starting": true,
                    "weight": 0.4595,
                    "rating": 6.6
                  }
                ],
                "feature_row": {
                  "history_matches": 2.0,
                  "is_starting_11": 0.0,
                  "onTargetScoringAttempt": 0.5405,
                  "totalShots": 0.5405,
                  "minutesPlayed": 42.4324,
                  "touches": 12.2703,
                  "dribbleValueNormalized": -0.0046
                },
                "per_target": [
                  {
                    "target": "expectedGoals",
                    "predicted": 0.16492226719856262,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "minutesPlayed",
                        "importance": 0.093
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0745
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0545
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.043
                      },
                      {
                        "name": "expectedAssists",
                        "importance": 0.0314
                      }
                    ],
                    "decomposition": {
                      "base": 0.2757,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0516
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0252
                        },
                        {
                          "name": "touches_p90",
                          "contribution": 0.0246
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0184
                        },
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.0144
                        }
                      ],
                      "others": -0.0626,
                      "total": 0.1649
                    }
                  },
                  {
                    "target": "goals",
                    "predicted": 0.2524528205394745,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.1
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0715
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0371
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0298
                      },
                      {
                        "name": "passValueNormalized",
                        "importance": 0.0268
                      }
                    ],
                    "decomposition": {
                      "base": 0.3455,
                      "items": [
                        {
                          "name": "onTargetScoringAttempt",
                          "contribution": -0.0491
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0392
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0225
                        },
                        {
                          "name": "passValueNormalized",
                          "contribution": 0.0168
                        },
                        {
                          "name": "pass_accuracy",
                          "contribution": 0.0171
                        }
                      ],
                      "others": -0.0161,
                      "total": 0.2525
                    }
                  },
                  {
                    "target": "onTargetScoringAttempt",
                    "predicted": 0.5286093354225159,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0703
                      },
                      {
                        "name": "totalShots",
                        "importance": 0.0583
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0486
                      },
                      {
                        "name": "touches",
                        "importance": 0.0401
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0347
                      }
                    ],
                    "decomposition": {
                      "base": 0.6329,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0533
                        },
                        {
                          "name": "totalShots",
                          "contribution": -0.0406
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0328
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": -0.0204
                        },
                        {
                          "name": "duel_win_rate",
                          "contribution": 0.0118
                        }
                      ],
                      "others": -0.0346,
                      "total": 0.5286
                    }
                  },
                  {
                    "target": "expectedAssists",
                    "predicted": 0.019503358751535416,
                    "scale": "per match (raw)",
                    "top_features": [
                      {
                        "name": "touches",
                        "importance": 0.0802
                      },
                      {
                        "name": "accuratePass",
                        "importance": 0.0621
                      },
                      {
                        "name": "accurateOppositionHalfPasses",
                        "importance": 0.0547
                      },
                      {
                        "name": "totalPass",
                        "importance": 0.0537
                      },
                      {
                        "name": "numberOfSprints",
                        "importance": 0.0397
                      }
                    ],
                    "decomposition": {
                      "base": 0.0579,
                      "items": [
                        {
                          "name": "numberOfSprints",
                          "contribution": -0.012
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.007
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0046
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0035
                        },
                        {
                          "name": "touches_p90",
                          "contribution": -0.0025
                        }
                      ],
                      "others": -0.0088,
                      "total": 0.0195
                    }
                  },
                  {
                    "target": "keyPass",
                    "predicted": 0.39011240005493164,
                    "scale": "count per match",
                    "top_features": [
                      {
                        "name": "is_starting_11",
                        "importance": 0.0738
                      },
                      {
                        "name": "dribbleValueNormalized",
                        "importance": 0.0657
                      },
                      {
                        "name": "ballCarriesCount",
                        "importance": 0.0615
                      },
                      {
                        "name": "keyPass",
                        "importance": 0.0458
                      },
                      {
                        "name": "aerialLost",
                        "importance": 0.0313
                      }
                    ],
                    "decomposition": {
                      "base": 0.6829,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.1668
                        },
                        {
                          "name": "duelWon",
                          "contribution": 0.0355
                        },
                        {
                          "name": "totalPass",
                          "contribution": -0.0348
                        },
                        {
                          "name": "opp_half_pass_pct",
                          "contribution": -0.0325
                        },
                        {
                          "name": "accuratePass",
                          "contribution": -0.0254
                        }
                      ],
                      "others": -0.0688,
                      "total": 0.3901
                    }
                  },
                  {
                    "target": "rating",
                    "predicted": 6.664484977722168,
                    "scale": "0-10",
                    "top_features": [
                      {
                        "name": "speed_threat",
                        "importance": 0.0598
                      },
                      {
                        "name": "is_starting_11",
                        "importance": 0.0489
                      },
                      {
                        "name": "opp_half_pass_pct",
                        "importance": 0.0439
                      },
                      {
                        "name": "minutesPlayed",
                        "importance": 0.0425
                      },
                      {
                        "name": "onTargetScoringAttempt",
                        "importance": 0.0404
                      }
                    ],
                    "decomposition": {
                      "base": 6.7136,
                      "items": [
                        {
                          "name": "is_starting_11",
                          "contribution": -0.0782
                        },
                        {
                          "name": "minutesPlayed",
                          "contribution": 0.0657
                        },
                        {
                          "name": "ballCarriesCount_p90",
                          "contribution": -0.0601
                        },
                        {
                          "name": "defensiveValueNormalized",
                          "contribution": -0.0529
                        },
                        {
                          "name": "shotValueNormalized",
                          "contribution": 0.0456
                        }
                      ],
                      "others": 0.0308,
                      "total": 6.6645
                    }
                  }
                ],
                "caveat": "Raw XGBoost output: no per-90 normalization; minutesPlayed is the player's historical average."
              }
            },
            {
              "step": "market_value_boost",
              "description": "Market-value quality scaling (boost 1.0120, quality 0.540)",
              "stats": {
                "expected_goals": 0.1669,
                "goal_rate": 0.2555,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0197,
                "key_pass": 0,
                "rating": 6.7443,
                "minutes": 45,
                "total_pass": 7,
                "accurate_pass": 0,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 5,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 13,
                "possession_lost": 5.5659,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0
              },
              "params": {
                "market_value_eur": 11500000,
                "quality_factor": 0.5399,
                "boost_factor": 1.012
              }
            },
            {
              "step": "fbref_prior_blend",
              "description": "FBref 2026-27 prior blended (weight 0.0247)",
              "stats": {
                "expected_goals": 0.1669,
                "goal_rate": 0.2492,
                "goals": 0,
                "shots_on_target": 1,
                "expected_assists": 0.0197,
                "key_pass": 0,
                "rating": 6.7443,
                "minutes": 45,
                "total_pass": 7,
                "accurate_pass": 0,
                "duels_won": 3,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 5,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 13,
                "possession_lost": 5.5659,
                "dispossessed": 0.0,
                "duels_lost": 4,
                "aerial_lost": 0,
                "total_contest": 0,
                "won_contest": 0,
                "ball_recovery": 0,
                "challenges_lost": 0,
                "fouls": 0,
                "fouls_drawn": 0,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 1,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 38.3,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": -3.91
              },
              "params": {
                "blend_weight": 0.0247,
                "history_matches": 2,
                "prior_reliability": 0.0533,
                "competition": "Premier League",
                "squad": "Coventry City"
              },
              "changes": [
                {
                  "stat": "fouls",
                  "before": 0.0,
                  "after": 0.0619
                },
                {
                  "stat": "wasFouled",
                  "before": 0.0,
                  "after": 0.0309
                },
                {
                  "stat": "onTargetScoringAttempt",
                  "before": 0.5349,
                  "after": 0.5217
                },
                {
                  "stat": "goals",
                  "before": 0.2555,
                  "after": 0.2492
                }
              ]
            },
            {
              "step": "minutes_scale",
              "description": "Bench projection scaled to 25.7 expected minutes (appearance prob 0.34)",
              "stats": {
                "expected_goals": 0.0477,
                "goal_rate": 0.0712,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0056,
                "key_pass": 0,
                "rating": 6.7443,
                "minutes": 26,
                "total_pass": 2,
                "accurate_pass": 0,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 4,
                "possession_lost": 1.5893,
                "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,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 38.3,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.7
              },
              "params": {
                "expected_minutes": 25.7,
                "appearance_probability": 0.342
              }
            },
            {
              "step": "final_cap",
              "description": "Stats clamped to historical constraints and shot-component identity",
              "stats": {
                "expected_goals": 0.0477,
                "goal_rate": 0.0712,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0056,
                "key_pass": 0,
                "rating": 6.7443,
                "minutes": 26,
                "total_pass": 2,
                "accurate_pass": 0,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 4,
                "possession_lost": 1.5893,
                "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,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 38.3,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.7
              },
              "params": {
                "stats_clamped": 0,
                "shot_identity_applied": false
              }
            },
            {
              "step": "team_lambda_rescale",
              "description": "Player expected_goals/expected_assists rescaled so squad sum equals team lambda 1.02 (squad xG sum 1.0855, xG scale 0.9397)",
              "stats": {
                "expected_goals": 0.0448,
                "goal_rate": 0.0712,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0056,
                "key_pass": 0,
                "rating": 6.7443,
                "minutes": 26,
                "total_pass": 2,
                "accurate_pass": 0,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 4,
                "possession_lost": 1.5893,
                "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,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 38.3,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.7,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0
              },
              "params": {
                "team_lambda": 1.02,
                "squad_xg_sum": 1.0855,
                "xg_scale": 0.9397,
                "scoreline_reset": true
              }
            },
            {
              "step": "rankings_attached",
              "description": "Global ranking attached (match squad rank 15, fifa_overall 71.0)",
              "stats": {
                "expected_goals": 0.0448,
                "goal_rate": 0.0712,
                "goals": 0,
                "shots_on_target": 0,
                "expected_assists": 0.0056,
                "key_pass": 0,
                "rating": 6.7443,
                "minutes": 26,
                "total_pass": 2,
                "accurate_pass": 0,
                "duels_won": 1,
                "total_long_balls": 0,
                "accurate_long_balls": 0,
                "total_opp_half_passes": 1,
                "accurate_opp_half_passes": 0,
                "crosses_total": 0,
                "crosses_accurate": 0,
                "touches": 4,
                "possession_lost": 1.5893,
                "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,
                "assists": 0,
                "shots_off_target": 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": 0,
                "total_progression": 0,
                "progressive_carries": 0,
                "total_shots": 0,
                "yellowCards": 0.0,
                "redCards": 0.0,
                "ownGoals": 0.0,
                "minutesPct": 38.3,
                "pointsPerMatch": 0.0,
                "netGoalDifferencePer90": 0.0,
                "bench_appearance_probability": 0.342,
                "bench_expected_minutes": 25.7,
                "projected_substitution_order": 3,
                "substitution_rule_cap": 5,
                "projected_team_substitution_count": 3,
                "projected_substitution_expected_count": 2.226,
                "projected_substitution_game_state_adjustment": 1,
                "substitution_usage": "projected_used_substitute",
                "projected_goals": 0,
                "goal_probability": 0.0,
                "projected_assists": 0,
                "assist_probability": 0.0,
                "fifa_overall": 71.0
              },
              "params": {
                "match_squad_rank": 15,
                "squad_role": "substitute",
                "ranking_source": "sofascore_plus_fifa_csv",
                "ranking_status": "combined",
                "global_player_rank": 4696,
                "fifa_rank": 4748.0,
                "fifa_source": "EA SPORTS FC official ratings",
                "fifa_overall": 71.0
              }
            }
          ]
        }
      },
      "team_totals": {
        "projected_goals": 0,
        "expected_goals": 1.02,
        "expected_assists": 0.96,
        "total_shots": 14,
        "shots_on_target": 6,
        "total_passes": 319,
        "interceptions": 3,
        "tackles": 8,
        "avg_rating": 7.06,
        "possession_estimated_pct": 48.3,
        "pressing_actions_per_90": 7.0
      }
    }
  },
  "antagonist_report": {
    "home_attacking_duels": [
      {
        "attacker": "Morgan Gibbs-White",
        "attacker_role": "CM",
        "attacker_market_value": 67000000,
        "attacker_height": 171,
        "attacker_skill_quality": 0.866,
        "defenders": [
          "Jack Rudoni"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.641,
        "duel_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.465,
        "xg_contribution": 0.187,
        "shots_in_zone": 1.7,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.2,
        "aerial_duels": 2,
        "aerial_won": 0.8,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Jack Rudoni",
            "role": "CM",
            "market_value": 21000000,
            "tackles_attempted": 2.1,
            "tackles_won": 1.8,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.2,
            "defensive_success_rate": 0.535
          }
        ],
        "duel_analysis": "Morgan Gibbs-White (CM) is evenly matched against Jack Rudoni in a direct 1v1 contest. Duel win probability: 47%. The quality gap is significant (€67M vs €21M avg). Projected xG contribution: 0.187 — with neither side clearly dominant."
      },
      {
        "attacker": "Callum Hudson Odoi",
        "attacker_role": "CM",
        "attacker_market_value": 32000000,
        "attacker_height": 177,
        "attacker_skill_quality": 0.732,
        "defenders": [
          "Jack Rudoni"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.641,
        "duel_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.429,
        "xg_contribution": 0.067,
        "shots_in_zone": 1.6,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.1,
        "aerial_duels": 2,
        "aerial_won": 1.0,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Jack Rudoni",
            "role": "CM",
            "market_value": 21000000,
            "tackles_attempted": 2.1,
            "tackles_won": 1.8,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.571
          }
        ],
        "duel_analysis": "Callum Hudson Odoi (CM) is evenly matched against Jack Rudoni in a direct 1v1 contest. Duel win probability: 43%.  Projected xG contribution: 0.067 — with neither side clearly dominant."
      },
      {
        "attacker": "Igor Jesus",
        "attacker_role": "LW",
        "attacker_market_value": 26000000,
        "attacker_height": 179,
        "attacker_skill_quality": 0.686,
        "defenders": [
          "Milan van Ewijk"
        ],
        "defender_roles": [
          "CB"
        ],
        "def_skill_quality_avg": 0.66,
        "duel_zone": "LW vs CB",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.448,
        "xg_contribution": 0.2778,
        "shots_in_zone": 1.9,
        "dribbles_attempted": 4,
        "dribbles_successful": 1.6,
        "aerial_duels": 2,
        "aerial_won": 1.0,
        "crosses_in_zone": 2.3,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Milan van Ewijk",
            "role": "CB",
            "market_value": 23000000,
            "tackles_attempted": 2.1,
            "tackles_won": 1.8,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.552
          }
        ],
        "duel_analysis": "Igor Jesus (LW) is evenly matched against Milan van Ewijk in a direct 1v1 contest. Duel win probability: 45%.  Projected xG contribution: 0.278 — with neither side clearly dominant."
      },
      {
        "attacker": "Liam Delap",
        "attacker_role": "ST",
        "attacker_market_value": 26000000,
        "attacker_height": 186,
        "attacker_skill_quality": 0.686,
        "defenders": [
          "Milan van Ewijk",
          "Bobby Thomas"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.627,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.248,
        "xg_contribution": 0.145,
        "shots_in_zone": 2.3,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.4,
        "aerial_duels": 3,
        "aerial_won": 1.8,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Milan van Ewijk",
            "role": "CB",
            "market_value": 23000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.1,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.752
          },
          {
            "player": "Bobby Thomas",
            "role": "CB",
            "market_value": 16500000,
            "tackles_attempted": 1.0,
            "tackles_won": 1.1,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.752
          }
        ],
        "duel_analysis": "Liam Delap (ST) is heavily outmatched defensively against Milan van Ewijk and Bobby Thomas in a 2-defender block. Duel win probability: 25%.  Projected xG contribution: 0.145 — with very limited chance creation expected."
      },
      {
        "attacker": "Arnaud Kalimuendo",
        "attacker_role": "RW",
        "attacker_market_value": 24000000,
        "attacker_height": 175,
        "attacker_skill_quality": 0.669,
        "defenders": [
          "Milan van Ewijk"
        ],
        "defender_roles": [
          "CB"
        ],
        "def_skill_quality_avg": 0.66,
        "duel_zone": "RW vs CB",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.424,
        "xg_contribution": 0.1678,
        "shots_in_zone": 1.8,
        "dribbles_attempted": 4,
        "dribbles_successful": 1.5,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 2.3,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Milan van Ewijk",
            "role": "CB",
            "market_value": 23000000,
            "tackles_attempted": 2.1,
            "tackles_won": 1.9,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.576
          }
        ],
        "duel_analysis": "Arnaud Kalimuendo (RW) is evenly matched against Milan van Ewijk in a direct 1v1 contest. Duel win probability: 42%.  Projected xG contribution: 0.168 — with neither side clearly dominant."
      }
    ],
    "away_attacking_duels": [
      {
        "attacker": "Haji Wright",
        "attacker_role": "ST",
        "attacker_market_value": 16600000,
        "attacker_height": 193,
        "attacker_skill_quality": 0.596,
        "defenders": [
          "Ousmane Diomande",
          "Nikola Milenković"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.743,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.185,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 2.1,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "HIGH",
        "defender_stats": [
          {
            "player": "Ousmane Diomande",
            "role": "CB",
            "market_value": 44000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.3,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 1.1,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Nikola Milenković",
            "role": "CB",
            "market_value": 26000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.2,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 1.0,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Haji Wright (ST) is heavily outmatched defensively against Ousmane Diomande and Nikola Milenković in a 2-defender block. Duel win probability: 18%. The quality gap is significant (€17M vs €35M avg). Projected xG contribution: 0.185 — with very limited chance creation expected."
      },
      {
        "attacker": "Sidiki Cherif",
        "attacker_role": "SS",
        "attacker_market_value": 16900000,
        "attacker_height": 188,
        "attacker_skill_quality": 0.6,
        "defenders": [
          "Ousmane Diomande",
          "Morgan Gibbs-White"
        ],
        "defender_roles": [
          "CB",
          "CM"
        ],
        "def_skill_quality_avg": 0.833,
        "duel_zone": "Shadow Striker vs CB + Mid Cover — Layered Defense",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.205,
        "xg_contribution": 0.1962,
        "shots_in_zone": 1.7,
        "dribbles_attempted": 3,
        "dribbles_successful": 0.5,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "ULTRA_HIGH",
        "defender_stats": [
          {
            "player": "Ousmane Diomande",
            "role": "CB",
            "market_value": 44000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.2,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.3,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.4,
            "defensive_success_rate": 0.795
          },
          {
            "player": "Morgan Gibbs-White",
            "role": "CM",
            "market_value": 67000000,
            "tackles_attempted": 1.2,
            "tackles_won": 1.3,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.4,
            "defensive_success_rate": 0.795
          }
        ],
        "duel_analysis": "Sidiki Cherif (SS) is heavily outmatched defensively against Ousmane Diomande and Morgan Gibbs-White in a 2-defender block. Duel win probability: 20%. The quality gap is significant (€17M vs €56M avg). Projected xG contribution: 0.196 — with very limited chance creation expected."
      },
      {
        "attacker": "Caleb Yirenkyi",
        "attacker_role": "LWB",
        "attacker_market_value": 18700000,
        "attacker_height": 182,
        "attacker_skill_quality": 0.618,
        "defenders": [
          "Arnaud Kalimuendo"
        ],
        "defender_roles": [
          "RW"
        ],
        "def_skill_quality_avg": 0.669,
        "duel_zone": "Left Wingback vs Right Winger — Tracking Run Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.445,
        "xg_contribution": 0.0765,
        "shots_in_zone": 1.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.8,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 2.6,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Arnaud Kalimuendo",
            "role": "RW",
            "market_value": 24000000,
            "tackles_attempted": 2.1,
            "tackles_won": 1.8,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.555
          }
        ],
        "duel_analysis": "Caleb Yirenkyi (LWB) is evenly matched against Arnaud Kalimuendo in a direct 1v1 contest. Duel win probability: 45%.  Projected xG contribution: 0.076 — with neither side clearly dominant."
      },
      {
        "attacker": "Gustavo Hamer",
        "attacker_role": "RWB",
        "attacker_market_value": 14700000,
        "attacker_height": 169,
        "attacker_skill_quality": 0.576,
        "defenders": [
          "Igor Jesus"
        ],
        "defender_roles": [
          "LW"
        ],
        "def_skill_quality_avg": 0.686,
        "duel_zone": "Right Wingback vs Left Winger — Tracking Run Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.351,
        "xg_contribution": 0.0431,
        "shots_in_zone": 0.9,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.6,
        "aerial_duels": 2,
        "aerial_won": 0.8,
        "crosses_in_zone": 2.5,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Igor Jesus",
            "role": "LW",
            "market_value": 26000000,
            "tackles_attempted": 2.1,
            "tackles_won": 2.0,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.1,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.2,
            "defensive_success_rate": 0.649
          }
        ],
        "duel_analysis": "Gustavo Hamer (RWB) faces tough defensive resistance against Igor Jesus in a direct 1v1 contest. Duel win probability: 35%.  Projected xG contribution: 0.043 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Jack Rudoni",
        "attacker_role": "CM",
        "attacker_market_value": 21000000,
        "attacker_height": 185,
        "attacker_skill_quality": 0.641,
        "defenders": [
          "Morgan Gibbs-White",
          "Dan Ndoye"
        ],
        "defender_roles": [
          "CM",
          "CDM"
        ],
        "def_skill_quality_avg": 0.796,
        "duel_zone": "Central Mid vs Mid + CDM Pressing Trap",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.21,
        "xg_contribution": 0.0786,
        "shots_in_zone": 1.1,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.4,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.6,
        "pressing_intensity_on_attacker": "HIGH",
        "defender_stats": [
          {
            "player": "Morgan Gibbs-White",
            "role": "CM",
            "market_value": 67000000,
            "tackles_attempted": 1.2,
            "tackles_won": 1.3,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.4,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.4,
            "defensive_success_rate": 0.79
          },
          {
            "player": "Dan Ndoye",
            "role": "CDM",
            "market_value": 31000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.2,
            "fouls_committed": 0.4,
            "interceptions_in_zone": 1.2,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.4,
            "defensive_success_rate": 0.79
          }
        ],
        "duel_analysis": "Jack Rudoni (CM) is heavily outmatched defensively against Morgan Gibbs-White and Dan Ndoye in a 2-defender block. Duel win probability: 21%. The quality gap is significant (€21M vs €49M avg). Projected xG contribution: 0.079 — with very limited chance creation expected."
      }
    ],
    "midfield_battle": {
      "home_midfield_power": 0.774,
      "away_midfield_power": 0.634,
      "home_creative_power": 0.658,
      "away_creative_power": 0.566,
      "home_defensive_power": 0.658,
      "away_defensive_power": 0.509,
      "home_dominance_ratio": 0.55,
      "home_midfield_count": 3,
      "away_midfield_count": 4,
      "home_midfield_players": [
        "Morgan Gibbs-White",
        "Callum Hudson Odoi",
        "Dan Ndoye"
      ],
      "away_midfield_players": [
        "Jack Rudoni",
        "Caleb Yirenkyi",
        "Ephron Mason-Clark",
        "Gustavo Hamer"
      ],
      "possession_advantage": "neutral",
      "estimated_possession_home_pct": 51.7,
      "estimated_possession_away_pct": 48.3,
      "home_pressing_actions_per_90": 8.0,
      "away_pressing_actions_per_90": 7.0,
      "home_key_passes_projected": 5.4,
      "away_key_passes_projected": 4.9,
      "home_throughball_threat": 2.6,
      "away_throughball_threat": 2.3,
      "key_personal_duel": "Morgan Gibbs-White vs Jack Rudoni",
      "midfield_lambda_factor_home": 1.02,
      "midfield_lambda_factor_away": 0.984
    },
    "formation_analysis": {
      "home_formation": "4-3-3",
      "away_formation": "3-4-2-1",
      "home_tactical_bonus": 0.06,
      "away_tactical_bonus": -0.06,
      "formation_verdict": "Tactical parity between 4-3-3 and 3-4-2-1. Match outcome driven primarily by individual player quality."
    },
    "home_lambda": 1.444,
    "away_lambda": 1.02,
    "home_top_threat_zones": [
      "LW vs CB",
      "Central Mid vs Central Mid — Box-to-Box Midfield Contest"
    ],
    "away_top_threat_zones": [
      "Shadow Striker vs CB + Mid Cover — Layered Defense",
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
    ],
    "home_player_antagonists": {
      "Morgan Gibbs-White": {
        "opponents": [
          "Jack Rudoni",
          "Sidiki Cherif",
          "Ephron Mason-Clark"
        ],
        "primary_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
        "source": "attacking_duel, defensive_duel, midfield_pairing"
      },
      "Callum Hudson Odoi": {
        "opponents": [
          "Jack Rudoni",
          "Caleb Yirenkyi"
        ],
        "primary_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
        "source": "attacking_duel, midfield_pairing"
      },
      "Igor Jesus": {
        "opponents": [
          "Milan van Ewijk",
          "Gustavo Hamer"
        ],
        "primary_zone": "LW vs CB",
        "source": "attacking_duel, defensive_duel"
      },
      "Liam Delap": {
        "opponents": [
          "Milan van Ewijk",
          "Bobby Thomas"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Arnaud Kalimuendo": {
        "opponents": [
          "Milan van Ewijk",
          "Caleb Yirenkyi"
        ],
        "primary_zone": "RW vs CB",
        "source": "attacking_duel, defensive_duel"
      },
      "Ousmane Diomande": {
        "opponents": [
          "Haji Wright",
          "Sidiki Cherif"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Nikola Milenković": {
        "opponents": [
          "Haji Wright"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Dan Ndoye": {
        "opponents": [
          "Jack Rudoni",
          "Gustavo Hamer"
        ],
        "primary_zone": "Central Mid vs Mid + CDM Pressing Trap",
        "source": "defensive_duel, midfield_pairing"
      },
      "John Victor": {
        "opponents": [
          "Yann Gboho",
          "Sidiki Cherif"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Murillo": {
        "opponents": [
          "Yann Gboho"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Neco Williams": {
        "opponents": [
          "Haji Wright"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "away_player_antagonists": {
      "Jack Rudoni": {
        "opponents": [
          "Morgan Gibbs-White",
          "Callum Hudson Odoi",
          "Dan Ndoye"
        ],
        "primary_zone": "Central Mid vs Central Mid — Box-to-Box Midfield Contest",
        "source": "defensive_duel, attacking_duel, midfield_pairing"
      },
      "Milan van Ewijk": {
        "opponents": [
          "Igor Jesus",
          "Liam Delap",
          "Arnaud Kalimuendo"
        ],
        "primary_zone": "LW vs CB",
        "source": "defensive_duel"
      },
      "Bobby Thomas": {
        "opponents": [
          "Liam Delap"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Haji Wright": {
        "opponents": [
          "Ousmane Diomande",
          "Nikola Milenković"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Sidiki Cherif": {
        "opponents": [
          "Ousmane Diomande",
          "Morgan Gibbs-White"
        ],
        "primary_zone": "Shadow Striker vs CB + Mid Cover — Layered Defense",
        "source": "attacking_duel"
      },
      "Caleb Yirenkyi": {
        "opponents": [
          "Arnaud Kalimuendo",
          "Callum Hudson Odoi"
        ],
        "primary_zone": "Left Wingback vs Right Winger — Tracking Run Duel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Gustavo Hamer": {
        "opponents": [
          "Igor Jesus",
          "Dan Ndoye"
        ],
        "primary_zone": "Right Wingback vs Left Winger — Tracking Run Duel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Ephron Mason-Clark": {
        "opponents": [
          "Morgan Gibbs-White"
        ],
        "primary_zone": "Midfield lane",
        "source": "midfield_pairing"
      },
      "Carl Rushworth": {
        "opponents": [
          "Igor Jesus",
          "Liam Delap"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Aurèle Amenda": {
        "opponents": [
          "Arnaud Kalimuendo"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Yann Gboho": {
        "opponents": [
          "Murillo",
          "Neco Williams"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "key_tactical_insight": "Midfield is evenly contested — Morgan Gibbs-White vs Jack Rudoni will be the pivotal duel. Total antagonist xG — Home: 0.84, Away: 0.58. Home danger zone: LW vs CB. Away danger zone: Shadow Striker vs CB + Mid Cover — Layered Defense.",
    "lambda_factors": {
      "home_gk_opposition_factor": 0.9503,
      "away_gk_opposition_factor": 1.001,
      "home_set_piece_bonus": 0.138,
      "away_set_piece_bonus": 0.169,
      "home_defensive_solidity_vs": 0.9632,
      "away_defensive_solidity_vs": 0.8956,
      "home_midfield_factor": 1.02,
      "away_midfield_factor": 0.984,
      "stage_discount": 1.0,
      "quality_gap_applied": true,
      "home_avg_quality": 0.7356,
      "away_avg_quality": 0.601,
      "avg_quality_gap": 0.1345,
      "squad_value_gap_log": 0.6876,
      "top5_value_gap_log": 0.7801,
      "attack_value_gap_log": 0.4948,
      "elite_count_gap": 3,
      "combined_quality_gap": 0.253,
      "stronger_lambda_boost": 0.1391,
      "weaker_lambda_suppression": 0.0809,
      "home_bench_lambda_bonus": 0.058,
      "away_bench_lambda_bonus": 0.0592,
      "home_bench_players_modelled": 7,
      "away_bench_players_modelled": 7,
      "mismatch_score_pressure_applied": false,
      "competitive_underdog_floor_applied": true,
      "competitive_underdog_floor": 1.02,
      "pre_competitive_floor_home_lambda": 1.444,
      "pre_competitive_floor_away_lambda": 0.875,
      "pre_calibration_home_lambda": 1.444,
      "pre_calibration_away_lambda": 0.8752,
      "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.444,
      "final_away_lambda": 1.02
    }
  },
  "home_standing": {
    "available": true,
    "team_position": 16,
    "opponent_position": 20,
    "standing_lambda_multiplier": 0.952,
    "attack_index": 0.833,
    "defense_concede_index": 1.041,
    "form_multiplier": 1.035,
    "team_attack_rate_contextual": 1.0,
    "opp_defense_rate_contextual": 1.25,
    "team_ppg": 0.67,
    "opponent_ppg": 0.0
  },
  "away_standing": {
    "available": true,
    "team_position": 20,
    "opponent_position": 16,
    "standing_lambda_multiplier": 1.0872,
    "attack_index": 1.0,
    "defense_concede_index": 1.249,
    "form_multiplier": 0.965,
    "team_attack_rate_contextual": 0.0,
    "opp_defense_rate_contextual": 1.5,
    "team_ppg": 0.0,
    "opponent_ppg": 0.67
  },
  "xgboost_reasoning": {
    "summary": "Antagonist + XGBoost match analysis for Forest vs Coventry. 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 3-4-2-1 (duel lambdas: Home 1.444, Away 0.875). Final calibrated Poisson lambdas: Home 1.444, Away 1.020 (most likely score 1-0).",
    "competition": "Premier League",
    "model_coverage": {
      "home_starters_count": 11,
      "home_xgboost_players": 10,
      "home_fbref_players": 0,
      "away_starters_count": 11,
      "away_xgboost_players": 8,
      "away_fbref_players": 7,
      "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.444,
      "away_lambda": 1.02,
      "micro_duel_home_lambda": 1.444,
      "micro_duel_away_lambda": 0.875
    },
    "calibration_and_pressure": {
      "competition_calibration_applied": false,
      "competition_calibration_scale": 1.0,
      "mismatch_pressure_applied": false,
      "underdog_floor_applied": true
    }
  },
  "timestamp": "2026-09-19T13:31:32Z",
  "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,
    "totalPass": 150.0,
    "accuratePass": 145.0,
    "keyPass": 8.0,
    "expectedAssists": 1.5,
    "goalAssist": 4.0,
    "expectedGoals": 3.0,
    "goals": 5.0,
    "totalShots": 12.0,
    "onTargetScoringAttempt": 8.0,
    "rating": 10.0,
    "minutesPlayed": 95.0,
    "duelWon": 20.0,
    "ballRecovery": 18.0,
    "fouls": 8.0
  }
}