{
  "match_info": {
    "home_team": "Espanyol",
    "away_team": "Sevilla",
    "tournament": "LaLiga",
    "date": "20260906",
    "timezone": "America/New_York",
    "home_formation": "4-4-2",
    "away_formation": "4-2-3-1",
    "lineup_status": "unconfirmed_official",
    "lineup_source": "/matches/get-lineups",
    "lineup_confirmed": false,
    "lineup_confidence": 0.75
  },
  "prediction": {
    "most_likely_score": "1-1",
    "home_goals": 1,
    "away_goals": 1,
    "most_likely_score_probability": 0.1284,
    "match_resolution": "draw",
    "predicted_winner": null,
    "tiebreaker": {
      "applies": false,
      "method": "none",
      "regulation_draw_probability": 0.27,
      "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-1",
        "probability": 0.1284
      },
      {
        "score": "0-1",
        "probability": 0.0989
      },
      {
        "score": "1-0",
        "probability": 0.0986
      },
      {
        "score": "1-2",
        "probability": 0.0809
      },
      {
        "score": "2-1",
        "probability": 0.0807
      }
    ],
    "scoreline_probabilities": {
      "0-0": 0.08,
      "0-1": 0.0989,
      "0-2": 0.0638,
      "0-3": 0.0271,
      "0-4": 0.0086,
      "0-5": 0.0022,
      "1-0": 0.0986,
      "1-1": 0.1284,
      "1-2": 0.0809,
      "1-3": 0.0343,
      "1-4": 0.0109,
      "1-5": 0.0028,
      "1-6": 0.0006,
      "2-0": 0.0634,
      "2-1": 0.0807,
      "2-2": 0.0514,
      "2-3": 0.0218,
      "2-4": 0.0069,
      "2-5": 0.0018,
      "3-0": 0.0268,
      "3-1": 0.0341,
      "3-2": 0.0217,
      "3-3": 0.0092,
      "3-4": 0.0029,
      "3-5": 0.0007,
      "4-0": 0.0085,
      "4-1": 0.0108,
      "4-2": 0.0069,
      "4-3": 0.0029,
      "4-4": 0.0009,
      "5-0": 0.0022,
      "5-1": 0.0027,
      "5-2": 0.0017,
      "5-3": 0.0007,
      "6-1": 0.0006
    },
    "outcome": {
      "home_win": 0.3641,
      "draw": 0.27,
      "away_win": 0.366
    },
    "markets": {
      "over_2_5_goals": 0.4669,
      "under_2_5_goals": 0.5331,
      "btts_yes": 0.5189,
      "btts_no": 0.4811,
      "home_clean_sheet": 0.28,
      "away_clean_sheet": 0.2811
    },
    "home_ratings": {
      "DR": 6.76,
      "MCR": 6.76,
      "ATR": 6.83,
      "GK": 7.07
    },
    "away_ratings": {
      "DR": 6.69,
      "MCR": 6.76,
      "ATR": 6.51,
      "GK": 6.86
    },
    "insights": {
      "summary": "Antagonist matchup analysis for Espanyol vs Sevilla. Most likely scoreline: 1-1. Lambdas derived from 4 home and 4 away individual player duels.",
      "key_player": "Projected scorer(s): Roberto Fernández, Miguel Sierra",
      "tactical_analysis": "Tactical parity between 4-4-2 and 4-2-3-1. Match outcome driven primarily by individual player quality. Midfield is evenly contested — Urko González vs Lucien Agoumé will be the pivotal duel. Total antagonist xG — Home: 0.43, Away: 0.43. Home danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle."
    },
    "confidence": 0.61,
    "home_lambda": 1.269,
    "away_lambda": 1.273
  },
  "pregame_baseline": {
    "fair_win_probability": {
      "home_win": 0.3641,
      "draw": 0.27,
      "away_win": 0.366
    },
    "favorite": "Sevilla",
    "favorite_win_probability": 0.366,
    "fair_spread": -0.004,
    "fair_total": 2.542,
    "prop_estimates": [
      {
        "market": "team_total_goals",
        "selection": "Espanyol",
        "estimate": 1.269,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "team_total_goals",
        "selection": "Sevilla",
        "estimate": 1.273,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "over_2_5_goals",
        "selection": "yes",
        "estimate": 2.5,
        "probability": 0.4669,
        "unit": "probability"
      },
      {
        "market": "both_teams_to_score",
        "selection": "yes",
        "estimate": 1.0,
        "probability": 0.5189,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Espanyol",
        "estimate": 1.0,
        "probability": 0.28,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Sevilla",
        "estimate": 1.0,
        "probability": 0.2811,
        "unit": "probability"
      },
      {
        "market": "anytime_goal",
        "selection": "Roberto Fernández (Espanyol)",
        "estimate": 0.3172,
        "probability": 0.3606,
        "unit": "xG"
      },
      {
        "market": "anytime_goal",
        "selection": "Robbie Ure (Sevilla)",
        "estimate": 0.316,
        "probability": 0.197,
        "unit": "xG"
      },
      {
        "market": "assist",
        "selection": "Unai Núñez (Espanyol)",
        "estimate": 0.1277,
        "probability": 0.0613,
        "unit": "xA"
      },
      {
        "market": "assist",
        "selection": "Giorgi Kochorashvili (Sevilla)",
        "estimate": 0.0687,
        "probability": 0.1485,
        "unit": "xA"
      }
    ],
    "expected_pace": {
      "tempo": "balanced",
      "expected_total_goals": 2.542,
      "expected_total_shots": 25,
      "expected_total_passes": 678,
      "expected_pressing_actions_per_90": 13.2,
      "possession_home_pct": 50.7,
      "possession_away_pct": 49.3,
      "notes": "possession projects near even"
    },
    "expected_game_script": {
      "favorite": "Sevilla",
      "favorite_win_probability": 0.366,
      "script": "Sevilla is the fair winner side, but the baseline remains narrow: fair spread -0.00 goals and fair total 2.54.",
      "first_half": "Expect balanced tempo while both sides test the matchup thesis; shot baseline is about 12 first-half attempts.",
      "second_half": "If level after halftime, midfield control and bench quality should decide territory; Espanyol must keep the match inside one goal.",
      "late_game": "A Sevilla lead likely shifts toward control and counters; a draw state keeps set pieces and transition chances live."
    },
    "key_matchup_thesis": "Espanyol chance creation leans on Roberto Fernández against Kike Salas, Andres Castrin in Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle; possession projects near even.",
    "expected_rotation_usage_behavior": [
      "Espanyol: starters carry the main goal usage through Roberto Fernández; bench watchlist: Bryan Zaragoza, Marcos Fernández.",
      "Sevilla: starters carry the main goal usage through Miguel Sierra; bench watchlist: Youssouf Fofana, Lucas Stassin, Isaac Romero.",
      "Assist usage should flow through Tyrhys Dolan, Gabriel Suazo; late lineup changes should re-score these allocations."
    ],
    "pregame_play_by_play": [
      "0-15: Sevilla tries to establish the projected edge; track possession and first-shot share.",
      "15-45: Baseline expects balanced tempo, about 12 total first-half shots, and 1.27 first-half xG pace.",
      "45-70: If the match is level, watch midfield control and the listed bench watchlists for usage changes.",
      "70-90: If Espanyol is chasing, transition and set-piece volume become the primary live deviation signal; a draw state keeps set pieces and transition chances live."
    ],
    "invalidation_triggers": [
      "Early red card, injury, or goalkeeper change for Sevilla.",
      "Espanyol wins the midfield/territory battle beyond the possession baseline.",
      "Pace collapses: first 25 minutes fall well below the shot and box-entry baseline.",
      "Set pieces, penalties, or second balls create more danger than the open-play matchup thesis."
    ],
    "top_3_risk_factors": [
      {
        "factor": "Low-event scoring variance",
        "impact": "One penalty, deflection, or missed big chance can overwhelm the fair win probability."
      },
      {
        "factor": "Late lineup or role change",
        "impact": "A pregame XI, injury, or tactical role shift can invalidate player prop and usage estimates."
      },
      {
        "factor": "Discipline and set-piece volatility",
        "impact": "Cards, fouls in dangerous zones, and corner volume can change the expected game script quickly."
      }
    ]
  },
  "teams": {
    "Espanyol": {
      "formation": "4-4-2",
      "players": {
        "Marko Dmitrović": {
          "player_id": 94527,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 13,
          "height": 194,
          "market_value": 650000,
          "stats": {
            "saves": 3,
            "goals_prevented": 0.153,
            "rating": 7.068,
            "minutes": 88,
            "total_pass": 21,
            "accurate_pass": 13,
            "total_long_balls": 13,
            "accurate_long_balls": 5,
            "touches": 35,
            "clearances": 1,
            "ball_recovery": 9,
            "high_claims": 3,
            "punches": 0.9812,
            "aerial_won": 0,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 4,
            "possession_lost": 8.1736,
            "duels_won": 0,
            "duels_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 11,
            "accurate_own_half_passes": 9,
            "expected_saves": 0.9,
            "high_pressure_saves": 0.34,
            "shots_faced": 1.9,
            "opponent_faced": "Robbie Ure, Miguel Sierra",
            "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": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16416310.0,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 16,
                "interceptions": 1,
                "ball_recovery": 9,
                "saves": 7,
                "goals_prevented": 1.0653
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306.0,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0012,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 9,
                "clearances": 1,
                "ball_recovery": 8,
                "saves": 6,
                "goals_prevented": -0.0185
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053.0,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0013,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 14,
                "ball_recovery": 10
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1310,
            "combined_rank_score": 568.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 180.0,
            "sofascore_rating": 7.2333,
            "sofascore_appearances": 3.0,
            "fifa_rank": 957.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "starter",
            "projected_match_rating": 7.068,
            "source_file": "data/player_rankings.csv",
            "player_name": "Marko Dmitrović",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mario Gila",
                  "ranking": 1305
                },
                {
                  "player_name": "Son Heung Min",
                  "ranking": 1306
                },
                {
                  "player_name": "Bazoumana Touré",
                  "ranking": 1307
                },
                {
                  "player_name": "Emil Audero",
                  "ranking": 1308
                },
                {
                  "player_name": "Lukáš Haraslín",
                  "ranking": 1309
                }
              ],
              "lower": [
                {
                  "player_name": "Tino Livramento",
                  "ranking": 1311
                },
                {
                  "player_name": "Yéremy Pino",
                  "ranking": 1312
                },
                {
                  "player_name": "Cecilio Waterman",
                  "ranking": 1313
                },
                {
                  "player_name": "Javier Guerra",
                  "ranking": 1314
                },
                {
                  "player_name": "Pedro Gonçalves",
                  "ranking": 1315
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Omar El Hilali": {
          "player_id": 1064026,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 23,
          "height": 183,
          "market_value": 15900000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 1,
            "rating": 6.953,
            "minutes": 92,
            "total_pass": 31,
            "accurate_pass": 26,
            "duels_won": 3,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 19,
            "accurate_own_half_passes": 17,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 9,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 60,
            "possession_lost": 11.9813,
            "dispossessed": 0.0,
            "duels_lost": 5,
            "aerial_lost": 2,
            "total_contest": 2,
            "won_contest": 2,
            "ball_recovery": 3,
            "challenges_lost": 2,
            "fouls": 2,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0411,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 12,
            "total_progression": 13,
            "progressive_carries": 0,
            "key_pass": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 1.1,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.807,
            "opponent_faced": "Robbie Ure",
            "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.0094,
            "projected_assists": 0,
            "assist_probability": 0.0159,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16416310.0,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assists": 0,
                "expected_assists": 0.0954,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 33,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306.0,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assists": 0,
                "expected_assists": 0.0098,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 17,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 5,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053.0,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.0066,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 26,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3547,
            "combined_rank_score": 1516.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 622.0,
            "sofascore_rating": 6.7667,
            "sofascore_appearances": 3.0,
            "fifa_rank": 2410.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "projected_match_rating": 6.953,
            "source_file": "data/player_rankings.csv",
            "player_name": "Omar El Hilali",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Sergio Camello",
                  "ranking": 3542
                },
                {
                  "player_name": "Mio Backhaus",
                  "ranking": 3543
                },
                {
                  "player_name": "Jindřich Staněk",
                  "ranking": 3544
                },
                {
                  "player_name": "Janis Blaswich",
                  "ranking": 3545
                },
                {
                  "player_name": "Jobe Bellingham",
                  "ranking": 3546
                }
              ],
              "lower": [
                {
                  "player_name": "Matt Turner",
                  "ranking": 3548
                },
                {
                  "player_name": "Jack Rudoni",
                  "ranking": 3549
                },
                {
                  "player_name": "Nemanja Matić",
                  "ranking": 3550
                },
                {
                  "player_name": "Reiss Nelson",
                  "ranking": 3551
                },
                {
                  "player_name": "Tolu Arokodare",
                  "ranking": 3552
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Leandro Cabrera": {
          "player_id": 81992,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 6,
          "height": 190,
          "market_value": 930000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 2,
            "duels_won": 5,
            "total_pass": 42,
            "accurate_pass": 33,
            "expected_goals": 0.023,
            "rating": 6.8,
            "minutes": 90,
            "total_long_balls": 5,
            "accurate_long_balls": 3,
            "total_own_half_passes": 27,
            "accurate_own_half_passes": 21,
            "total_opp_half_passes": 9,
            "accurate_opp_half_passes": 6,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 58,
            "possession_lost": 6.2,
            "dispossessed": 0.4,
            "duels_lost": 3,
            "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.045,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.012,
            "key_pass": 0,
            "ball_carries": 19,
            "total_progression": 56,
            "progressive_carries": 4,
            "opponent_faced": "Chidera Ejuke",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0343,
            "projected_assists": 0,
            "assist_probability": 0.0156,
            "fifa_overall": 76.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3325,
            "combined_rank_score": 1280.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 612.0,
            "sofascore_rating": 6.7757,
            "sofascore_appearances": 37.0,
            "fifa_rank": 1948.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "starter",
            "projected_match_rating": 6.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "Leandro Cabrera",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Aimar Oroz",
                  "ranking": 3320
                },
                {
                  "player_name": "Konstantinos Koulierakis",
                  "ranking": 3321
                },
                {
                  "player_name": "Óliver Torres",
                  "ranking": 3322
                },
                {
                  "player_name": "Daley Blind",
                  "ranking": 3323
                },
                {
                  "player_name": "Williot Swedberg",
                  "ranking": 3324
                }
              ],
              "lower": [
                {
                  "player_name": "Alejandro Zendejas",
                  "ranking": 3326
                },
                {
                  "player_name": "Sacha Boey",
                  "ranking": 3327
                },
                {
                  "player_name": "Hugo Cuypers",
                  "ranking": 3328
                },
                {
                  "player_name": "Carl Rushworth",
                  "ranking": 3329
                },
                {
                  "player_name": "Juan Brunetta",
                  "ranking": 3330
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0
        },
        "Roberto Fernández": {
          "player_id": 1392592,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 9,
          "height": 186,
          "market_value": 10300000,
          "stats": {
            "expected_goals": 0.3172,
            "goal_rate": 0.3463,
            "goals": 1,
            "shots_on_target": 1,
            "expected_assists": 0.0297,
            "key_pass": 1,
            "rating": 6.8326,
            "minutes": 88,
            "total_shots": 2,
            "duels_won": 4,
            "aerial_won": 2,
            "total_pass": 14,
            "accurate_pass": 10,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 9,
            "accurate_opp_half_passes": 7,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 26,
            "possession_lost": 7.0546,
            "dispossessed": 1.0078,
            "duels_lost": 5,
            "aerial_lost": 3,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 2,
            "assists": 0,
            "shots_off_target": 2,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 3,
            "blocks": 1,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 1.0683,
            "offsides": 0,
            "ball_carries": 8,
            "total_progression": 9,
            "progressive_carries": 0,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.193,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Kike Salas, Andres Castrin",
            "opponent_faced": "Kike Salas, Andres Castrin",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.3606,
            "projected_assists": 0,
            "assist_probability": 0.0747,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16416310.0,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 83,
                "rating": 7.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.2734,
                "expected_assists": 0.0482,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 14,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306.0,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assists": 0,
                "expected_goals": 0.62,
                "expected_assists": 0.0121,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 10,
                "accurate_pass": 8,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 4,
                "duels_won": 6,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053.0,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 8.7,
                "goal_rate": 2.0,
                "goals": 2,
                "assists": 0,
                "expected_goals": 0.4597,
                "expected_assists": 0.0976,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 12,
                "accurate_pass": 7,
                "key_pass": 2,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3459,
            "combined_rank_score": 1454.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 6.0,
            "sofascore_rating": 8.7,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2903.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "projected_match_rating": 6.8326,
            "source_file": "data/player_rankings.csv",
            "player_name": "Roberto Fernández",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Marco Sportiello",
                  "ranking": 3454
                },
                {
                  "player_name": "Arsène Kouassi",
                  "ranking": 3455
                },
                {
                  "player_name": "Leif Davis",
                  "ranking": 3456
                },
                {
                  "player_name": "Ismaëlo Ganiou",
                  "ranking": 3457
                },
                {
                  "player_name": "Olivier Giroud",
                  "ranking": 3458
                }
              ],
              "lower": [
                {
                  "player_name": "Eric Dier",
                  "ranking": 3460
                },
                {
                  "player_name": "Benjamin Nygren",
                  "ranking": 3461
                },
                {
                  "player_name": "Arnau Tenas",
                  "ranking": 3462
                },
                {
                  "player_name": "Yvon Mvogo",
                  "ranking": 3463
                },
                {
                  "player_name": "Duje Ćaleta-Car",
                  "ranking": 3464
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Javier Hernández": {
          "player_id": 1514913,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 28,
          "height": 175,
          "market_value": 1600000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0884,
            "assists": 0,
            "expected_goals": 0.2434,
            "rating": 6.7952,
            "minutes": 75,
            "total_pass": 19,
            "accurate_pass": 13,
            "ball_recovery": 3,
            "duels_won": 5,
            "total_shots": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 10,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 36,
            "possession_lost": 14.2278,
            "dispossessed": 2.9437,
            "duels_lost": 8,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 2,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 3,
            "fouls_drawn": 2,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 1,
            "shots_off_target": 1,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.0491,
            "ball_carries": 11,
            "total_progression": 87,
            "progressive_carries": 3,
            "opponent_faced": "Lucien Agoumé",
            "matchup_zone": "Midfield lane",
            "antagonist_source": "midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0734,
            "projected_assists": 0,
            "assist_probability": 0.1648,
            "fifa_overall": 86.0
          },
          "latest_10_games": [
            {
              "match_id": 16416310.0,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 70,
                "rating": 6.3,
                "assists": 1,
                "expected_goals": 0.0962,
                "expected_assists": 0.08,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 8,
                "key_pass": 2,
                "tackles": 1,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306.0,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 75,
                "rating": 6.9,
                "assists": 1,
                "expected_assists": 0.2864,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 15,
                "key_pass": 2,
                "tackles": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053.0,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 82,
                "rating": 7.3,
                "assists": 1,
                "expected_goals": 0.1872,
                "expected_assists": 0.3474,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 26,
                "accurate_pass": 19,
                "key_pass": 3,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 198,
            "combined_rank_score": 125.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 1.0,
            "fifa_rank": 93.0,
            "fifa_overall": 86.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "starter",
            "projected_match_rating": 6.7952,
            "source_file": "data/player_rankings.csv",
            "player_name": "Javier Hernández",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yarden Shua",
                  "ranking": 193
                },
                {
                  "player_name": "Antonio Sivera",
                  "ranking": 194
                },
                {
                  "player_name": "Igor Lichnovsky",
                  "ranking": 195
                },
                {
                  "player_name": "Luis Rojas",
                  "ranking": 196
                },
                {
                  "player_name": "Armandas Kučys",
                  "ranking": 197
                }
              ],
              "lower": [
                {
                  "player_name": "Daler Tukhsanov",
                  "ranking": 199
                },
                {
                  "player_name": "Azamat Soyibov",
                  "ranking": 200
                },
                {
                  "player_name": "Kervin Andrade",
                  "ranking": 201
                },
                {
                  "player_name": "Guillermo Maripán",
                  "ranking": 202
                },
                {
                  "player_name": "Emil Tîmbur",
                  "ranking": 203
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.375,
          "history_matches": 2
        },
        "Tyrhys Dolan": {
          "player_id": 1063015,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 24,
          "height": 170,
          "market_value": 10800000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0939,
            "assists": 1,
            "expected_goals": 0.1498,
            "rating": 6.6737,
            "minutes": 85,
            "total_pass": 22,
            "accurate_pass": 19,
            "ball_recovery": 6,
            "duels_won": 3,
            "total_shots": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 9,
            "accurate_own_half_passes": 8,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 11,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 42,
            "possession_lost": 12.4477,
            "dispossessed": 1.6859,
            "duels_lost": 6,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 2,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 4,
            "won_contest": 2,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 2,
            "goal_rate": 1.0095,
            "goals": 0,
            "shots_on_target": 1,
            "shots_off_target": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.6865,
            "ball_carries": 19,
            "total_progression": 110,
            "progressive_carries": 5,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.1,
            "crosses_attempted": 2.2,
            "duel_win_rate": 0.432,
            "pressing_faced": "LOW",
            "matchup_zone": "Left Mid vs Right Back — Wide Channel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Juan Iglesias",
            "opponent_faced": "Juan Iglesias",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.2166,
            "projected_assists": 1,
            "assist_probability": 0.1726,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16416310.0,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 83,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.1341,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 15,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306.0,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 5.8,
                "assists": 0,
                "expected_assists": 0.1023,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 18,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053.0,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 81,
                "rating": 7.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.2108,
                "expected_assists": 0.0398,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 29,
                "accurate_pass": 24,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "duels_won": 2,
                "ball_recovery": 11
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3488,
            "combined_rank_score": 1474.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 52.0,
            "sofascore_rating": 7.7,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2897.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "projected_match_rating": 6.6737,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tyrhys Dolan",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Leandro González Pírez",
                  "ranking": 3483
                },
                {
                  "player_name": "Mahdi Camara",
                  "ranking": 3484
                },
                {
                  "player_name": "Saud Abdulhamid",
                  "ranking": 3485
                },
                {
                  "player_name": "Orel Mangala",
                  "ranking": 3486
                },
                {
                  "player_name": "Lassine Sinayoko",
                  "ranking": 3487
                }
              ],
              "lower": [
                {
                  "player_name": "Yann Gboho",
                  "ranking": 3489
                },
                {
                  "player_name": "Ansu Fati",
                  "ranking": 3490
                },
                {
                  "player_name": "Marcus Edwards",
                  "ranking": 3491
                },
                {
                  "player_name": "Ismaël Doukouré",
                  "ranking": 3492
                },
                {
                  "player_name": "Unai Marrero",
                  "ranking": 3493
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Edu Expósito": {
          "player_id": 877262,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 8,
          "height": 175,
          "market_value": 4500000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0611,
            "assists": 0,
            "expected_goals": 0.0821,
            "rating": 6.7429,
            "minutes": 80,
            "total_pass": 45,
            "accurate_pass": 39,
            "ball_recovery": 7,
            "duels_won": 5,
            "total_shots": 2,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 22,
            "accurate_own_half_passes": 21,
            "total_opp_half_passes": 23,
            "accurate_opp_half_passes": 18,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 64,
            "possession_lost": 11.8417,
            "dispossessed": 2.6348,
            "duels_lost": 6,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 3,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 2,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 1,
            "shots_off_target": 2,
            "blocks": 1,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0592,
            "ball_carries": 16,
            "total_progression": 33,
            "progressive_carries": 1,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.2,
            "crosses_attempted": 2.1,
            "duel_win_rate": 0.436,
            "pressing_faced": "LOW",
            "matchup_zone": "Right Mid vs Left Back — Wide Channel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Gabriel Suazo",
            "opponent_faced": "Gabriel Suazo",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.046,
            "projected_assists": 0,
            "assist_probability": 0.1516,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 16416310.0,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 70,
                "rating": 6.6,
                "assists": 0,
                "expected_goals": 0.1531,
                "expected_assists": 0.036,
                "total_shots": 3,
                "shots_off_target": 3,
                "total_pass": 39,
                "accurate_pass": 32,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 9
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306.0,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 88,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.0563,
                "expected_assists": 0.0376,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 47,
                "accurate_pass": 40,
                "tackles": 4,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053.0,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 86,
                "rating": 6.9,
                "assists": 0,
                "expected_goals": 0.1101,
                "expected_assists": 0.0395,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 51,
                "accurate_pass": 47,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 2628,
            "combined_rank_score": 921.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 289.0,
            "sofascore_rating": 7.0556,
            "sofascore_appearances": 36.0,
            "fifa_rank": 1553.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "projected_match_rating": 6.7429,
            "source_file": "data/player_rankings.csv",
            "player_name": "Edu Expósito",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Francisco Jose Pozzo",
                  "ranking": 2623
                },
                {
                  "player_name": "Augustine Chidi Kwem",
                  "ranking": 2624
                },
                {
                  "player_name": "Otabek Ahadov",
                  "ranking": 2625
                },
                {
                  "player_name": "Rodrigo Sandoval",
                  "ranking": 2626
                },
                {
                  "player_name": "Ruben Loftus-Cheek",
                  "ranking": 2627
                }
              ],
              "lower": [
                {
                  "player_name": "Lucas Boyé",
                  "ranking": 2629
                },
                {
                  "player_name": "Duván Zapata",
                  "ranking": 2630
                },
                {
                  "player_name": "Tosin Adarabioyo",
                  "ranking": 2631
                },
                {
                  "player_name": "Selton Sanchez",
                  "ranking": 2632
                },
                {
                  "player_name": "Jung-Min Kim",
                  "ranking": 2633
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Urko González": {
          "player_id": 1064009,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 4,
          "height": 189,
          "market_value": 11600000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0443,
            "assists": 0,
            "expected_goals": 0.0505,
            "rating": 6.8531,
            "minutes": 65,
            "total_pass": 27,
            "accurate_pass": 25,
            "ball_recovery": 3,
            "duels_won": 2,
            "total_shots": 2,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 15,
            "accurate_own_half_passes": 14,
            "total_opp_half_passes": 12,
            "accurate_opp_half_passes": 11,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 36,
            "possession_lost": 5.0616,
            "dispossessed": 1.0123,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 2,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 2,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 1,
            "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": 10,
            "total_progression": 29,
            "progressive_carries": 0,
            "dribbles_attempted": 2,
            "dribbles_successful": 1.0,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.544,
            "pressing_faced": "LOW",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Giorgi Kochorashvili",
            "opponent_faced": "Giorgi Kochorashvili",
            "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0248,
            "projected_assists": 0,
            "assist_probability": 0.1405,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16416310.0,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 45,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0017,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 19,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306.0,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 75,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0151,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 28,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053.0,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 72,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0196,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 27,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 2,
                "duels_won": 3,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3267,
            "combined_rank_score": 1211.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1978.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "projected_match_rating": 6.8531,
            "source_file": "data/player_rankings.csv",
            "player_name": "Urko González",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Félix Correia",
                  "ranking": 3262
                },
                {
                  "player_name": "Kenneth Taylor",
                  "ranking": 3263
                },
                {
                  "player_name": "Johan Vásquez",
                  "ranking": 3264
                },
                {
                  "player_name": "Mamadou Sarr",
                  "ranking": 3265
                },
                {
                  "player_name": "Yoan Bonny",
                  "ranking": 3266
                }
              ],
              "lower": [
                {
                  "player_name": "Tasos Douvikas",
                  "ranking": 3268
                },
                {
                  "player_name": "Sam Beukema",
                  "ranking": 3269
                },
                {
                  "player_name": "Máximo Perrone",
                  "ranking": 3270
                },
                {
                  "player_name": "Federico Viñas",
                  "ranking": 3271
                },
                {
                  "player_name": "Marco Reus",
                  "ranking": 3272
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Álex Calatrava": {
          "player_id": 1136863,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 22,
          "height": 175,
          "market_value": 3900000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0678,
            "assists": 0,
            "expected_goals": 0.2643,
            "rating": 6.7411,
            "minutes": 75,
            "total_pass": 26,
            "accurate_pass": 19,
            "ball_recovery": 3,
            "duels_won": 5,
            "total_shots": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 7,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 19,
            "accurate_opp_half_passes": 13,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 40,
            "possession_lost": 11.49,
            "dispossessed": 1.9692,
            "duels_lost": 6,
            "aerial_won": 2,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 2,
            "tackles": 3,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 3,
            "fouls_drawn": 1,
            "goal_rate": 0.9846,
            "goals": 0,
            "shots_on_target": 1,
            "shots_off_target": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1772,
            "ball_carries": 13,
            "total_progression": 35,
            "progressive_carries": 2,
            "opponent_faced": "Giorgi Kochorashvili",
            "matchup_zone": "Midfield lane",
            "antagonist_source": "midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.2025,
            "projected_assists": 0,
            "assist_probability": 0.1523,
            "fifa_overall": 87.0
          },
          "latest_10_games": [
            {
              "match_id": 16416310.0,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assists": 0,
                "expected_goals": 0.0747,
                "expected_assists": 0.0638,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 31,
                "accurate_pass": 22,
                "tackles": 4,
                "tackles_won": 2,
                "clearances": 2,
                "duels_won": 6,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306.0,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 66,
                "rating": 7.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.3589,
                "expected_assists": 0.0187,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 15,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053.0,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 72,
                "rating": 7.2,
                "assists": 0,
                "expected_goals": 0.1716,
                "expected_assists": 0.0932,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 25,
                "accurate_pass": 20,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 286,
            "combined_rank_score": 131.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 199.0,
            "sofascore_rating": 7.2,
            "sofascore_appearances": 1.0,
            "fifa_rank": 63.0,
            "fifa_overall": 87.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "projected_match_rating": 6.7411,
            "source_file": "data/player_rankings.csv",
            "player_name": "Álex Calatrava",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Islom Anvarov",
                  "ranking": 281
                },
                {
                  "player_name": "Jasurbek Ubaydullaev",
                  "ranking": 282
                },
                {
                  "player_name": "Dilan Varas",
                  "ranking": 283
                },
                {
                  "player_name": "Shon Goldberg",
                  "ranking": 284
                },
                {
                  "player_name": "Tomas Švedkauskas",
                  "ranking": 285
                }
              ],
              "lower": [
                {
                  "player_name": "Josue Caicedo",
                  "ranking": 287
                },
                {
                  "player_name": "Jamalidin Hodjaniyazov",
                  "ranking": 288
                },
                {
                  "player_name": "Marko Stanojević",
                  "ranking": 289
                },
                {
                  "player_name": "Mihail Stefan",
                  "ranking": 290
                },
                {
                  "player_name": "Nicolò Barella",
                  "ranking": 291
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Roger Hinojo": {
          "player_id": 2065347,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 21,
          "height": 180,
          "market_value": 1000000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 1,
            "rating": 6.5807,
            "minutes": 88,
            "total_pass": 49,
            "accurate_pass": 40,
            "duels_won": 5,
            "total_long_balls": 8,
            "accurate_long_balls": 3,
            "total_own_half_passes": 28,
            "accurate_own_half_passes": 24,
            "total_opp_half_passes": 21,
            "accurate_opp_half_passes": 16,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 64,
            "possession_lost": 10.4697,
            "dispossessed": 0.0,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0785,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 19,
            "total_progression": 59,
            "progressive_carries": 1,
            "key_pass": 1,
            "tackles_in_zone": 1.9,
            "tackles_won_in_zone": 1.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.52,
            "opponent_faced": "Miguel Sierra",
            "pressing_zone": "Left Wing vs Right Back — Flank Battle",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.01,
            "projected_assists": 0,
            "assist_probability": 0.0506,
            "fifa_overall": 68.0
          },
          "latest_10_games": [
            {
              "match_id": 16416310.0,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assists": 0,
                "expected_assists": 0.189,
                "total_shots": 0,
                "total_pass": 51,
                "accurate_pass": 37,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 7,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306.0,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assists": 0,
                "expected_assists": 0.0106,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 35,
                "tackles": 3,
                "tackles_won": 2,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053.0,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assists": 0,
                "expected_assists": 0.0432,
                "total_shots": 0,
                "total_pass": 57,
                "accurate_pass": 50,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 5858,
            "combined_rank_score": 4113.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 91.0,
            "sofascore_rating": 7.5,
            "sofascore_appearances": 1.0,
            "fifa_rank": 8136.0,
            "fifa_overall": 68.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "starter",
            "projected_match_rating": 6.5807,
            "source_file": "data/player_rankings.csv",
            "player_name": "Roger Hinojo",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Maximilian Wittek",
                  "ranking": 5853
                },
                {
                  "player_name": "Marnon Busch",
                  "ranking": 5854
                },
                {
                  "player_name": "Mathias Pereira Lage",
                  "ranking": 5855
                },
                {
                  "player_name": "Robert Glatzel",
                  "ranking": 5856
                },
                {
                  "player_name": "Ron-Thorben Hoffmann",
                  "ranking": 5857
                }
              ],
              "lower": [
                {
                  "player_name": "Fraser Hornby",
                  "ranking": 5859
                },
                {
                  "player_name": "Mateusz Żukowski",
                  "ranking": 5860
                },
                {
                  "player_name": "Finn Ole Becker",
                  "ranking": 5861
                },
                {
                  "player_name": "Benjamin Källman",
                  "ranking": 5862
                },
                {
                  "player_name": "Aster Vranckx",
                  "ranking": 5863
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Unai Núñez": {
          "player_id": 892521,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 14,
          "height": 186,
          "market_value": 3300000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 2,
            "rating": 6.7014,
            "minutes": 88,
            "total_pass": 53,
            "accurate_pass": 47,
            "duels_won": 3,
            "total_long_balls": 6,
            "accurate_long_balls": 4,
            "total_own_half_passes": 38,
            "accurate_own_half_passes": 36,
            "total_opp_half_passes": 15,
            "accurate_opp_half_passes": 11,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 65,
            "possession_lost": 6.2183,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 5,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "blocks": 2,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.1277,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 15,
            "total_progression": 50,
            "progressive_carries": 0,
            "key_pass": 1,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 1.1,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.807,
            "opponent_faced": "Robbie Ure",
            "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.0224,
            "projected_assists": 0,
            "assist_probability": 0.0613,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 16416310.0,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_assists": 0.3866,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 42,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 7,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306.0,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.0027,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 37,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053.0,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 70,
                "accurate_pass": 65,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3298,
            "combined_rank_score": 1247.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 91.0,
            "sofascore_rating": 7.5,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2403.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "starter",
            "projected_match_rating": 6.7014,
            "source_file": "data/player_rankings.csv",
            "player_name": "Unai Núñez",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nobel Mendy",
                  "ranking": 3293
                },
                {
                  "player_name": "Michael Zetterer",
                  "ranking": 3294
                },
                {
                  "player_name": "Lukas Nmecha",
                  "ranking": 3295
                },
                {
                  "player_name": "Ruslan Malinovskyi",
                  "ranking": 3296
                },
                {
                  "player_name": "Ibrahim Mbaye",
                  "ranking": 3297
                }
              ],
              "lower": [
                {
                  "player_name": "Rodrigo Muniz",
                  "ranking": 3299
                },
                {
                  "player_name": "Raíllo",
                  "ranking": 3300
                },
                {
                  "player_name": "Gelson Martins",
                  "ranking": 3301
                },
                {
                  "player_name": "Abel Bretones",
                  "ranking": 3302
                },
                {
                  "player_name": "Chiquinho",
                  "ranking": 3303
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        }
      },
      "bench_players": {
        "Angel Fortuno": {
          "player_id": 1082734,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 1,
          "height": 183,
          "market_value": 290000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.022,
            "rating": 6.8,
            "minutes": 4,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "touches": 2,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.0146,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.1171,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "bench_appearance_probability": 0.109,
            "bench_expected_minutes": 4.39,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.47,
            "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": 89.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 24,
            "combined_rank_score": 25.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 35.0,
            "sofascore_rating": 7.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 15.0,
            "fifa_overall": 89.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "projected_match_rating": 6.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "Angel Fortuno",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Gustavo Henrique",
                  "ranking": 19
                },
                {
                  "player_name": "Alejandro Grimaldo",
                  "ranking": 20
                },
                {
                  "player_name": "Marc Bartra",
                  "ranking": 21
                },
                {
                  "player_name": "Khvicha Kvaratskhelia",
                  "ranking": 22
                },
                {
                  "player_name": "Danijel Petković",
                  "ranking": 23
                }
              ],
              "lower": [
                {
                  "player_name": "Hyun-woo Cho",
                  "ranking": 25
                },
                {
                  "player_name": "Joshua Kimmich",
                  "ranking": 26
                },
                {
                  "player_name": "Ljupche Doriev",
                  "ranking": 27
                },
                {
                  "player_name": "Rafael Romo",
                  "ranking": 28
                },
                {
                  "player_name": "Michael Olise",
                  "ranking": 29
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0
        },
        "Quilindschy Hartman": {
          "player_id": 1392044,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 3,
          "height": 183,
          "market_value": 15500000,
          "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.0852,
            "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.16,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.47,
            "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": 75.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3658,
            "combined_rank_score": 1619.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2417.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "substitute",
            "projected_match_rating": 7.0,
            "source_file": "data/player_rankings.csv",
            "player_name": "Quilindschy Hartman",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Miguel Almirón",
                  "ranking": 3653
                },
                {
                  "player_name": "Marko Livaja",
                  "ranking": 3654
                },
                {
                  "player_name": "Víctor Chust",
                  "ranking": 3655
                },
                {
                  "player_name": "Kevin Lomónaco",
                  "ranking": 3656
                },
                {
                  "player_name": "Giorgi Kochorashvili",
                  "ranking": 3657
                }
              ],
              "lower": [
                {
                  "player_name": "Oscar Dorley",
                  "ranking": 3659
                },
                {
                  "player_name": "Mykola Matviienko",
                  "ranking": 3660
                },
                {
                  "player_name": "Hamed Junior Traorè",
                  "ranking": 3661
                },
                {
                  "player_name": "Andrés Cubas",
                  "ranking": 3662
                },
                {
                  "player_name": "Raúl Rangel",
                  "ranking": 3663
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0
        },
        "Vanja Drkušić": {
          "player_id": 908617,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 16,
          "height": 186,
          "market_value": 5500000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 6.649,
            "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": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 6,
            "possession_lost": 0.9796,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 2,
            "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": 2,
            "total_progression": 2,
            "progressive_carries": 0,
            "key_pass": 0,
            "bench_appearance_probability": 0.304,
            "bench_expected_minutes": 13.69,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.47,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16416310.0,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 56,
                "accurate_pass": 45,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416306.0,
              "match_date": "2026-08-22",
              "home_team": "Espanyol",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 24,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.0046,
                "total_shots": 0,
                "total_pass": 9,
                "accurate_pass": 7,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 4,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 811,
            "combined_rank_score": 532.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 391.0,
            "sofascore_rating": 6.95,
            "sofascore_appearances": 6.0,
            "fifa_rank": 673.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "substitute",
            "projected_match_rating": 6.649,
            "source_file": "data/player_rankings.csv",
            "player_name": "Vanja Drkušić",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Chang-woo Park",
                  "ranking": 806
                },
                {
                  "player_name": "Ronan",
                  "ranking": 807
                },
                {
                  "player_name": "Roy Revivo",
                  "ranking": 808
                },
                {
                  "player_name": "Hugo Magallanes",
                  "ranking": 809
                },
                {
                  "player_name": "Dženis Burnić",
                  "ranking": 810
                }
              ],
              "lower": [
                {
                  "player_name": "Hugo Souza",
                  "ranking": 812
                },
                {
                  "player_name": "Teddy Teuma",
                  "ranking": 813
                },
                {
                  "player_name": "Yoel Bárcenas",
                  "ranking": 814
                },
                {
                  "player_name": "Piero Quispe",
                  "ranking": 815
                },
                {
                  "player_name": "Seung-wan Ryu",
                  "ranking": 816
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.375,
          "history_matches": 2
        },
        "Gabriel Moscardo": {
          "player_id": 1485309,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 20,
          "height": 185,
          "market_value": 7500000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0067,
            "assists": 0,
            "expected_goals": 0.0087,
            "rating": 6.6902,
            "minutes": 22,
            "total_pass": 5,
            "accurate_pass": 4,
            "ball_recovery": 0,
            "duels_won": 1,
            "total_shots": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 1.2301,
            "dispossessed": 0.9978,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 1,
            "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.0098,
            "ball_carries": 2,
            "total_progression": 0,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.509,
            "bench_expected_minutes": 22.19,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.47,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16416310.0,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assists": 0,
                "expected_goals": 0.0453,
                "expected_assists": 0.006,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 21,
                "accurate_pass": 18,
                "tackles": 4,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4340,
            "combined_rank_score": 2356.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 4267.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "substitute",
            "projected_match_rating": 6.6902,
            "source_file": "data/player_rankings.csv",
            "player_name": "Gabriel Moscardo",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Fabiano Parisi",
                  "ranking": 4335
                },
                {
                  "player_name": "Mandela Keita",
                  "ranking": 4336
                },
                {
                  "player_name": "Jay Idzes",
                  "ranking": 4337
                },
                {
                  "player_name": "Obed Vargas",
                  "ranking": 4338
                },
                {
                  "player_name": "Mateo Joseph",
                  "ranking": 4339
                }
              ],
              "lower": [
                {
                  "player_name": "Akor Jerome Adams",
                  "ranking": 4341
                },
                {
                  "player_name": "Ezequiel Ponce",
                  "ranking": 4342
                },
                {
                  "player_name": "Anass Salah-Eddine",
                  "ranking": 4343
                },
                {
                  "player_name": "Fabio Miretti",
                  "ranking": 4344
                },
                {
                  "player_name": "Tommaso Baldanzi",
                  "ranking": 4345
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.312,
          "history_matches": 1
        },
        "Javi Puado": {
          "player_id": 891511,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 7,
          "height": 178,
          "market_value": 7000000,
          "stats": {
            "key_pass": 0,
            "assists": 0,
            "expected_assists": 0.0337,
            "expected_goals": 0.0217,
            "total_shots": 0,
            "total_pass": 13,
            "accurate_pass": 10,
            "ball_recovery": 1,
            "duels_won": 2,
            "rating": 6.9,
            "minutes": 22,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 17,
            "possession_lost": 2.0689,
            "dispossessed": 0.8,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0172,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0145,
            "ball_carries": 7,
            "total_progression": 19,
            "progressive_carries": 2,
            "bench_appearance_probability": 0.508,
            "bench_expected_minutes": 22.17,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.47,
            "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": [],
          "ranking": {
            "global_player_rank": 2281,
            "combined_rank_score": 901.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 834.0,
            "sofascore_rating": 6.5889,
            "sofascore_appearances": 10.0,
            "fifa_rank": 968.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "substitute",
            "projected_match_rating": 6.9,
            "source_file": "data/player_rankings.csv",
            "player_name": "Javi Puado",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yves Bissouma",
                  "ranking": 2276
                },
                {
                  "player_name": "Nuriddin  Nuriddinov",
                  "ranking": 2277
                },
                {
                  "player_name": "Kim Min-Ho",
                  "ranking": 2278
                },
                {
                  "player_name": "Manuel Ugarte",
                  "ranking": 2279
                },
                {
                  "player_name": "Endrick",
                  "ranking": 2280
                }
              ],
              "lower": [
                {
                  "player_name": "Bekhruz Jumatov",
                  "ranking": 2282
                },
                {
                  "player_name": "Odilon Kossounou",
                  "ranking": 2283
                },
                {
                  "player_name": "Lennart Karl",
                  "ranking": 2284
                },
                {
                  "player_name": "André",
                  "ranking": 2285
                },
                {
                  "player_name": "Tim Payne",
                  "ranking": 2286
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0
        },
        "Bryan Zaragoza": {
          "player_id": 1084730,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 28,
          "height": 165,
          "market_value": 7500000,
          "stats": {
            "expected_goals": 0.1007,
            "goal_rate": 0.0454,
            "goals": 0,
            "total_shots": 1,
            "shots_on_target": 0,
            "expected_assists": 0.0252,
            "duels_won": 1,
            "aerial_won": 0,
            "rating": 6.9,
            "minutes": 26,
            "total_pass": 8,
            "accurate_pass": 6,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 12,
            "possession_lost": 2.381,
            "dispossessed": 1.1,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 0,
            "key_pass": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0533,
            "offsides": 1,
            "ball_carries": 6,
            "total_progression": 14,
            "progressive_carries": 1,
            "bench_appearance_probability": 0.569,
            "bench_expected_minutes": 25.51,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.47,
            "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": 77.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3033,
            "combined_rank_score": 1005.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 497.0,
            "sofascore_rating": 6.8611,
            "sofascore_appearances": 19.0,
            "fifa_rank": 1513.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "substitute",
            "projected_match_rating": 6.9,
            "source_file": "data/player_rankings.csv",
            "player_name": "Bryan Zaragoza",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Dumitru Celeadnic",
                  "ranking": 3028
                },
                {
                  "player_name": "Leo Kapilevich",
                  "ranking": 3029
                },
                {
                  "player_name": "Jens Petter Hauge",
                  "ranking": 3030
                },
                {
                  "player_name": "James Justin",
                  "ranking": 3031
                },
                {
                  "player_name": "Jens Hofer",
                  "ranking": 3032
                }
              ],
              "lower": [
                {
                  "player_name": "Wout Weghorst",
                  "ranking": 3034
                },
                {
                  "player_name": "Jake Azzopardi",
                  "ranking": 3035
                },
                {
                  "player_name": "Ki Hyun Lee",
                  "ranking": 3036
                },
                {
                  "player_name": "Jaume Cuéllar",
                  "ranking": 3037
                },
                {
                  "player_name": "Daniel Cordero",
                  "ranking": 3038
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0
        },
        "Marcos Fernández": {
          "player_id": 1183542,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 18,
          "height": 176,
          "market_value": 1500000,
          "stats": {
            "expected_goals": 0.038,
            "goal_rate": 0.0429,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0028,
            "key_pass": 0,
            "rating": 5.7342,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 0,
            "aerial_won": 0,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 1,
            "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,
            "bench_appearance_probability": 0.559,
            "bench_expected_minutes": 25.29,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.47,
            "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": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16416310.0,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 20,
                "rating": 6.3,
                "assists": 0,
                "expected_goals": 0.0962,
                "expected_assists": 0.0047,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 4,
                "accurate_pass": 4,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053.0,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 9,
                "rating": 6.4,
                "assists": 0,
                "expected_goals": 0.0961,
                "total_shots": 1,
                "shots_off_target": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4543,
            "combined_rank_score": 2601.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 959.0,
            "sofascore_rating": 6.4,
            "sofascore_appearances": 1.0,
            "fifa_rank": 4244.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "projected_match_rating": 5.7342,
            "source_file": "data/player_rankings.csv",
            "player_name": "Marcos Fernández",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Federico Carrizo",
                  "ranking": 4538
                },
                {
                  "player_name": "Ibrahim Diabaté",
                  "ranking": 4539
                },
                {
                  "player_name": "Chuba Akpom",
                  "ranking": 4540
                },
                {
                  "player_name": "Dani Rodríguez",
                  "ranking": 4541
                },
                {
                  "player_name": "Alex Valera",
                  "ranking": 4542
                }
              ],
              "lower": [
                {
                  "player_name": "Ximo Navarro",
                  "ranking": 4544
                },
                {
                  "player_name": "João Virgínia",
                  "ranking": 4545
                },
                {
                  "player_name": "Dimitri Foulquier",
                  "ranking": 4546
                },
                {
                  "player_name": "Nathan Patterson",
                  "ranking": 4547
                },
                {
                  "player_name": "Isaac Price",
                  "ranking": 4548
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.375,
          "history_matches": 2
        }
      },
      "substitutes": {
        "Bryan Zaragoza": {
          "player_id": 1084730,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 28,
          "height": 165,
          "market_value": 7500000,
          "stats": {
            "expected_goals": 0.1007,
            "goal_rate": 0.0454,
            "goals": 0,
            "total_shots": 1,
            "shots_on_target": 0,
            "expected_assists": 0.0252,
            "duels_won": 1,
            "aerial_won": 0,
            "rating": 6.9,
            "minutes": 26,
            "total_pass": 8,
            "accurate_pass": 6,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 12,
            "possession_lost": 2.381,
            "dispossessed": 1.1,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 0,
            "key_pass": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0533,
            "offsides": 1,
            "ball_carries": 6,
            "total_progression": 14,
            "progressive_carries": 1,
            "bench_appearance_probability": 0.569,
            "bench_expected_minutes": 25.51,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.47,
            "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": 77.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3033,
            "combined_rank_score": 1005.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 497.0,
            "sofascore_rating": 6.8611,
            "sofascore_appearances": 19.0,
            "fifa_rank": 1513.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "substitute",
            "projected_match_rating": 6.9,
            "source_file": "data/player_rankings.csv",
            "player_name": "Bryan Zaragoza",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Dumitru Celeadnic",
                  "ranking": 3028
                },
                {
                  "player_name": "Leo Kapilevich",
                  "ranking": 3029
                },
                {
                  "player_name": "Jens Petter Hauge",
                  "ranking": 3030
                },
                {
                  "player_name": "James Justin",
                  "ranking": 3031
                },
                {
                  "player_name": "Jens Hofer",
                  "ranking": 3032
                }
              ],
              "lower": [
                {
                  "player_name": "Wout Weghorst",
                  "ranking": 3034
                },
                {
                  "player_name": "Jake Azzopardi",
                  "ranking": 3035
                },
                {
                  "player_name": "Ki Hyun Lee",
                  "ranking": 3036
                },
                {
                  "player_name": "Jaume Cuéllar",
                  "ranking": 3037
                },
                {
                  "player_name": "Daniel Cordero",
                  "ranking": 3038
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0
        },
        "Marcos Fernández": {
          "player_id": 1183542,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 18,
          "height": 176,
          "market_value": 1500000,
          "stats": {
            "expected_goals": 0.038,
            "goal_rate": 0.0429,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0028,
            "key_pass": 0,
            "rating": 5.7342,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 0,
            "aerial_won": 0,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 1,
            "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,
            "bench_appearance_probability": 0.559,
            "bench_expected_minutes": 25.29,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 2,
            "projected_substitution_expected_count": 2.47,
            "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": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 16416310.0,
              "match_date": "2026-08-29",
              "home_team": "Real Sociedad",
              "away_team": "Espanyol",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Real Sociedad",
              "stats": {
                "minutes": 20,
                "rating": 6.3,
                "assists": 0,
                "expected_goals": 0.0962,
                "expected_assists": 0.0047,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 4,
                "accurate_pass": 4,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421053.0,
              "match_date": "2026-08-16",
              "home_team": "Espanyol",
              "away_team": "Levante UD",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Espanyol",
              "opponent": "Levante UD",
              "stats": {
                "minutes": 9,
                "rating": 6.4,
                "assists": 0,
                "expected_goals": 0.0961,
                "total_shots": 1,
                "shots_off_target": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4543,
            "combined_rank_score": 2601.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 959.0,
            "sofascore_rating": 6.4,
            "sofascore_appearances": 1.0,
            "fifa_rank": 4244.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "projected_match_rating": 5.7342,
            "source_file": "data/player_rankings.csv",
            "player_name": "Marcos Fernández",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Federico Carrizo",
                  "ranking": 4538
                },
                {
                  "player_name": "Ibrahim Diabaté",
                  "ranking": 4539
                },
                {
                  "player_name": "Chuba Akpom",
                  "ranking": 4540
                },
                {
                  "player_name": "Dani Rodríguez",
                  "ranking": 4541
                },
                {
                  "player_name": "Alex Valera",
                  "ranking": 4542
                }
              ],
              "lower": [
                {
                  "player_name": "Ximo Navarro",
                  "ranking": 4544
                },
                {
                  "player_name": "João Virgínia",
                  "ranking": 4545
                },
                {
                  "player_name": "Dimitri Foulquier",
                  "ranking": 4546
                },
                {
                  "player_name": "Nathan Patterson",
                  "ranking": 4547
                },
                {
                  "player_name": "Isaac Price",
                  "ranking": 4548
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.375,
          "history_matches": 2
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.27,
        "expected_assists": 0.71,
        "total_shots": 12,
        "shots_on_target": 5,
        "total_passes": 358,
        "interceptions": 10,
        "tackles": 16,
        "avg_rating": 6.79,
        "possession_estimated_pct": 50.7,
        "pressing_actions_per_90": 6.8
      }
    },
    "Sevilla": {
      "formation": "4-2-3-1",
      "players": {
        "Robbie Ure": {
          "player_id": 1142351,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 9,
          "height": 189,
          "market_value": 4800000,
          "stats": {
            "expected_goals": 0.316,
            "goal_rate": 0.2301,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0164,
            "key_pass": 1,
            "rating": 6.2829,
            "minutes": 74,
            "total_shots": 2,
            "duels_won": 3,
            "aerial_won": 2,
            "total_pass": 8,
            "accurate_pass": 5,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 15,
            "possession_lost": 4.9396,
            "dispossessed": 1.4819,
            "duels_lost": 8,
            "aerial_lost": 5,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 2,
            "assists": 0,
            "shots_off_target": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 0,
            "progressive_carries": 0,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.193,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Omar El Hilali, Unai Núñez",
            "opponent_faced": "Omar El Hilali, Unai Núñez",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.197,
            "projected_assists": 0,
            "assist_probability": 0.0657,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 16416316.0,
              "match_date": "2026-08-29",
              "home_team": "Sevilla",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assists": 1,
                "expected_goals": 0.2605,
                "expected_assists": 0.0246,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 12,
                "accurate_pass": 9,
                "key_pass": 1,
                "tackles": 1,
                "aerial_won": 2,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416301.0,
              "match_date": "2026-08-22",
              "home_team": "Athletic Club",
              "away_team": "Sevilla",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 5.7,
                "assists": 0,
                "expected_assists": 0.0048,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 1,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421052.0,
              "match_date": "2026-08-15",
              "home_team": "Sevilla",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sevilla",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 45,
                "rating": 6.9,
                "assists": 0,
                "expected_goals": 0.0899,
                "expected_assists": 0.0259,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 6,
                "accurate_pass": 6,
                "key_pass": 1,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 4666,
            "combined_rank_score": 2760.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 5075.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "starter",
            "projected_match_rating": 6.2829,
            "source_file": "data/player_rankings.csv",
            "player_name": "Robbie Ure",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Loris Karius",
                  "ranking": 4661
                },
                {
                  "player_name": "Lucas Ferreira",
                  "ranking": 4662
                },
                {
                  "player_name": "Hjalmar Ekdal",
                  "ranking": 4663
                },
                {
                  "player_name": "Kevin Stöger",
                  "ranking": 4664
                },
                {
                  "player_name": "Kenan Karaman",
                  "ranking": 4665
                }
              ],
              "lower": [
                {
                  "player_name": "Matías Pérez",
                  "ranking": 4667
                },
                {
                  "player_name": "Jean-Luc Dompé",
                  "ranking": 4668
                },
                {
                  "player_name": "Alessio Castro-Montes",
                  "ranking": 4669
                },
                {
                  "player_name": "Jordan Torunarigha",
                  "ranking": 4670
                },
                {
                  "player_name": "Nikolas Nartey",
                  "ranking": 4671
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Chidera Ejuke": {
          "player_id": 875890,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 21,
          "height": 176,
          "market_value": 3700000,
          "stats": {
            "expected_goals": 0.22,
            "goal_rate": 0.3035,
            "goals": 0,
            "shots_on_target": 1,
            "expected_assists": 0.0398,
            "key_pass": 1,
            "rating": 6.7312,
            "minutes": 30,
            "total_shots": 1,
            "duels_won": 6,
            "aerial_won": 1,
            "total_pass": 10,
            "accurate_pass": 9,
            "total_long_balls": 2,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 8,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 18,
            "possession_lost": 5.903,
            "dispossessed": 0.0,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 4,
            "won_contest": 6,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 2,
            "assists": 0,
            "shots_off_target": 1,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 3,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1968,
            "offsides": 1,
            "ball_carries": 7,
            "total_progression": 66,
            "progressive_carries": 2,
            "opponent_faced": "Leandro Cabrera, Omar El Hilali",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.211,
            "projected_assists": 0,
            "assist_probability": 0.0748,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16416316.0,
              "match_date": "2026-08-29",
              "home_team": "Sevilla",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sevilla",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 35,
                "rating": 7.5,
                "assists": 0,
                "expected_goals": 0.0241,
                "expected_assists": 0.0378,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 13,
                "accurate_pass": 13,
                "key_pass": 1,
                "duels_won": 8,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416301.0,
              "match_date": "2026-08-22",
              "home_team": "Athletic Club",
              "away_team": "Sevilla",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sevilla",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 45,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.3171,
                "expected_assists": 0.0001,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 5,
                "tackles": 3,
                "tackles_won": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421052.0,
              "match_date": "2026-08-15",
              "home_team": "Sevilla",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sevilla",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 12,
                "rating": 6.5,
                "assists": 0,
                "total_shots": 0,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3119,
            "combined_rank_score": 1080.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 199.0,
            "sofascore_rating": 7.2,
            "sofascore_appearances": 3.0,
            "fifa_rank": 1962.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "starter",
            "projected_match_rating": 6.7312,
            "source_file": "data/player_rankings.csv",
            "player_name": "Chidera Ejuke",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ayase Ueda",
                  "ranking": 3114
                },
                {
                  "player_name": "Mika Godts",
                  "ranking": 3115
                },
                {
                  "player_name": "Youri Baas",
                  "ranking": 3116
                },
                {
                  "player_name": "Martín Satriano",
                  "ranking": 3117
                },
                {
                  "player_name": "Marcos Leonardo",
                  "ranking": 3118
                }
              ],
              "lower": [
                {
                  "player_name": "Adrián Martínez",
                  "ranking": 3120
                },
                {
                  "player_name": "Emile Smith Rowe",
                  "ranking": 3121
                },
                {
                  "player_name": "Santiago Giménez",
                  "ranking": 3122
                },
                {
                  "player_name": "Mykola Shaparenko",
                  "ranking": 3123
                },
                {
                  "player_name": "Kostas Tsimikas",
                  "ranking": 3124
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Jon Guridi": {
          "player_id": 788141,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 18,
          "height": 179,
          "market_value": 1700000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0472,
            "assists": 0,
            "expected_goals": 0.0707,
            "rating": 6.5724,
            "minutes": 60,
            "total_pass": 18,
            "accurate_pass": 15,
            "ball_recovery": 3,
            "duels_won": 1,
            "total_shots": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 7,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 8,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 26,
            "possession_lost": 6.5448,
            "dispossessed": 1.305,
            "duels_lost": 6,
            "aerial_won": 1,
            "aerial_lost": 2,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 0,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 1,
            "goal_rate": 0.9812,
            "goals": 0,
            "shots_on_target": 1,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.4808,
            "ball_carries": 7,
            "total_progression": 25,
            "progressive_carries": 1,
            "dribbles_attempted": 3,
            "dribbles_successful": 0.9,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.326,
            "pressing_faced": "LOW",
            "matchup_zone": "CAM vs CM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Urko González",
            "opponent_faced": "Urko González",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1924,
            "projected_assists": 0,
            "assist_probability": 0.1332,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 16416316.0,
              "match_date": "2026-08-29",
              "home_team": "Sevilla",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 55,
                "rating": 6.0,
                "assists": 0,
                "expected_goals": 0.0269,
                "expected_assists": 0.0096,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 18,
                "accurate_pass": 15,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416301.0,
              "match_date": "2026-08-22",
              "home_team": "Athletic Club",
              "away_team": "Sevilla",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 45,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.001,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 13,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421052.0,
              "match_date": "2026-08-15",
              "home_team": "Sevilla",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 82,
                "rating": 6.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.8527,
                "expected_assists": 0.0075,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 20,
                "accurate_pass": 19,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1779,
            "combined_rank_score": 964.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 698.0,
            "sofascore_rating": 6.7,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1231.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "starter",
            "projected_match_rating": 6.5724,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jon Guridi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Domantas Antanavičius",
                  "ranking": 1774
                },
                {
                  "player_name": "Emil Tsenov",
                  "ranking": 1775
                },
                {
                  "player_name": "Maksim Myakish",
                  "ranking": 1776
                },
                {
                  "player_name": "Jun'ai Byfield",
                  "ranking": 1777
                },
                {
                  "player_name": "Nemanja Gudelj",
                  "ranking": 1778
                }
              ],
              "lower": [
                {
                  "player_name": "Pedro Felipe",
                  "ranking": 1780
                },
                {
                  "player_name": "Nico Guillén",
                  "ranking": 1781
                },
                {
                  "player_name": "Gabriel Pires",
                  "ranking": 1782
                },
                {
                  "player_name": "Yuri",
                  "ranking": 1783
                },
                {
                  "player_name": "William Furtado",
                  "ranking": 1784
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Miguel Sierra": {
          "player_id": 2509247,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 30,
          "height": 181,
          "market_value": 330000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0542,
            "assists": 0,
            "expected_goals": 0.1604,
            "rating": 6.7229,
            "minutes": 64,
            "total_pass": 13,
            "accurate_pass": 9,
            "ball_recovery": 3,
            "duels_won": 7,
            "total_shots": 2,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 9,
            "accurate_opp_half_passes": 5,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 32,
            "possession_lost": 9.8123,
            "dispossessed": 2.4531,
            "duels_lost": 6,
            "aerial_won": 1,
            "aerial_lost": 2,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 4,
            "won_contest": 3,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 1,
            "goal_rate": 0.9812,
            "goals": 1,
            "shots_on_target": 3,
            "shots_off_target": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.471,
            "ball_carries": 9,
            "total_progression": 41,
            "progressive_carries": 2,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.3,
            "crosses_attempted": 1.8,
            "duel_win_rate": 0.48,
            "pressing_faced": "LOW",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "numerical_situation": "1v1",
            "opponent_defenders": "Roger Hinojo",
            "opponent_faced": "Roger Hinojo",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 1,
            "goal_probability": 0.2346,
            "projected_assists": 0,
            "assist_probability": 0.1368,
            "fifa_overall": 65.0
          },
          "latest_10_games": [
            {
              "match_id": 16416316.0,
              "match_date": "2026-08-29",
              "home_team": "Sevilla",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 80,
                "rating": 7.6,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.1411,
                "expected_assists": 0.0422,
                "total_shots": 4,
                "shots_on_target": 3,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 12,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416301.0,
              "match_date": "2026-08-22",
              "home_team": "Athletic Club",
              "away_team": "Sevilla",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 45,
                "rating": 7.3,
                "assists": 0,
                "expected_goals": 0.0318,
                "expected_assists": 0.0018,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 7,
                "accurate_pass": 5,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421052.0,
              "match_date": "2026-08-15",
              "home_team": "Sevilla",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 70,
                "rating": 7.1,
                "assists": 0,
                "expected_goals": 0.0291,
                "expected_assists": 0.1331,
                "total_shots": 1,
                "total_pass": 16,
                "accurate_pass": 9,
                "key_pass": 2,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 7,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 7553,
            "combined_rank_score": 5973.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 143.0,
            "sofascore_rating": 7.3333,
            "sofascore_appearances": 3.0,
            "fifa_rank": 11803.0,
            "fifa_overall": 65.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "starter",
            "projected_match_rating": 6.7229,
            "source_file": "data/player_rankings.csv",
            "player_name": "Miguel Sierra",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Gaspar Campos",
                  "ranking": 7548
                },
                {
                  "player_name": "Alex Millán",
                  "ranking": 7549
                },
                {
                  "player_name": "Daijiro Chirino",
                  "ranking": 7550
                },
                {
                  "player_name": "Aldasoro",
                  "ranking": 7551
                },
                {
                  "player_name": "Imanol",
                  "ranking": 7552
                }
              ],
              "lower": [
                {
                  "player_name": "Javi Martón",
                  "ranking": 7554
                },
                {
                  "player_name": "Zico Buurmeester",
                  "ranking": 7555
                },
                {
                  "player_name": "Víctor Aznar",
                  "ranking": 7556
                },
                {
                  "player_name": "Ale García",
                  "ranking": 7557
                },
                {
                  "player_name": "Hiroshi Ibusuki",
                  "ranking": 7558
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Giorgi Kochorashvili": {
          "player_id": 886402,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 8,
          "height": 176,
          "market_value": 3800000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0687,
            "assists": 0,
            "expected_goals": 0.1066,
            "rating": 6.6897,
            "minutes": 34,
            "total_pass": 21,
            "accurate_pass": 20,
            "ball_recovery": 3,
            "duels_won": 3,
            "total_shots": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 5,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 15,
            "crosses_total": 3,
            "crosses_accurate": 0,
            "touches": 33,
            "possession_lost": 5.9052,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 6,
            "total_progression": 11,
            "progressive_carries": 0,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.5,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.306,
            "pressing_faced": "LOW",
            "matchup_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Urko González",
            "opponent_faced": "Urko González",
            "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0302,
            "projected_assists": 0,
            "assist_probability": 0.1485,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16416316.0,
              "match_date": "2026-08-29",
              "home_team": "Sevilla",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sevilla",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 35,
                "rating": 6.8,
                "assists": 0,
                "expected_goals": 0.0687,
                "expected_assists": 0.0183,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 21,
                "accurate_pass": 20,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3657,
            "combined_rank_score": 1619.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 247.0,
            "sofascore_rating": 7.12,
            "sofascore_appearances": 5.0,
            "fifa_rank": 2992.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "starter",
            "projected_match_rating": 6.6897,
            "source_file": "data/player_rankings.csv",
            "player_name": "Giorgi Kochorashvili",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Altimira",
                  "ranking": 3652
                },
                {
                  "player_name": "Miguel Almirón",
                  "ranking": 3653
                },
                {
                  "player_name": "Marko Livaja",
                  "ranking": 3654
                },
                {
                  "player_name": "Víctor Chust",
                  "ranking": 3655
                },
                {
                  "player_name": "Kevin Lomónaco",
                  "ranking": 3656
                }
              ],
              "lower": [
                {
                  "player_name": "Quilindschy Hartman",
                  "ranking": 3658
                },
                {
                  "player_name": "Oscar Dorley",
                  "ranking": 3659
                },
                {
                  "player_name": "Mykola Matviienko",
                  "ranking": 3660
                },
                {
                  "player_name": "Hamed Junior Traorè",
                  "ranking": 3661
                },
                {
                  "player_name": "Andrés Cubas",
                  "ranking": 3662
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.312,
          "history_matches": 1
        },
        "Lucien Agoumé": {
          "player_id": 960006,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 6,
          "height": 185,
          "market_value": 15500000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0527,
            "assists": 0,
            "expected_goals": 0.0703,
            "rating": 7.0534,
            "minutes": 92,
            "total_pass": 37,
            "accurate_pass": 30,
            "ball_recovery": 5,
            "duels_won": 6,
            "total_shots": 1,
            "total_long_balls": 6,
            "accurate_long_balls": 2,
            "total_own_half_passes": 14,
            "accurate_own_half_passes": 13,
            "total_opp_half_passes": 23,
            "accurate_opp_half_passes": 17,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 55,
            "possession_lost": 10.2538,
            "dispossessed": 2.0508,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 3,
            "tackles_won": 3,
            "tackles": 4,
            "clearances": 5,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 3,
            "fouls_drawn": 3,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 1,
            "blocks": 1,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 11,
            "total_progression": 49,
            "progressive_carries": 1,
            "opponent_faced": "Javier Hernández",
            "matchup_zone": "Midfield lane",
            "antagonist_source": "midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0248,
            "projected_assists": 0,
            "assist_probability": 0.144,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16416316.0,
              "match_date": "2026-08-29",
              "home_team": "Sevilla",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assists": 0,
                "expected_goals": 0.0379,
                "expected_assists": 0.0528,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 46,
                "accurate_pass": 41,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416301.0,
              "match_date": "2026-08-22",
              "home_team": "Athletic Club",
              "away_team": "Sevilla",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assists": 0,
                "expected_assists": 0.0125,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 21,
                "tackles": 5,
                "tackles_won": 5,
                "interceptions": 5,
                "clearances": 8,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421052.0,
              "match_date": "2026-08-15",
              "home_team": "Sevilla",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.1681,
                "total_shots": 0,
                "total_pass": 35,
                "accurate_pass": 25,
                "tackles": 4,
                "tackles_won": 3,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 8,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3222,
            "combined_rank_score": 1170.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 374.0,
            "sofascore_rating": 6.9667,
            "sofascore_appearances": 3.0,
            "fifa_rank": 1966.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "projected_match_rating": 7.0534,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lucien Agoumé",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lazaros Rota",
                  "ranking": 3217
                },
                {
                  "player_name": "Joshua Zirkzee",
                  "ranking": 3218
                },
                {
                  "player_name": "Camilo Vargas",
                  "ranking": 3219
                },
                {
                  "player_name": "Hugo Duro",
                  "ranking": 3220
                },
                {
                  "player_name": "Chris Führich",
                  "ranking": 3221
                }
              ],
              "lower": [
                {
                  "player_name": "Maarten Vandevoordt",
                  "ranking": 3223
                },
                {
                  "player_name": "Nikola Vasilj",
                  "ranking": 3224
                },
                {
                  "player_name": "Wouter Burger",
                  "ranking": 3225
                },
                {
                  "player_name": "Daniel James",
                  "ranking": 3226
                },
                {
                  "player_name": "Jhon Lucumí",
                  "ranking": 3227
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Gabriel Suazo": {
          "player_id": 818986,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 17,
          "height": 178,
          "market_value": 6600000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "rating": 6.6649,
            "minutes": 90,
            "total_pass": 45,
            "accurate_pass": 36,
            "duels_won": 5,
            "total_long_balls": 4,
            "accurate_long_balls": 2,
            "total_own_half_passes": 15,
            "accurate_own_half_passes": 13,
            "total_opp_half_passes": 31,
            "accurate_opp_half_passes": 23,
            "crosses_total": 4,
            "crosses_accurate": 3,
            "touches": 71,
            "possession_lost": 15.9124,
            "dispossessed": 0.9945,
            "duels_lost": 7,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 4,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 1,
            "expected_goals": 0.0147,
            "expected_assists": 0.0597,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 15,
            "total_progression": 55,
            "progressive_carries": 1,
            "key_pass": 5,
            "tackles_in_zone": 2.0,
            "tackles_won_in_zone": 1.7,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.564,
            "opponent_faced": "Edu Expósito",
            "pressing_zone": "Right Mid vs Left Back — Wide Channel",
            "matchup_zone": "Right Mid vs Left Back — Wide Channel",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0164,
            "projected_assists": 1,
            "assist_probability": 0.1524,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16416316.0,
              "match_date": "2026-08-29",
              "home_team": "Sevilla",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assists": 0,
                "expected_goals": 0.0101,
                "expected_assists": 0.1379,
                "total_shots": 1,
                "total_pass": 62,
                "accurate_pass": 50,
                "key_pass": 5,
                "interceptions": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416301.0,
              "match_date": "2026-08-22",
              "home_team": "Athletic Club",
              "away_team": "Sevilla",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.0206,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 33,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 9,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421052.0,
              "match_date": "2026-08-15",
              "home_team": "Sevilla",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0095,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 27,
                "tackles": 3,
                "tackles_won": 3,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 8,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3708,
            "combined_rank_score": 1663.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 2882.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "projected_match_rating": 6.6649,
            "source_file": "data/player_rankings.csv",
            "player_name": "Gabriel Suazo",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Bryan Gil",
                  "ranking": 3703
                },
                {
                  "player_name": "Taiwo Awoniyi",
                  "ranking": 3704
                },
                {
                  "player_name": "Ismail Jakobs",
                  "ranking": 3705
                },
                {
                  "player_name": "Denis Suárez",
                  "ranking": 3706
                },
                {
                  "player_name": "Ernest Muçi",
                  "ranking": 3707
                }
              ],
              "lower": [
                {
                  "player_name": "İrfan Can Kahveci",
                  "ranking": 3709
                },
                {
                  "player_name": "Lucas Beltrán",
                  "ranking": 3710
                },
                {
                  "player_name": "Niclas Eliasson",
                  "ranking": 3711
                },
                {
                  "player_name": "Orri Óskarsson",
                  "ranking": 3712
                },
                {
                  "player_name": "Santiago Núñez",
                  "ranking": 3713
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Kike Salas": {
          "player_id": 1097719,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 4,
          "height": 186,
          "market_value": 15400000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 2,
            "rating": 6.9798,
            "minutes": 91,
            "total_pass": 51,
            "accurate_pass": 37,
            "duels_won": 8,
            "total_long_balls": 14,
            "accurate_long_balls": 6,
            "total_own_half_passes": 21,
            "accurate_own_half_passes": 21,
            "total_opp_half_passes": 30,
            "accurate_opp_half_passes": 16,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 65,
            "possession_lost": 14.8633,
            "dispossessed": 0.0,
            "duels_lost": 6,
            "aerial_lost": 3,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 5,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 2,
            "blocks": 2,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0458,
            "expected_assists": 0.0308,
            "total_shots": 2,
            "shots_on_target": 0,
            "shots_off_target": 1,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 13,
            "total_progression": 61,
            "progressive_carries": 1,
            "key_pass": 1,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 1.1,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.807,
            "opponent_faced": "Roberto Fernández",
            "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0324,
            "projected_assists": 0,
            "assist_probability": 0.0406,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16416316.0,
              "match_date": "2026-08-29",
              "home_team": "Sevilla",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assists": 0,
                "expected_goals": 0.0486,
                "expected_assists": 0.0278,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 56,
                "accurate_pass": 41,
                "tackles": 1,
                "clearances": 4,
                "aerial_won": 5,
                "duels_won": 8,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421052.0,
              "match_date": "2026-08-15",
              "home_team": "Sevilla",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 88,
                "rating": 6.8,
                "assists": 0,
                "expected_goals": 0.0101,
                "expected_assists": 0.0341,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 44,
                "accurate_pass": 31,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 3,
                "duels_won": 7,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3204,
            "combined_rank_score": 1158.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 330.0,
            "sofascore_rating": 7.0115,
            "sofascore_appearances": 26.0,
            "fifa_rank": 1986.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "projected_match_rating": 6.9798,
            "source_file": "data/player_rankings.csv",
            "player_name": "Kike Salas",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Juan Iglesias",
                  "ranking": 3199
                },
                {
                  "player_name": "Thierno Barry",
                  "ranking": 3200
                },
                {
                  "player_name": "Tiago Palacios",
                  "ranking": 3201
                },
                {
                  "player_name": "Frederik Rønnow",
                  "ranking": 3202
                },
                {
                  "player_name": "David Affengruber",
                  "ranking": 3203
                }
              ],
              "lower": [
                {
                  "player_name": "Franck Honorat",
                  "ranking": 3205
                },
                {
                  "player_name": "Djibril Sow",
                  "ranking": 3206
                },
                {
                  "player_name": "Pepelu",
                  "ranking": 3207
                },
                {
                  "player_name": "Dayann Methalie",
                  "ranking": 3208
                },
                {
                  "player_name": "Robin Gosens",
                  "ranking": 3209
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.375,
          "history_matches": 2
        },
        "Andres Castrin": {
          "player_id": 1428699,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 5,
          "height": 188,
          "market_value": 6500000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 5,
            "aerial_won": 2,
            "rating": 6.7984,
            "minutes": 89,
            "total_pass": 44,
            "accurate_pass": 38,
            "duels_won": 2,
            "total_long_balls": 8,
            "accurate_long_balls": 5,
            "total_own_half_passes": 25,
            "accurate_own_half_passes": 24,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 14,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 51,
            "possession_lost": 5.965,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 5,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 2,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0199,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 14,
            "total_progression": 56,
            "progressive_carries": 0,
            "key_pass": 1,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 1.1,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.807,
            "opponent_faced": "Roberto Fernández",
            "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0288,
            "projected_assists": 0,
            "assist_probability": 0.0374,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 16416316.0,
              "match_date": "2026-08-29",
              "home_team": "Sevilla",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0263,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 38,
                "key_pass": 2,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416301.0,
              "match_date": "2026-08-22",
              "home_team": "Athletic Club",
              "away_team": "Sevilla",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assists": 0,
                "expected_assists": 0.0092,
                "total_shots": 0,
                "total_pass": 46,
                "accurate_pass": 39,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3967,
            "combined_rank_score": 1939.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 359.0,
            "sofascore_rating": 6.9789,
            "sofascore_appearances": 19.0,
            "fifa_rank": 3519.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "projected_match_rating": 6.7984,
            "source_file": "data/player_rankings.csv",
            "player_name": "Andres Castrin",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Milot Rashica",
                  "ranking": 3962
                },
                {
                  "player_name": "Jeppe Tverskov",
                  "ranking": 3963
                },
                {
                  "player_name": "Cristian Espinoza",
                  "ranking": 3964
                },
                {
                  "player_name": "Gonzalo Valle",
                  "ranking": 3965
                },
                {
                  "player_name": "Marcel Hartel",
                  "ranking": 3966
                }
              ],
              "lower": [
                {
                  "player_name": "Thiago Fernandez",
                  "ranking": 3968
                },
                {
                  "player_name": "Sam Surridge",
                  "ranking": 3969
                },
                {
                  "player_name": "Kévin Denkey",
                  "ranking": 3970
                },
                {
                  "player_name": "Sasha Marcich",
                  "ranking": 3971
                },
                {
                  "player_name": "Joe Bell",
                  "ranking": 3972
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.375,
          "history_matches": 2
        },
        "Juan Iglesias": {
          "player_id": 949707,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 2,
          "height": 185,
          "market_value": 4800000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "rating": 6.3325,
            "minutes": 89,
            "total_pass": 21,
            "accurate_pass": 14,
            "duels_won": 6,
            "total_long_balls": 6,
            "accurate_long_balls": 2,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 15,
            "accurate_opp_half_passes": 8,
            "crosses_total": 5,
            "crosses_accurate": 1,
            "touches": 49,
            "possession_lost": 12.8429,
            "dispossessed": 0.9879,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 3,
            "won_contest": 2,
            "ball_recovery": 3,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0587,
            "expected_assists": 0.0395,
            "total_shots": 1,
            "shots_on_target": 1,
            "shots_off_target": 1,
            "big_chances_created": 0,
            "xgot": 0.1383,
            "ball_carries": 7,
            "total_progression": 35,
            "progressive_carries": 1,
            "key_pass": 2,
            "tackles_in_zone": 1.9,
            "tackles_won_in_zone": 1.7,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.2,
            "defensive_success_rate": 0.568,
            "opponent_faced": "Tyrhys Dolan",
            "pressing_zone": "Left Mid vs Right Back — Wide Channel",
            "matchup_zone": "Left Mid vs Right Back — Wide Channel",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0324,
            "projected_assists": 0,
            "assist_probability": 0.0667,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16416316.0,
              "match_date": "2026-08-29",
              "home_team": "Sevilla",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assists": 0,
                "expected_goals": 0.0211,
                "expected_assists": 0.0304,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 23,
                "accurate_pass": 16,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416301.0,
              "match_date": "2026-08-22",
              "home_team": "Athletic Club",
              "away_team": "Sevilla",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assists": 0,
                "expected_goals": 0.0575,
                "expected_assists": 0.0005,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 13,
                "accurate_pass": 7,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 5,
                "duels_won": 7,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421052.0,
              "match_date": "2026-08-15",
              "home_team": "Sevilla",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_assists": 0.1007,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 18,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3199,
            "combined_rank_score": 1156.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 336.0,
            "sofascore_rating": 7.0,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1977.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "projected_match_rating": 6.3325,
            "source_file": "data/player_rankings.csv",
            "player_name": "Juan Iglesias",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Taylor Harwood-Bellis",
                  "ranking": 3194
                },
                {
                  "player_name": "Saïd El Mala",
                  "ranking": 3195
                },
                {
                  "player_name": "Fran García",
                  "ranking": 3196
                },
                {
                  "player_name": "Rômulo",
                  "ranking": 3197
                },
                {
                  "player_name": "David Zima",
                  "ranking": 3198
                }
              ],
              "lower": [
                {
                  "player_name": "Thierno Barry",
                  "ranking": 3200
                },
                {
                  "player_name": "Tiago Palacios",
                  "ranking": 3201
                },
                {
                  "player_name": "Frederik Rønnow",
                  "ranking": 3202
                },
                {
                  "player_name": "David Affengruber",
                  "ranking": 3203
                },
                {
                  "player_name": "Kike Salas",
                  "ranking": 3204
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Odysseas Vlachodimos": {
          "player_id": 138149,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 1,
          "height": 191,
          "market_value": 3200000,
          "stats": {
            "saves": 3,
            "goals_prevented": 0.0,
            "rating": 6.8567,
            "minutes": 88,
            "total_pass": 26,
            "accurate_pass": 15,
            "total_long_balls": 16,
            "accurate_long_balls": 6,
            "touches": 34,
            "clearances": 2,
            "ball_recovery": 10,
            "high_claims": 2,
            "punches": 0.0,
            "aerial_won": 1,
            "sweeper_actions": 2,
            "sweeper_accurate": 2,
            "saves_inside_box": 1,
            "possession_lost": 10.8017,
            "duels_won": 1,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 12,
            "accurate_own_half_passes": 10,
            "expected_saves": 0.89,
            "high_pressure_saves": 0.34,
            "shots_faced": 1.9,
            "opponent_faced": "Roberto Fernández, Tyrhys Dolan",
            "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": 79.0
          },
          "latest_10_games": [
            {
              "match_id": 16416316.0,
              "match_date": "2026-08-29",
              "home_team": "Sevilla",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 90,
                "rating": 5.7,
                "assists": 0,
                "expected_assists": 0.0048,
                "total_shots": 0,
                "total_pass": 19,
                "accurate_pass": 12,
                "ball_recovery": 5,
                "saves": 2,
                "goals_prevented": -1.758
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416301.0,
              "match_date": "2026-08-22",
              "home_team": "Athletic Club",
              "away_team": "Sevilla",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assists": 0,
                "expected_assists": 0.0018,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 19,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 16,
                "saves": 6,
                "goals_prevented": 0.2996
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421052.0,
              "match_date": "2026-08-15",
              "home_team": "Sevilla",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assists": 0,
                "expected_assists": 0.001,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 16,
                "clearances": 2,
                "ball_recovery": 11,
                "saves": 2,
                "goals_prevented": 0.7724
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1276,
            "combined_rank_score": 554.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 157.0,
            "sofascore_rating": 7.3,
            "sofascore_appearances": 1.0,
            "fifa_rank": 951.0,
            "fifa_overall": 79.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "starter",
            "projected_match_rating": 6.8567,
            "source_file": "data/player_rankings.csv",
            "player_name": "Odysseas Vlachodimos",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Giorgi Papava",
                  "ranking": 1271
                },
                {
                  "player_name": "Pablo Gavi",
                  "ranking": 1272
                },
                {
                  "player_name": "Martin Boakye",
                  "ranking": 1273
                },
                {
                  "player_name": "Rodrigo Caseres",
                  "ranking": 1274
                },
                {
                  "player_name": "Henrikh Mkhitaryan",
                  "ranking": 1275
                }
              ],
              "lower": [
                {
                  "player_name": "Diego Céspedes",
                  "ranking": 1277
                },
                {
                  "player_name": "Gi-pyo Kwon",
                  "ranking": 1278
                },
                {
                  "player_name": "Jeon Hyeon-byung",
                  "ranking": 1279
                },
                {
                  "player_name": "Nikita Demchenko",
                  "ranking": 1280
                },
                {
                  "player_name": "Alessio Romagnoli",
                  "ranking": 1281
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        }
      },
      "bench_players": {
        "Fran González": {
          "player_id": 1493226,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 13,
          "height": 199,
          "market_value": 2700000,
          "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.53,
            "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": 65.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 7595,
            "combined_rank_score": 6011.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 11814.0,
            "fifa_overall": 65.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "projected_match_rating": 6.8,
            "source_file": "data/player_rankings.csv",
            "player_name": "Fran González",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Tonny Vilhena",
                  "ranking": 7590
                },
                {
                  "player_name": "Etienne Camara",
                  "ranking": 7591
                },
                {
                  "player_name": "Zinedin Smajlović",
                  "ranking": 7592
                },
                {
                  "player_name": "Anthony Uribe",
                  "ranking": 7593
                },
                {
                  "player_name": "James McClean",
                  "ranking": 7594
                }
              ],
              "lower": [
                {
                  "player_name": "Michael Duffy",
                  "ranking": 7596
                },
                {
                  "player_name": "Rommell Ibarra",
                  "ranking": 7597
                },
                {
                  "player_name": "Dani Pacheco",
                  "ranking": 7598
                },
                {
                  "player_name": "Fredrik Ulvestad",
                  "ranking": 7599
                },
                {
                  "player_name": "Radosław Murawski",
                  "ranking": 7600
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0
        },
        "José Ángel Carmona": {
          "player_id": 1015240,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 22,
          "height": 183,
          "market_value": 11100000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 5.6406,
            "minutes": 14,
            "total_pass": 0,
            "accurate_pass": 0,
            "duels_won": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 0,
            "accurate_own_half_passes": 0,
            "total_opp_half_passes": 0,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 1,
            "possession_lost": 0.627,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 2,
            "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,
            "bench_appearance_probability": 0.316,
            "bench_expected_minutes": 13.96,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.53,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 80.0
          },
          "latest_10_games": [
            {
              "match_id": 16416301.0,
              "match_date": "2026-08-22",
              "home_team": "Athletic Club",
              "away_team": "Sevilla",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sevilla",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 22,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 1,
                "interceptions": 1,
                "clearances": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 995,
            "combined_rank_score": 607.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 445.0,
            "sofascore_rating": 6.9,
            "sofascore_appearances": 1.0,
            "fifa_rank": 770.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "substitute",
            "projected_match_rating": 5.6406,
            "source_file": "data/player_rankings.csv",
            "player_name": "José Ángel Carmona",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Saúl Ñíguez",
                  "ranking": 990
                },
                {
                  "player_name": "Abduvokhid Gulomov",
                  "ranking": 991
                },
                {
                  "player_name": "Danila Forov",
                  "ranking": 992
                },
                {
                  "player_name": "Bradley Lyons",
                  "ranking": 993
                },
                {
                  "player_name": "Dario Šarić",
                  "ranking": 994
                }
              ],
              "lower": [
                {
                  "player_name": "José Luis Gayà",
                  "ranking": 996
                },
                {
                  "player_name": "Rafael Bauzà",
                  "ranking": 997
                },
                {
                  "player_name": "Asier Osambela",
                  "ranking": 998
                },
                {
                  "player_name": "Nurbek Sarsenbaev",
                  "ranking": 999
                },
                {
                  "player_name": "Diyorbek Mamataliev",
                  "ranking": 1000
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.312,
          "history_matches": 1
        },
        "Arouna Sangante": {
          "player_id": 1035988,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 12,
          "height": 189,
          "market_value": 7700000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 6.7619,
            "minutes": 14,
            "total_pass": 7,
            "accurate_pass": 5,
            "duels_won": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 1.5311,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 3,
            "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": 3,
            "total_progression": 7,
            "progressive_carries": 0,
            "key_pass": 0,
            "bench_appearance_probability": 0.309,
            "bench_expected_minutes": 13.8,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.53,
            "projected_substitution_game_state_adjustment": 0,
            "substitution_usage": "available_bench_not_projected_used",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16416301.0,
              "match_date": "2026-08-22",
              "home_team": "Athletic Club",
              "away_team": "Sevilla",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 68,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 30,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421052.0,
              "match_date": "2026-08-15",
              "home_team": "Sevilla",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0039,
                "total_shots": 0,
                "total_pass": 47,
                "accurate_pass": 39,
                "tackles": 1,
                "interceptions": 3,
                "clearances": 4,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3868,
            "combined_rank_score": 1861.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 822.0,
            "sofascore_rating": 6.6,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2900.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "substitute",
            "projected_match_rating": 6.7619,
            "source_file": "data/player_rankings.csv",
            "player_name": "Arouna Sangante",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Dimitris Giannoulis",
                  "ranking": 3863
                },
                {
                  "player_name": "Marcelino Núñez",
                  "ranking": 3864
                },
                {
                  "player_name": "Finn Dahmen",
                  "ranking": 3865
                },
                {
                  "player_name": "Keven Schlotterbeck",
                  "ranking": 3866
                },
                {
                  "player_name": "Paulo Díaz",
                  "ranking": 3867
                }
              ],
              "lower": [
                {
                  "player_name": "Han-Noah Massengo",
                  "ranking": 3869
                },
                {
                  "player_name": "Eduardo Salvio",
                  "ranking": 3870
                },
                {
                  "player_name": "Amos Pieper",
                  "ranking": 3871
                },
                {
                  "player_name": "Victor Boniface",
                  "ranking": 3872
                },
                {
                  "player_name": "Matt Doherty",
                  "ranking": 3873
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.375,
          "history_matches": 2
        },
        "Youssouf Fofana": {
          "player_id": 945062,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 19,
          "height": 185,
          "market_value": 25000000,
          "stats": {
            "key_pass": 1,
            "assists": 0,
            "expected_assists": 0.0456,
            "expected_goals": 0.0435,
            "total_shots": 0,
            "total_pass": 15,
            "accurate_pass": 12,
            "ball_recovery": 2,
            "duels_won": 2,
            "rating": 7.2,
            "minutes": 23,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 2.4705,
            "dispossessed": 0.9,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0229,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0199,
            "ball_carries": 9,
            "total_progression": 24,
            "progressive_carries": 2,
            "bench_appearance_probability": 0.542,
            "bench_expected_minutes": 22.92,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.53,
            "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": 80.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 857,
            "combined_rank_score": 406.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 739.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "substitute",
            "projected_match_rating": 7.2,
            "source_file": "data/player_rankings.csv",
            "player_name": "Youssouf Fofana",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Leandro Trossard",
                  "ranking": 852
                },
                {
                  "player_name": "André-Franck Zambo Anguissa",
                  "ranking": 853
                },
                {
                  "player_name": "Igor Thiago",
                  "ranking": 854
                },
                {
                  "player_name": "Mukhammadali Alikulov",
                  "ranking": 855
                },
                {
                  "player_name": "Jamal Musiala",
                  "ranking": 856
                }
              ],
              "lower": [
                {
                  "player_name": "Connor Chapman",
                  "ranking": 858
                },
                {
                  "player_name": "Brad Tapp",
                  "ranking": 859
                },
                {
                  "player_name": "Éderson",
                  "ranking": 860
                },
                {
                  "player_name": "Machop Chol",
                  "ranking": 861
                },
                {
                  "player_name": "Jong-hyun Ko",
                  "ranking": 862
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0
        },
        "Rubén Vargas": {
          "player_id": 872919,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 179,
          "market_value": 13900000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0078,
            "assists": 0,
            "expected_goals": 0.0109,
            "rating": 6.8323,
            "minutes": 22,
            "total_pass": 2,
            "accurate_pass": 1,
            "ball_recovery": 1,
            "duels_won": 0,
            "total_shots": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 0,
            "accurate_own_half_passes": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 3,
            "possession_lost": 1.2743,
            "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,
            "bench_appearance_probability": 0.522,
            "bench_expected_minutes": 22.49,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.53,
            "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": 16421052.0,
              "match_date": "2026-08-15",
              "home_team": "Sevilla",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sevilla",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 20,
                "rating": 6.5,
                "assists": 0,
                "expected_goals": 0.0705,
                "expected_assists": 0.0065,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 6,
                "accurate_pass": 2,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 1980,
            "combined_rank_score": 765.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 292.0,
            "sofascore_rating": 7.05,
            "sofascore_appearances": 6.0,
            "fifa_rank": 1238.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "substitute",
            "projected_match_rating": 6.8323,
            "source_file": "data/player_rankings.csv",
            "player_name": "Rubén Vargas",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Damien Da Silva",
                  "ranking": 1975
                },
                {
                  "player_name": "Joe Rodon",
                  "ranking": 1976
                },
                {
                  "player_name": "Senny Mayulu",
                  "ranking": 1977
                },
                {
                  "player_name": "Gerard Gumbau",
                  "ranking": 1978
                },
                {
                  "player_name": "Malik Tillman",
                  "ranking": 1979
                }
              ],
              "lower": [
                {
                  "player_name": "Norman Rodríguez",
                  "ranking": 1981
                },
                {
                  "player_name": "Elzio Lohan Alves Lucio",
                  "ranking": 1982
                },
                {
                  "player_name": "Byong-oh Kim",
                  "ranking": 1983
                },
                {
                  "player_name": "Irakli Bughridze",
                  "ranking": 1984
                },
                {
                  "player_name": "Axel Alfonzo",
                  "ranking": 1985
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.312,
          "history_matches": 1
        },
        "Lucas Stassin": {
          "player_id": 1126521,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 184,
          "market_value": 15700000,
          "stats": {
            "expected_goals": 0.121,
            "goal_rate": 0.0518,
            "goals": 0,
            "total_shots": 1,
            "shots_on_target": 0,
            "expected_assists": 0.0293,
            "duels_won": 1,
            "aerial_won": 0,
            "rating": 7.1,
            "minutes": 26,
            "total_pass": 9,
            "accurate_pass": 7,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 13,
            "possession_lost": 2.6171,
            "dispossessed": 1.2,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 0,
            "key_pass": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0621,
            "offsides": 1,
            "ball_carries": 6,
            "total_progression": 16,
            "progressive_carries": 2,
            "bench_appearance_probability": 0.586,
            "bench_expected_minutes": 25.88,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.53,
            "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": 74.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3440,
            "combined_rank_score": 1429.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 2751.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "substitute",
            "projected_match_rating": 7.1,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lucas Stassin",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Sebastiaan Bornauw",
                  "ranking": 3435
                },
                {
                  "player_name": "Lorenzo Melgarejo",
                  "ranking": 3436
                },
                {
                  "player_name": "Tomáš Chorý",
                  "ranking": 3437
                },
                {
                  "player_name": "Ferran Jutglà",
                  "ranking": 3438
                },
                {
                  "player_name": "César Tárrega",
                  "ranking": 3439
                }
              ],
              "lower": [
                {
                  "player_name": "Nelson Deossa",
                  "ranking": 3441
                },
                {
                  "player_name": "Filip Jörgensen",
                  "ranking": 3442
                },
                {
                  "player_name": "Luis Muriel",
                  "ranking": 3443
                },
                {
                  "player_name": "Ethan Nwaneri",
                  "ranking": 3444
                },
                {
                  "player_name": "Lucas Martínez Quarta",
                  "ranking": 3445
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0
        },
        "Isaac Romero": {
          "player_id": 1018190,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 16,
          "height": 184,
          "market_value": 5200000,
          "stats": {
            "expected_goals": 0.0453,
            "goal_rate": 0.069,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0044,
            "key_pass": 0,
            "rating": 6.6891,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 1,
            "aerial_won": 1,
            "total_pass": 2,
            "accurate_pass": 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": 5,
            "possession_lost": 2.1417,
            "dispossessed": 0.9894,
            "duels_lost": 1,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1312,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 3,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.564,
            "bench_expected_minutes": 25.4,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.53,
            "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": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16416316.0,
              "match_date": "2026-08-29",
              "home_team": "Sevilla",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sevilla",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 22,
                "rating": 6.2,
                "assists": 0,
                "expected_assists": 0.0027,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 4,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416301.0,
              "match_date": "2026-08-22",
              "home_team": "Athletic Club",
              "away_team": "Sevilla",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sevilla",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 45,
                "rating": 8.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 1,
                "expected_goals": 0.1863,
                "expected_assists": 0.0039,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 5,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421052.0,
              "match_date": "2026-08-15",
              "home_team": "Sevilla",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 45,
                "rating": 6.3,
                "assists": 0,
                "expected_goals": 0.143,
                "expected_assists": 0.0071,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 13,
                "accurate_pass": 8,
                "aerial_won": 3,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3715,
            "combined_rank_score": 1682.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 490.0,
            "sofascore_rating": 6.8667,
            "sofascore_appearances": 3.0,
            "fifa_rank": 2874.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "substitute",
            "projected_match_rating": 6.6891,
            "source_file": "data/player_rankings.csv",
            "player_name": "Isaac Romero",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lucas Beltrán",
                  "ranking": 3710
                },
                {
                  "player_name": "Niclas Eliasson",
                  "ranking": 3711
                },
                {
                  "player_name": "Orri Óskarsson",
                  "ranking": 3712
                },
                {
                  "player_name": "Santiago Núñez",
                  "ranking": 3713
                },
                {
                  "player_name": "Viktor Johansson",
                  "ranking": 3714
                }
              ],
              "lower": [
                {
                  "player_name": "Roman Yaremchuk",
                  "ranking": 3716
                },
                {
                  "player_name": "Joe Gelhardt",
                  "ranking": 3717
                },
                {
                  "player_name": "Liam Kitching",
                  "ranking": 3718
                },
                {
                  "player_name": "Andreas Tetteh",
                  "ranking": 3719
                },
                {
                  "player_name": "Kiril Despodov",
                  "ranking": 3720
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        }
      },
      "substitutes": {
        "Lucas Stassin": {
          "player_id": 1126521,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 184,
          "market_value": 15700000,
          "stats": {
            "expected_goals": 0.121,
            "goal_rate": 0.0518,
            "goals": 0,
            "total_shots": 1,
            "shots_on_target": 0,
            "expected_assists": 0.0293,
            "duels_won": 1,
            "aerial_won": 0,
            "rating": 7.1,
            "minutes": 26,
            "total_pass": 9,
            "accurate_pass": 7,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 13,
            "possession_lost": 2.6171,
            "dispossessed": 1.2,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 0,
            "key_pass": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0621,
            "offsides": 1,
            "ball_carries": 6,
            "total_progression": 16,
            "progressive_carries": 2,
            "bench_appearance_probability": 0.586,
            "bench_expected_minutes": 25.88,
            "projected_substitution_order": 1,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.53,
            "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": 74.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 3440,
            "combined_rank_score": 1429.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 2751.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "substitute",
            "projected_match_rating": 7.1,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lucas Stassin",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Sebastiaan Bornauw",
                  "ranking": 3435
                },
                {
                  "player_name": "Lorenzo Melgarejo",
                  "ranking": 3436
                },
                {
                  "player_name": "Tomáš Chorý",
                  "ranking": 3437
                },
                {
                  "player_name": "Ferran Jutglà",
                  "ranking": 3438
                },
                {
                  "player_name": "César Tárrega",
                  "ranking": 3439
                }
              ],
              "lower": [
                {
                  "player_name": "Nelson Deossa",
                  "ranking": 3441
                },
                {
                  "player_name": "Filip Jörgensen",
                  "ranking": 3442
                },
                {
                  "player_name": "Luis Muriel",
                  "ranking": 3443
                },
                {
                  "player_name": "Ethan Nwaneri",
                  "ranking": 3444
                },
                {
                  "player_name": "Lucas Martínez Quarta",
                  "ranking": 3445
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0
        },
        "Isaac Romero": {
          "player_id": 1018190,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 16,
          "height": 184,
          "market_value": 5200000,
          "stats": {
            "expected_goals": 0.0453,
            "goal_rate": 0.069,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0044,
            "key_pass": 0,
            "rating": 6.6891,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 1,
            "aerial_won": 1,
            "total_pass": 2,
            "accurate_pass": 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": 5,
            "possession_lost": 2.1417,
            "dispossessed": 0.9894,
            "duels_lost": 1,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1312,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 3,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.564,
            "bench_expected_minutes": 25.4,
            "projected_substitution_order": 2,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.53,
            "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": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 16416316.0,
              "match_date": "2026-08-29",
              "home_team": "Sevilla",
              "away_team": "Atlético Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Sevilla",
              "opponent": "Atlético Madrid",
              "stats": {
                "minutes": 22,
                "rating": 6.2,
                "assists": 0,
                "expected_assists": 0.0027,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 4,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16416301.0,
              "match_date": "2026-08-22",
              "home_team": "Athletic Club",
              "away_team": "Sevilla",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Sevilla",
              "opponent": "Athletic Club",
              "stats": {
                "minutes": 45,
                "rating": 8.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 1,
                "expected_goals": 0.1863,
                "expected_assists": 0.0039,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 5,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            },
            {
              "match_id": 16421052.0,
              "match_date": "2026-08-15",
              "home_team": "Sevilla",
              "away_team": "Rayo Vallecano",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sevilla",
              "opponent": "Rayo Vallecano",
              "stats": {
                "minutes": 45,
                "rating": 6.3,
                "assists": 0,
                "expected_goals": 0.143,
                "expected_assists": 0.0071,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 13,
                "accurate_pass": 8,
                "aerial_won": 3,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8.0",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "97268.0",
              "season_name": "LaLiga 26/27",
              "season_year": "26/27"
            }
          ],
          "ranking": {
            "global_player_rank": 3715,
            "combined_rank_score": 1682.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 490.0,
            "sofascore_rating": 6.8667,
            "sofascore_appearances": 3.0,
            "fifa_rank": 2874.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "substitute",
            "projected_match_rating": 6.6891,
            "source_file": "data/player_rankings.csv",
            "player_name": "Isaac Romero",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lucas Beltrán",
                  "ranking": 3710
                },
                {
                  "player_name": "Niclas Eliasson",
                  "ranking": 3711
                },
                {
                  "player_name": "Orri Óskarsson",
                  "ranking": 3712
                },
                {
                  "player_name": "Santiago Núñez",
                  "ranking": 3713
                },
                {
                  "player_name": "Viktor Johansson",
                  "ranking": 3714
                }
              ],
              "lower": [
                {
                  "player_name": "Roman Yaremchuk",
                  "ranking": 3716
                },
                {
                  "player_name": "Joe Gelhardt",
                  "ranking": 3717
                },
                {
                  "player_name": "Liam Kitching",
                  "ranking": 3718
                },
                {
                  "player_name": "Andreas Tetteh",
                  "ranking": 3719
                },
                {
                  "player_name": "Kiril Despodov",
                  "ranking": 3720
                }
              ]
            }
          },
          "data_sources": [
            "match_history",
            "market_value"
          ],
          "data_confidence": 0.438,
          "history_matches": 3
        },
        "Youssouf Fofana": {
          "player_id": 945062,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 19,
          "height": 185,
          "market_value": 25000000,
          "stats": {
            "key_pass": 1,
            "assists": 0,
            "expected_assists": 0.0456,
            "expected_goals": 0.0435,
            "total_shots": 0,
            "total_pass": 15,
            "accurate_pass": 12,
            "ball_recovery": 2,
            "duels_won": 2,
            "rating": 7.2,
            "minutes": 23,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 5,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 2.4705,
            "dispossessed": 0.9,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0229,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0199,
            "ball_carries": 9,
            "total_progression": 24,
            "progressive_carries": 2,
            "bench_appearance_probability": 0.542,
            "bench_expected_minutes": 22.92,
            "projected_substitution_order": 3,
            "substitution_rule_cap": 5,
            "projected_team_substitution_count": 3,
            "projected_substitution_expected_count": 2.53,
            "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": 80.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 857,
            "combined_rank_score": 406.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 739.0,
            "fifa_overall": 80.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "substitute",
            "projected_match_rating": 7.2,
            "source_file": "data/player_rankings.csv",
            "player_name": "Youssouf Fofana",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Leandro Trossard",
                  "ranking": 852
                },
                {
                  "player_name": "André-Franck Zambo Anguissa",
                  "ranking": 853
                },
                {
                  "player_name": "Igor Thiago",
                  "ranking": 854
                },
                {
                  "player_name": "Mukhammadali Alikulov",
                  "ranking": 855
                },
                {
                  "player_name": "Jamal Musiala",
                  "ranking": 856
                }
              ],
              "lower": [
                {
                  "player_name": "Connor Chapman",
                  "ranking": 858
                },
                {
                  "player_name": "Brad Tapp",
                  "ranking": 859
                },
                {
                  "player_name": "Éderson",
                  "ranking": 860
                },
                {
                  "player_name": "Machop Chol",
                  "ranking": 861
                },
                {
                  "player_name": "Jong-hyun Ko",
                  "ranking": 862
                }
              ]
            }
          },
          "data_sources": [
            "market_value"
          ],
          "data_confidence": 0.25,
          "history_matches": 0
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.27,
        "expected_assists": 0.51,
        "total_shots": 13,
        "shots_on_target": 6,
        "total_passes": 320,
        "interceptions": 8,
        "tackles": 20,
        "avg_rating": 6.7,
        "possession_estimated_pct": 49.3,
        "pressing_actions_per_90": 6.4
      }
    }
  },
  "antagonist_report": {
    "home_attacking_duels": [
      {
        "attacker": "Roberto Fernández",
        "attacker_role": "ST",
        "attacker_market_value": 10300000,
        "attacker_height": 186,
        "attacker_skill_quality": 0.526,
        "defenders": [
          "Kike Salas",
          "Andres Castrin"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.532,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.193,
        "xg_contribution": 0.2206,
        "shots_in_zone": 2.1,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.8,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.5,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Kike Salas",
            "role": "CB",
            "market_value": 15400000,
            "tackles_attempted": 1.0,
            "tackles_won": 1.1,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.807
          },
          {
            "player": "Andres Castrin",
            "role": "CB",
            "market_value": 6500000,
            "tackles_attempted": 1.0,
            "tackles_won": 1.1,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.807
          }
        ],
        "duel_analysis": "Roberto Fernández (ST) is heavily outmatched defensively against Kike Salas and Andres Castrin in a 2-defender block. Duel win probability: 19%.  Projected xG contribution: 0.221 — with very limited chance creation expected."
      },
      {
        "attacker": "Tyrhys Dolan",
        "attacker_role": "LM",
        "attacker_market_value": 10800000,
        "attacker_height": 170,
        "attacker_skill_quality": 0.532,
        "defenders": [
          "Juan Iglesias"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.46,
        "duel_zone": "Left Mid vs Right Back — Wide Channel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.432,
        "xg_contribution": 0.1058,
        "shots_in_zone": 1.5,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.1,
        "aerial_duels": 2,
        "aerial_won": 0.8,
        "crosses_in_zone": 2.2,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Juan Iglesias",
            "role": "RB",
            "market_value": 4800000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.7,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.2,
            "defensive_success_rate": 0.568
          }
        ],
        "duel_analysis": "Tyrhys Dolan (LM) is evenly matched against Juan Iglesias in a direct 1v1 contest. Duel win probability: 43%.  Projected xG contribution: 0.106 — with neither side clearly dominant."
      },
      {
        "attacker": "Edu Expósito",
        "attacker_role": "RM",
        "attacker_market_value": 4500000,
        "attacker_height": 175,
        "attacker_skill_quality": 0.456,
        "defenders": [
          "Gabriel Suazo"
        ],
        "defender_roles": [
          "LB"
        ],
        "def_skill_quality_avg": 0.482,
        "duel_zone": "Right Mid vs Left Back — Wide Channel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.436,
        "xg_contribution": 0.0583,
        "shots_in_zone": 1.5,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.2,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 2.1,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Gabriel Suazo",
            "role": "LB",
            "market_value": 6600000,
            "tackles_attempted": 2.0,
            "tackles_won": 1.7,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.564
          }
        ],
        "duel_analysis": "Edu Expósito (RM) is evenly matched against Gabriel Suazo in a direct 1v1 contest. Duel win probability: 44%.  Projected xG contribution: 0.058 — with neither side clearly dominant."
      },
      {
        "attacker": "Urko González",
        "attacker_role": "CM",
        "attacker_market_value": 11600000,
        "attacker_height": 189,
        "attacker_skill_quality": 0.541,
        "defenders": [
          "Giorgi Kochorashvili"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.447,
        "duel_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.544,
        "xg_contribution": 0.0414,
        "shots_in_zone": 1.9,
        "dribbles_attempted": 2,
        "dribbles_successful": 1.0,
        "aerial_duels": 2,
        "aerial_won": 1.3,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.0,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Giorgi Kochorashvili",
            "role": "CDM",
            "market_value": 3800000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.5,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.456
          }
        ],
        "duel_analysis": "Urko González (CM) is slightly favored against Giorgi Kochorashvili in a direct 1v1 contest. Duel win probability: 54%.  Projected xG contribution: 0.041 — creating consistent moderate threat."
      }
    ],
    "away_attacking_duels": [
      {
        "attacker": "Miguel Sierra",
        "attacker_role": "LW",
        "attacker_market_value": 330000,
        "attacker_height": 181,
        "attacker_skill_quality": 0.404,
        "defenders": [
          "Roger Hinojo"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.412,
        "duel_zone": "Left Wing vs Right Back — Flank Battle",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.48,
        "xg_contribution": 0.1172,
        "shots_in_zone": 1.9,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.3,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 1.8,
        "fouls_drawn": 1.0,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Roger Hinojo",
            "role": "RB",
            "market_value": 1000000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.6,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.52
          }
        ],
        "duel_analysis": "Miguel Sierra (LW) is evenly matched against Roger Hinojo in a direct 1v1 contest. Duel win probability: 48%.  Projected xG contribution: 0.117 — with neither side clearly dominant."
      },
      {
        "attacker": "Jon Guridi",
        "attacker_role": "CAM",
        "attacker_market_value": 1700000,
        "attacker_height": 179,
        "attacker_skill_quality": 0.421,
        "defenders": [
          "Urko González"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.541,
        "duel_zone": "CAM vs CM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.326,
        "xg_contribution": 0.0409,
        "shots_in_zone": 1.9,
        "dribbles_attempted": 3,
        "dribbles_successful": 0.9,
        "aerial_duels": 2,
        "aerial_won": 1.0,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Urko González",
            "role": "CM",
            "market_value": 11600000,
            "tackles_attempted": 2.0,
            "tackles_won": 2.0,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.674
          }
        ],
        "duel_analysis": "Jon Guridi (CAM) faces tough defensive resistance against Urko González in a direct 1v1 contest. Duel win probability: 33%.  Projected xG contribution: 0.041 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Robbie Ure",
        "attacker_role": "ST",
        "attacker_market_value": 4800000,
        "attacker_height": 189,
        "attacker_skill_quality": 0.46,
        "defenders": [
          "Omar El Hilali",
          "Unai Núñez"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.515,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.193,
        "xg_contribution": 0.2126,
        "shots_in_zone": 2.1,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.9,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.5,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Omar El Hilali",
            "role": "CB",
            "market_value": 15900000,
            "tackles_attempted": 1.0,
            "tackles_won": 1.1,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.8,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.807
          },
          {
            "player": "Unai Núñez",
            "role": "CB",
            "market_value": 3300000,
            "tackles_attempted": 1.0,
            "tackles_won": 1.1,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.807
          }
        ],
        "duel_analysis": "Robbie Ure (ST) is heavily outmatched defensively against Omar El Hilali and Unai Núñez in a 2-defender block. Duel win probability: 19%.  Projected xG contribution: 0.213 — with very limited chance creation expected."
      },
      {
        "attacker": "Giorgi Kochorashvili",
        "attacker_role": "CDM",
        "attacker_market_value": 3800000,
        "attacker_height": 176,
        "attacker_skill_quality": 0.447,
        "defenders": [
          "Urko González"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.541,
        "duel_zone": "Holding Mid vs Central Mid — Midfield Anchor Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.306,
        "xg_contribution": 0.0595,
        "shots_in_zone": 0.8,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.5,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Urko González",
            "role": "CM",
            "market_value": 11600000,
            "tackles_attempted": 2.0,
            "tackles_won": 2.0,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.694
          }
        ],
        "duel_analysis": "Giorgi Kochorashvili (CDM) is heavily outmatched defensively against Urko González in a direct 1v1 contest. Duel win probability: 31%.  Projected xG contribution: 0.059 — with very limited chance creation expected."
      }
    ],
    "midfield_battle": {
      "home_midfield_power": 0.529,
      "away_midfield_power": 0.489,
      "home_creative_power": 0.405,
      "away_creative_power": 0.361,
      "home_defensive_power": 0.494,
      "away_defensive_power": 0.439,
      "home_dominance_ratio": 0.52,
      "home_midfield_count": 5,
      "away_midfield_count": 4,
      "home_midfield_players": [
        "Javier Hernández",
        "Tyrhys Dolan",
        "Edu Expósito",
        "Urko González",
        "Álex Calatrava"
      ],
      "away_midfield_players": [
        "Jon Guridi",
        "Miguel Sierra",
        "Giorgi Kochorashvili",
        "Lucien Agoumé"
      ],
      "possession_advantage": "neutral",
      "estimated_possession_home_pct": 50.7,
      "estimated_possession_away_pct": 49.3,
      "home_pressing_actions_per_90": 6.8,
      "away_pressing_actions_per_90": 6.4,
      "home_key_passes_projected": 3.9,
      "away_key_passes_projected": 3.7,
      "home_throughball_threat": 1.8,
      "away_throughball_threat": 1.7,
      "key_personal_duel": "Urko González vs Lucien Agoumé",
      "midfield_lambda_factor_home": 1.002,
      "midfield_lambda_factor_away": 0.985
    },
    "formation_analysis": {
      "home_formation": "4-4-2",
      "away_formation": "4-2-3-1",
      "home_tactical_bonus": -0.04,
      "away_tactical_bonus": 0.07,
      "formation_verdict": "Tactical parity between 4-4-2 and 4-2-3-1. Match outcome driven primarily by individual player quality."
    },
    "home_lambda": 1.269,
    "away_lambda": 1.273,
    "home_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "Left Mid vs Right Back — Wide Channel"
    ],
    "away_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "Left Wing vs Right Back — Flank Battle"
    ],
    "home_player_antagonists": {
      "Roberto Fernández": {
        "opponents": [
          "Kike Salas",
          "Andres Castrin"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Tyrhys Dolan": {
        "opponents": [
          "Juan Iglesias",
          "Miguel Sierra"
        ],
        "primary_zone": "Left Mid vs Right Back — Wide Channel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Edu Expósito": {
        "opponents": [
          "Gabriel Suazo",
          "Jon Guridi"
        ],
        "primary_zone": "Right Mid vs Left Back — Wide Channel",
        "source": "attacking_duel, midfield_pairing"
      },
      "Urko González": {
        "opponents": [
          "Giorgi Kochorashvili",
          "Jon Guridi"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "attacking_duel, defensive_duel, midfield_pairing"
      },
      "Roger Hinojo": {
        "opponents": [
          "Miguel Sierra"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "defensive_duel"
      },
      "Omar El Hilali": {
        "opponents": [
          "Robbie Ure"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Unai Núñez": {
        "opponents": [
          "Robbie Ure"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Álex Calatrava": {
        "opponents": [
          "Giorgi Kochorashvili"
        ],
        "primary_zone": "Midfield lane",
        "source": "midfield_pairing"
      },
      "Javier Hernández": {
        "opponents": [
          "Lucien Agoumé"
        ],
        "primary_zone": "Midfield lane",
        "source": "midfield_pairing"
      },
      "Marko Dmitrović": {
        "opponents": [
          "Chidera Ejuke",
          "Robbie Ure"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Leandro Cabrera": {
        "opponents": [
          "Chidera Ejuke"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "away_player_antagonists": {
      "Kike Salas": {
        "opponents": [
          "Roberto Fernández"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Andres Castrin": {
        "opponents": [
          "Roberto Fernández"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Juan Iglesias": {
        "opponents": [
          "Tyrhys Dolan"
        ],
        "primary_zone": "Left Mid vs Right Back — Wide Channel",
        "source": "defensive_duel"
      },
      "Gabriel Suazo": {
        "opponents": [
          "Edu Expósito"
        ],
        "primary_zone": "Right Mid vs Left Back — Wide Channel",
        "source": "defensive_duel"
      },
      "Giorgi Kochorashvili": {
        "opponents": [
          "Urko González",
          "Álex Calatrava"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "defensive_duel, attacking_duel, midfield_pairing"
      },
      "Miguel Sierra": {
        "opponents": [
          "Roger Hinojo",
          "Tyrhys Dolan"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Jon Guridi": {
        "opponents": [
          "Urko González",
          "Edu Expósito"
        ],
        "primary_zone": "CAM vs CM",
        "source": "attacking_duel, midfield_pairing"
      },
      "Robbie Ure": {
        "opponents": [
          "Omar El Hilali",
          "Unai Núñez"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Lucien Agoumé": {
        "opponents": [
          "Javier Hernández"
        ],
        "primary_zone": "Midfield lane",
        "source": "midfield_pairing"
      },
      "Odysseas Vlachodimos": {
        "opponents": [
          "Roberto Fernández",
          "Álex Calatrava"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Chidera Ejuke": {
        "opponents": [
          "Leandro Cabrera",
          "Omar El Hilali"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "key_tactical_insight": "Midfield is evenly contested — Urko González vs Lucien Agoumé will be the pivotal duel. Total antagonist xG — Home: 0.43, Away: 0.43. Home danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle.",
    "lambda_factors": {
      "home_gk_opposition_factor": 1.0096,
      "away_gk_opposition_factor": 1.0227,
      "home_set_piece_bonus": 0.098,
      "away_set_piece_bonus": 0.098,
      "home_defensive_solidity_vs": 0.9745,
      "away_defensive_solidity_vs": 0.9974,
      "home_midfield_factor": 1.002,
      "away_midfield_factor": 0.985,
      "stage_discount": 1.0,
      "quality_gap_applied": false,
      "home_avg_quality": 0.4778,
      "away_avg_quality": 0.4769,
      "avg_quality_gap": 0.0009,
      "squad_value_gap_log": 0.0095,
      "top5_value_gap_log": 0.0706,
      "attack_value_gap_log": 0.28,
      "elite_count_gap": 0,
      "combined_quality_gap": 0.0137,
      "stronger_lambda_boost": 0.0,
      "weaker_lambda_suppression": 0.0,
      "home_bench_lambda_bonus": 0.0809,
      "away_bench_lambda_bonus": 0.0986,
      "home_bench_players_modelled": 7,
      "away_bench_players_modelled": 7,
      "mismatch_score_pressure_applied": false,
      "competitive_underdog_floor_applied": false,
      "competitive_underdog_floor": 1.02,
      "pre_competitive_floor_home_lambda": 1.269,
      "pre_competitive_floor_away_lambda": 1.273,
      "pre_calibration_home_lambda": 1.2689,
      "pre_calibration_away_lambda": 1.2726,
      "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.269,
      "final_away_lambda": 1.273
    }
  },
  "home_standing": {
    "available": true,
    "team_position": 14,
    "opponent_position": 9,
    "standing_lambda_multiplier": 1.3696,
    "attack_index": 2.084,
    "defense_concede_index": 1.042,
    "form_multiplier": 0.954,
    "team_attack_rate_contextual": 2.5,
    "opp_defense_rate_contextual": 1.25,
    "team_ppg": 1.0,
    "opponent_ppg": 2.0
  },
  "away_standing": {
    "available": true,
    "team_position": 9,
    "opponent_position": 14,
    "standing_lambda_multiplier": 1.3641,
    "attack_index": 1.25,
    "defense_concede_index": 1.667,
    "form_multiplier": 1.046,
    "team_attack_rate_contextual": 1.5,
    "opp_defense_rate_contextual": 2.0,
    "team_ppg": 2.0,
    "opponent_ppg": 1.0
  },
  "timestamp": "2026-09-06T13:30:36Z"
}