¿Cómo utilizan los clubes xG en el análisis de transferencias?

¿Qué es xG en el fútbol y cómo ayuda esta métrica en el análisis de transferencias?

xG (goles esperados) es una evaluación numérica de la calidad de una oportunidad de gol. Cada tiro a puerta se le asigna una probabilidad de resultar en un gol. La probabilidad se calcula en base a datos históricos: posición del tiro, ángulo hacia la portería, tipo de pase, parte del cuerpo, presión de los defensores y otros factores. Por ejemplo, un penalti típicamente tiene un xG de aproximadamente 0.75–0.8, mientras que un tiro de larga distancia desde fuera del área penal tiene un xG de 0.02–0.05. La suma de xG para un partido o temporada muestra cuántos goles un equipo o jugador «debería» haber marcado basado en la calidad de las oportunidades creadas.

Para el análisis de transferencias, xG es fundamental porque separa la calidad del juego de la aleatoriedad de las oportunidades de finalización. El número de goles marcados depende en gran medida de la suerte en períodos cortos, mientras que xG es más estable y describe mejor el nivel real de rendimiento. Los departamentos de reclutamiento de los clubes evalúan a los delanteros en función de su xG y la relación «goles - xG» para entender quién consistentemente se coloca en posiciones de gol y quién está experimentando un aumento a corto plazo. De manera similar, se analiza la defensa: el xG concedido por los oponentes refleja con qué frecuencia el equipo permite oportunidades peligrosas en su portería.

Los clubes impulsados por datos construyen modelos de valor a largo plazo de jugadores donde xG y métricas relacionadas (npxG, xG/90, xGChain, etc.) sirven como base. Para un cálculo y seguimiento precisos de estas métricas, se necesita datos detallados sobre tiros y estadísticas del equipo. Aquí es donde entran en juego las APIs de eventos deportivos: permiten un flujo único de partidos, estadísticas avanzadas, eventos en vivo y cuotas de casas de apuestas. Basado en tales datos, se pueden crear modelos de xG propios e integrarlos en el análisis de transferencias, automatizando la evaluación de miles de jugadores de docenas de ligas.

Cómo los clubes utilizan las estadísticas de xG al seleccionar y evaluar jugadores.

Al evaluar delanteros y mediocampistas ofensivos, los clubes no solo miran los goles y asistencias, sino también el perfil de xG del jugador. La pregunta clave es: ¿con qué frecuencia el futbolista se encuentra en posiciones de gol de calidad y cuán estable es esta habilidad a lo largo del tiempo? Los analistas comparan xG/90 minutos, xG por tiro, la proporción de tiros desde «zonas calientes» y la dinámica de estas métricas a lo largo de varias temporadas. Esto permite distinguir a un jugador que anotó 15 goles con un xG de 7 (probable sobre rendimiento, riesgo de regresión a la media) de un delantero con 10 goles y un xG de 14 (crea muchas oportunidades pero temporalmente no las convierte).

Los departamentos de transferencias también utilizan análisis más matizados. Por ejemplo, calculan xG en varios contextos: contra oponentes fuertes, cuando el marcador está empatado, en los últimos 15 minutos del partido. La estructura de las oportunidades se analiza por tipo de ataque: contraataques rápidos, ataques posicionales, jugadas a balón parado. Para los mediocampistas creativos, no solo es importante su propio xG, sino también xA (asistencias esperadas), así como la participación en la construcción de ataques (pases en el tercio final, acciones previas al gol). Todo esto se puede calcular automáticamente si los datos de partidos y eventos provienen de una API de estadísticas deportivas confiable.

Los clubes profesionales construyen un pipeline analítico integral: los partidos de las ligas deseadas se cargan automáticamente desde la API de eventos deportivos, junto con estadísticas sobre tiros y acciones del equipo, luego se calculan xG y otras métricas sobre estos datos, y se construyen clasificaciones y listas cortas de jugadores basadas en ellos. Este enfoque reduce la subjetividad del scouting y permite encontrar rápidamente jugadores subvalorados en mercados donde los competidores aún dependen solo de métricas tradicionales.

Qué APIs de eventos deportivos proporcionan acceso a datos de xG y estadísticas avanzadas.

Para trabajar con xG a nivel de club, no solo se necesitan los resultados finales y los goleadores, sino también estadísticas detalladas del partido. Las APIs modernas de eventos deportivos proporcionan datos extensos: estadísticas generales y trimestrales, número y tipos de tiros, posesión, «grandes oportunidades», acciones en el tercio final, y mucho más. Estos parámetros sirven como base para construir modelos de xG propios. Cuanto más ricos y limpios sean los datos en bruto, más precisa será la evaluación de la calidad de las oportunidades creadas y la estabilidad del rendimiento de los jugadores.

La plataforma api-sport.pro ofrece una API unificada de Eventos Deportivos para varios deportes, incluyendo fútbol, baloncesto, hockey, tenis, tenis de mesa y deportes electrónicos. A través del endpoint /v2/fútbol/partidos puedes obtener partidos con un conjunto estadísticasDelPartido, donde los indicadores clave están agrupados por períodos: tiros, posesión, pases, duelos y acciones defensivas. Estos datos se utilizan como entrada para los modelos propios de xG/xA del club. Además, hay un bloque disponible oddsBase con cuotas de casas de apuestas, lo que permite considerar las expectativas del mercado al evaluar la fuerza de equipos y jugadores.

La integración con la API es sencilla: el club se autentica a través de una clave API y solicita los torneos, temporadas y partidos necesarios, filtrando datos por ligas, equipos y estado del partido. Luego, el sistema analítico extrae automáticamente estadísticas y las guarda en un almacén de datos. A continuación se muestra un ejemplo de una solicitud básica a la API de fútbol, con base en la cual se puede calcular el modelo de xG del club:

const API_KEY = 'YOUR_API_KEY';
async function loadMatchesWithStats(date) {
  const url = `https://api.api-sport.ru/v2/football/matches?date=${date}`;
  const res = await fetch(url, {
    headers: { 'Authorization': API_KEY }
  });
  const data = await res.json();
  data.matches.forEach(match => {
    // match.matchStatistics содержит детальную статистику,
    // на основе которой можно считать xG-модель клуба
    console.log(match.id, match.matchStatistics);
  });
}
loadMatchesWithStats('2025-09-03');

Cómo conectar y utilizar la API de datos de xG para el análisis de transferencias del club.

Conectarse a la API de Eventos Deportivos para análisis de transferencias generalmente comienza con el registro y la obtención de una clave de acceso. En la plataforma api-sport.pro se tarda unos minutos: creas una cuenta, eliges un plan para el volumen requerido de solicitudes y en la cuenta personal. recibes una clave API. La clave se añade luego al encabezado Autorización de cada solicitud. Este enfoque garantiza seguridad y permite un control flexible de los límites, y el club puede dividir las claves por equipos de analistas o por servicios individuales dentro de la infraestructura.

El siguiente paso es diseñar el pipeline de datos. Por lo general, el club necesita: una lista de deportes y torneos soportados, luego - partidos de ligas seleccionadas a lo largo de varias temporadas y sus estadísticas. Esto se puede implementar como una recuperación por lotes periódica (por ejemplo, cargando partidos actualizados una vez al día) o como un flujo casi en línea, complementado posteriormente por una conexión WebSocket. Después de la carga, los datos van a almacenamiento (SQL/NoSQL/columnar), donde se calculan xG, xA y métricas derivadas. Los resultados están disponibles para el departamento de reclutamiento a través de paneles internos e informes.

A continuación se muestra un ejemplo de un script simple en Python que recupera los partidos del equipo, incluidas las estadísticas, y prepara los datos para calcular métricas xG:

import requests
API_KEY = 'YOUR_API_KEY'
BASE_URL = 'https://api.api-sport.ru/v2/football/matches'
params = {
    'team_id': 195801,      # ID команды
    'status': 'finished'    # только завершенные матчи
}
headers = {
    'Authorization': API_KEY
}
response = requests.get(BASE_URL, params=params, headers=headers)
response.raise_for_status()
matches = response.json().get('matches', [])
for match in matches:
    stats = match.get('matchStatistics', [])
    # Здесь можно вызвать свою функцию расчета xG
    # compute_xg_from_stats(stats)
    print(match['id'], len(stats))

Luego se expande este código: se añaden bucles para torneos y temporadas, los datos en bruto y los resultados del cálculo de xG se guardan en la base de datos, y aparece la integración con sistemas de BI. A medida que surgen nuevas oportunidades (por ejemplo, transmisión de eventos en vivo a través de WebSocket y modelos de IA del lado del proveedor), el club puede enriquecer el pipeline y usar xG en tiempo real - para el scouting en vivo y la evaluación de la dinámica de la forma del jugador.

Cómo analizar delanteros y mediocampistas utilizando xG, xA y otras métricas a través de la API.

Para los delanteros, se consideran métricas clave xG/90, el número de tiros desde el área penal, la proporción de tiros con altos valores de xG y la diferencia entre «goles - xG». Usando datos obtenidos a través de la API de partidos, el club puede recopilar estadísticas para cada jugador sobre tiros, «grandes oportunidades», toques en el área penal y posesión en el tercio final. Con base en estos parámetros, se construye un modelo de goles esperados. Un jugador que genera consistentemente un alto xG incluso en equipos promedio suele ser mejor predicho que un delantero con una sola temporada explosiva a bajo xG.

Para los mediocampistas creativos, se añade un bloque de pases y creación de oportunidades. Se analiza el xA potencial (qué tan peligrosas son las oportunidades creadas por los pases del jugador), el número de pases al tercio final, acciones previas al gol y precisión de pase bajo presión. La API de eventos deportivos proporciona estadísticas detalladas del equipo como entradasEnElTercerCuarto, pasesPrecisos, «grandes oportunidades creadas», así como alineaciones y estadísticas básicas de los jugadores en alineación. Al combinar estos datos por partidos, los analistas construyen sus modelos de asistencias esperadas y la contribución del jugador a la creación de oportunidades.

Así es como podría verse un proceso simplificado de agregación de estadísticas de jugadores por partidos de equipo utilizando la API:

import requests
API_KEY = 'YOUR_API_KEY'
headers = {'Authorization': API_KEY}
# 1. Берем все завершенные матчи команды
matches = requests.get(
    'https://api.api-sport.ru/v2/football/matches',
    params={'team_id': 195801, 'status': 'finished'},
    headers=headers
).json().get('matches', [])
player_stats = {}
for match in matches:
    home = match['homeTeam']
    away = match['awayTeam']
    for team in (home, away):
        lineup = team.get('lineup', {}).get('players', [])
        for p in lineup:
            pid = p['id']
            st = p.get('statistics', {})  # содержит детализацию по игроку, если включена
            player_stats.setdefault(pid, []).append(st)
# Далее клуб считает xG/xA для каждого игрока по своим моделям

En la práctica, se construyen informes complejos sobre la base de dichos datos agregados: distribuciones de xG por tiempos, mapas de tiros, contribuciones a trampas de presión a través de duelos e intercepciones, comparaciones con el valor de mercado del jugador. Al utilizar una API unificada como fuente de datos en bruto, el club gana flexibilidad: se pueden probar diferentes modelos de xG/xA y actualizar rápidamente sin depender del formato de métricas listas de terceros.

Cómo reducir los riesgos de transferencias fallidas utilizando xG y datos de la API.

Las transferencias fallidas a menudo se asocian con la sobreestimación de resultados a corto plazo. Un jugador puede tener una temporada destacada, anotando muchos goles desde posiciones difíciles, pero su xG puede permanecer moderado. El análisis de «goles - xG» muestra cuán estadísticamente estable es el resultado actual. Si un delantero anota significativamente más de lo esperado según la calidad de las oportunidades durante un largo período, hay un alto riesgo de regresión a la media. Un club que confía en la analítica de xG ve tales patrones con anticipación y evalúa el valor del jugador y los términos del contrato con más cautela.

La API de eventos deportivos permite la automatización de este análisis de riesgo. El club puede construir series temporales de xG y xG permitidos para los oponentes para cada objetivo potencial, teniendo en cuenta el contexto de la liga y la fuerza del equipo. Una capa adicional es el uso de datos de cuotas de casas de apuestas del bloque oddsBase: reflejan la expectativa del mercado sobre la fuerza del equipo en cada partido. Al comparar el perfil de xG real de un jugador con la frecuencia con la que su equipo fue favorito o no según las cuotas, los analistas ajustan la evaluación: destacan a aquellos que consistentemente crean oportunidades contra oponentes fuertes.

Un ejemplo de obtención de cuotas para un partido para usarlas posteriormente en el modelo de riesgo de transferencia:

const API_KEY = 'YOUR_API_KEY';
async function loadMatchWithOdds(matchId) {
  const res = await fetch(
    `https://api.api-sport.ru/v2/football/matches/${matchId}`,
    { headers: { 'Authorization': API_KEY } }
  );
  const match = await res.json();
  const odds = match.oddsBase || [];
  // odds содержит рынки ставок (1X2, тотал и др.),
  // их можно использовать как прокси силы команд
  console.log(match.id, odds.map(m => m.group));
}
loadMatchWithOdds(14570728);

Con base en dichos datos, el club construye modelos de puntuación integrales: además de xG y xA, se tienen en cuenta la edad, la posición, los minutos jugados, el nivel del torneo, el contexto de las cuotas y la estabilidad del rendimiento. Esto reduce la probabilidad de pagar de más por una «estrella de una temporada» y ayuda a encontrar jugadores con un perfil de xG estable que probablemente mantendrán su productividad en un nuevo campeonato.

Ejemplos de uso de xG y APIs de estadísticas de fútbol en el scouting y selección de jugadores.

La aplicación práctica de xG en el scouting comienza con el establecimiento de una tarea. Por ejemplo, el club busca un delantero que pueda generar consistentemente 0.4–0.5 xG por 90 minutos en una liga de nivel similar. Los analistas utilizan la API para seleccionar los torneos necesarios, descargar todos los partidos de las últimas dos a tres temporadas y calcular el perfil de xG de los delanteros. Los jugadores con métricas xG/90 adecuadas, un alto número de tiros desde el centro del área penal y una edad aceptable pasan a la lista preliminar. Después de eso, los cazatalentos se dedican al trabajo en video y a las visualizaciones en vivo basadas en una lista de candidatos especialmente seleccionada, en lugar de cientos de nombres.

Otro caso es la búsqueda de un centrocampista creativo. El club forma un filtro basado en xA/90, el número de pases en el tercio final, «grandes oportunidades creadas» y la compactación de pérdidas de balón. Los datos se obtienen de la API de Eventos Deportivos: partidos, alineaciones, estadísticas avanzadas sobre pases, posesión y acciones en el tercio final. Sobre estos parámetros, se calcula un modelo de asistencias esperadas. El resultado es un ranking de jugadores que tiene en cuenta no solo el conteo real de asistencias (dependiente de la finalización de los delanteros) sino también la calidad de las oportunidades creadas.

A continuación se muestra un ejemplo de cómo comenzar con un paso simple: obtener una lista de jugadores del equipo o liga de interés, y luego combinarlos con métricas xG/xA calculadas en su sistema:

import requests
API_KEY = 'YOUR_API_KEY'
headers = {'Authorization': API_KEY}
# Получаем игроков конкретной команды (например, потенциальной цели для массового скаутинга)
resp = requests.get(
    'https://api.api-sport.ru/v2/football/players',
    params={'team_id': 195801},
    headers=headers
)
resp.raise_for_status()
data = resp.json()
players = data.get('players', [])
for p in players:
    print(p['id'], p['name'], p.get('position'))
# Далее по player_id можно подтягивать матчи и статистику,
# считать xG/xA и строить рейтинги для трансферного шорт-листа

Al unir escenarios similares en un solo sistema basado en la API de eventos deportivos, el club recibe una infraestructura de scouting escalable. Permite respuestas rápidas a los cambios del mercado, probar modelos xG alternativos, aprovechar nuevas oportunidades del proveedor de datos (WebSocket para eventos en vivo, evaluaciones de IA, deportes adicionales) y establecer un estándar de análisis unificado para el primer equipo, la academia y los clubes de granja.