projects 06.06.26 · 14 MIN

Predicción de Resultados del Mundial 2026 con XGBoost (v2)

Introducción

La predicción de resultados de partidos de fútbol es un problema clásico que combina dificultades estadísticas (alta varianza, baja frecuencia de goles) con un interés práctico considerable. El fútbol de selecciones nacionales añade complejidades propias: los equipos disputan relativamente pocos encuentros al año, la composición de los planteles cambia entre torneos, y la calidad de los rivales es muy heterogénea.

Este trabajo aborda dos tareas predictivas sobre partidos de selecciones:

  1. Clasificación del resultado en tres clases: victoria local (H), empate (D) y victoria visitante (A).

  2. Regresión del marcador, prediciendo el número de goles de cada equipo mediante una verosimilitud de Poisson.

Nuestras contribuciones son: (1) un pipeline reproducible de construcción de variables sin fuga temporal; (2) la integración de expected goals y de las fuerzas latentes de un modelo Dixon–Coles como variables predictoras; (3) una comparación rigurosa de cuatro familias de modelos sobre una partición temporal; y (4) un análisis crítico de por qué el ensamblado no aporta mejora en este escenario.

Trabajo relacionado

El modelo de Dixon y Coles (Dixon & Coles, 1997) es el referente estadístico para marcadores de fútbol: modela los goles de local y visitante como variables de Poisson dependientes de parámetros de ataque y defensa por equipo, con una corrección para los marcadores bajos y un factor de ventaja de localía. Trabajos posteriores con redes neuronales en TensorFlow han abordado la clasificación H/D/A a partir de estadísticas de forma reciente (Carter, 2018), alcanzando accuracies en torno al 51 % en la Premier League y explorando estrategias de apuestas frente a las cuotas de bookmakers. Enfoques bayesianos jerárquicos con TensorFlow Probability (Ramacciotti, 2017) estiman distribuciones posteriores de las tasas de ataque y defensa, cuantificando la incertidumbre. En el dominio contiguo de valoración de jugadores, se han empleado redes densas con tuning automático de hiperparámetros (Andreas & Gracia, 2025). El gradient boosting sobre árboles, y en particular XGBoost (Chen & Guestrin, 2016), es el estándar de facto para datos tabulares y constituye nuestra línea base principal.

Datos

Fuentes

Partimos del conjunto histórico de resultados internacionales (martj42), que cubre partidos de selecciones desde 1872. Lo enriquecemos con:

  • Datos de eventos de StatsBomb (CC BY-NC 4.0): 263 partidos de los Mundiales 2018 y 2022, Eurocopa 2024, Copa América 2024 y Copa Africana 2023, con expected goals a nivel de disparo.

  • OpenLigaDB (ODbL): partidos de Eurocopa 2024, Copa América 2024 y Nations League 2024/25.

  • Rankings ponderados por recencia derivados del histórico.

Filtrado a selecciones FIFA

Un aspecto crítico fue depurar el conjunto. El histórico incluye equipos no afiliados a FIFA: selecciones CONIFA (micronaciones), regiones (Cataluña, País Vasco), e islas y territorios (Groenlandia, Isla de Man, Malvinas). Estos equipos no disputarán el Mundial y distorsionan las estadísticas agregadas (p. ej., goleadas que inflan artificialmente el poder ofensivo de una selección). Construimos una lista blanca guiada por datos: se considera selección FIFA todo equipo que haya disputado al menos un encuentro en una competición oficial de FIFA o de sus seis confederaciones. Esto identifica 223 selecciones y excluye 113 equipos no-FIFA, eliminando 113 partidos del conjunto de entrenamiento (de 4.515 a 4.402).

Variables económicas

Incorporamos tres indicadores del Banco Mundial (acceso abierto): PIB per cápita, PIB total y población, por país y año. La hipótesis es que la riqueza y, sobre todo, el tamaño poblacional de un país actúan como proxies del fútbol disponible (infraestructura y tamaño del reservorio de jugadores), aportando señal especialmente para selecciones con pocos partidos recientes. Mapeamos las 211 selecciones con dato a códigos ISO3; las cuatro naciones británicas comparten la economía del Reino Unido y los territorios sin estadística propia se imputan. Para los años recientes sin publicación (el Banco Mundial tiene cierto desfase) aplicamos forward-fill. Dado el fuerte sesgo de las magnitudes económicas, las transformamos con \(\log(1+x)\).

Ingeniería de variables

Para cada partido generamos 54 variables usando únicamente información disponible antes del encuentro, recorriendo los partidos en orden cronológico y actualizando el estado de cada equipo después de registrar cada fila. Las variables se agrupan en:

  • Estadísticas dinámicas (28): tasas acumuladas de victoria/empate/derrota, goles a favor y en contra por partido, rendimiento como local/visitante, forma en los últimos cinco partidos, e historial directo (head-to-head).

  • Expected goals (12): xG y xG concedido por partido, disparos y disparos a puerta, precisión de pase, y diferenciales entre ambos equipos.

  • Dixon–Coles (6): probabilidades \(a\ priori\) de H/D/A y goles esperados de cada equipo según el modelo estadístico.

  • Económicas (8): PIB per cápita, PIB total y población (en escala logarítmica) de cada selección, más los diferenciales de PIB.

Metodología

Modelo Dixon–Coles

Modelamos los goles del local \(X\) y del visitante \(Y\) como \[\begin{align} \lambda &= \alpha_i\,\beta_j\,\gamma, & \mu &= \alpha_j\,\beta_i, \end{align}\] donde \(\alpha_i\) y \(\beta_i\) son las fuerzas de ataque y defensa del equipo \(i\), y \(\gamma\) es la ventaja de localía (anulada en sedes neutrales). La función de masa conjunta incorpora la corrección de Dixon–Coles \(\tau\) para los marcadores bajos: \[\begin{equation} P(X=x, Y=y) = \tau_{\lambda,\mu}(x,y)\, \frac{\lambda^x e^{-\lambda}}{x!}\, \frac{\mu^y e^{-\mu}}{y!}. \end{equation}\] Ajustamos los parámetros por máxima verosimilitud penalizada, ponderando cada partido por un decaimiento temporal exponencial \(e^{-\xi\,\Delta t}\) (con \(\xi=0{,}0018\), vida media \(\approx\)385 días) y por la importancia del torneo. Añadimos una regularización \(L_2\) sobre \(\log\alpha\) y \(\log\beta\) que ancla la escala y resuelve la no identificabilidad del modelo, además de encoger hacia la media a los equipos con pocos partidos. La verosimilitud se vectoriza con NumPy, lo que reduce drásticamente el tiempo de ajuste y permite la convergencia plena del optimizador L-BFGS-B.

XGBoost

Empleamos XGBoost con tree_method=hist sobre GPU (NVIDIA RTX 4080, CUDA 12.4). Para la clasificación usamos el objetivo multi:softprob; para los goles, count:poisson, apropiado para conteos discretos. Optimizamos los hiperparámetros con Optuna (muestreo TPE) mediante validación cruzada estratificada de 5 pliegues, explorando 60–80 configuraciones por modelo (profundidad, tasa de aprendizaje, submuestreo, regularización \(\alpha\)/\(\lambda\), etc.).

Red neuronal multitarea

Diseñamos MatchNet, una red en PyTorch que aprende un embedding vectorial por selección (dimensión 16), capturando una “identidad de equipo” latente que las tasas agregadas no expresan. Los embeddings de local y visitante se concatenan con las variables numéricas estandarizadas y alimentan un perceptrón multicapa compartido (\(128\to64\) con batch normalization y dropout 0,4) que se ramifica en dos cabezas: una de clasificación (3 logits, entropía cruzada con pesos de clase) y otra de goles (dos salidas Poisson). La pérdida total combina ambas tareas. Entrenamos con AdamW, early stopping y scheduler de tasa de aprendizaje.

Meta-ensamble

Combinamos las probabilidades de los tres modelos mediante (1) promedio simple, (2) pesos optimizados sobre el conjunto de validación, y (3) stacking con regresión logística multinomial. Los pesos y el meta-modelo se ajustan en validación y se evalúan en prueba.

Protocolo de evaluación

Usamos una partición temporal para respetar la causalidad: 70 % de entrenamiento, 10 % de validación y 20 % de prueba (los partidos más recientes). Reportamos accuracy y log-loss para el resultado, y error absoluto medio (MAE) y raíz del error cuadrático medio (RMSE) para los goles.

Resultados

Clasificación del resultado

La Tabla 1 resume el desempeño en el conjunto de prueba. XGBoost con variables enriquecidas (v2) obtiene la mejor log-loss, mientras que la versión base (v1) tiene la mayor accuracy; la diferencia entre ambas es marginal y atribuible al ruido de los empates. Todos los modelos de aprendizaje superan en accuracy la referencia de las casas de apuestas (\(\approx\)57 %).

Desempeño en clasificación H/D/A (conjunto de prueba temporal).
Modelo Accuracy Log-loss
XGBoost v1 (28 variables, sin filtro FIFA) 61,0 % 0,8627
XGBoost v2 (54 variables, FIFA) 60,5 % 0,8522
Dixon–Coles 58,1 % 0,9113
Red neuronal (MatchNet) 54,3 % 0,9075
Meta-ensamble (pesos óptimos) 60,8 % 0,8544

La fila v1 es la línea base sin depuración FIFA (28 variables), evaluada sobre un conjunto de prueba ligeramente distinto; se incluye como referencia histórica. El XGBoost v2 incorpora el conjunto completo de 54 variables (incluidas las económicas); los demás modelos comparten el conjunto de prueba FIFA-only (881 partidos). El meta-ensamble se ajustó sobre la configuración de 46 variables, sin las económicas.

El empate: la clase difícil

Como es habitual en la literatura, el empate es la clase más difícil. XGBoost prácticamente nunca lo predice (recall \(\approx\)2 %), pues nunca es la clase de mayor probabilidad individual. La red neuronal, gracias a los pesos de clase, es el único modelo que apuesta por el empate (recall \(\approx\)55 %), aunque a costa de su accuracy global. Este contraste se aprecia en las matrices de confusión (Figuras la figura correspondiente y 1).

(Figura no disponible en esta versión web del paper.)

Importancia de variables

El análisis SHAP (Figura 2) muestra que las variables más influyentes combinan el ranking global, los diferenciales de rendimiento y las probabilidades a priori de Dixon–Coles, validando la utilidad de integrar el modelo estadístico como variable.

(Figura no disponible en esta versión web del paper.)

Efecto de la depuración FIFA

El filtrado a selecciones FIFA no es un mero ejercicio de limpieza: mejora el desempeño de forma consistente. Respecto a la versión sin depurar, la accuracy de XGBoost sube de 60,5 % a 60,8 %, la log-loss baja de 0,8563 a 0,8544, y el MAE de goles del local cae de 1,070 a 1,051. La interpretación es directa: los partidos contra rivales no-FIFA suelen ser goleadas atípicas que inflan artificialmente las estadísticas ofensivas; al eliminarlos, las variables dinámicas reflejan mejor el nivel competitivo real. Como subproducto, los rankings derivados se vuelven coherentes (desaparecen del top equipos regionales como Cornualles).

Efecto de las variables económicas

Añadir los ocho indicadores económicos mejora la log-loss de 0,8544 a 0,8522 y el MAE de goles del local de 1,051 a 1,044, con un cambio despreciable en accuracy. En conjunto, las variables económicas concentran el 13,4 % de la importancia del modelo (criterio de ganancia). El desglose es revelador: la población es la económica más útil (posición 16 de 54), seguida del PIB total, mientras que el PIB per cápita y los diferenciales de PIB aportan poco (posiciones 40–45). La interpretación es que la fuerza relativa entre dos selecciones ya está capturada por ranking_diff y por las probabilidades de Dixon–Coles —que dominan el top de importancia—, por lo que el aporte incremental de lo económico proviene de la magnitud absoluta del país (tamaño del reservorio de jugadores y de la economía), no de su diferencia.

Regresión de goles

La Tabla 2 presenta el desempeño en la predicción de goles. Las variables enriquecidas, la depuración FIFA y los indicadores económicos mejoran el MAE en ambos objetivos respecto de la línea base.

Desempeño en regresión de goles (Poisson, conjunto de prueba).
Objetivo MAE RMSE Acierto exacto
Goles local (v1) 1,085 1,469 30,4 %
Goles local (v2, 54 var.) 1,044 1,386 30,6 %
Goles visitante (v1) 0,918 1,285 36,2 %
Goles visitante (v2, 54 var.) 0,906 1,263 35,1 %

Convergencia de la red neuronal

La Figura 3 muestra las curvas de entrenamiento. La log-loss de validación mejora solo durante las primeras épocas y luego se degrada, señal de sobreajuste: con apenas 3.160 partidos de entrenamiento, los embeddings de equipo memorizan en lugar de generalizar.

(Figura no disponible en esta versión web del paper.)

Discusión

¿Por qué no ayuda el ensamblado?

El resultado más instructivo es que el meta-ensamble asigna un peso de \(\approx\)1,0 a XGBoost y \(\approx\)0 a los demás modelos. El promedio simple y el stacking incluso empeoran la log-loss. La razón es que los tres modelos consumen esencialmente la misma información: el conjunto de variables ya incluye las probabilidades de Dixon–Coles, y la red neuronal opera sobre las mismas 46 variables. El ensamblado solo aporta cuando los modelos cometen errores descorrelacionados; aquí están fuertemente correlacionados, por lo que no hay diversidad que explotar.

XGBoost domina en datos tabulares pequeños.

Que la red neuronal no supere a XGBoost concuerda con la evidencia empírica sobre datos tabulares de tamaño moderado. Su valor reside en una capacidad distinta — detectar empates — más que en una mejora agregada.

El cuello de botella son los datos, no el modelo.

Con 3.160 partidos de entrenamiento, XGBoost ya parece exprimir la señal disponible. Esperamos que ampliar la ventana temporal (p. ej., desde 2010) o incorporar xG a nivel de partido — y no solo agregado por equipo — sea más determinante que cualquier cambio de arquitectura.

Aplicación: Copa Mundial FIFA 2026

Como demostración práctica, aplicamos el modelo final a los primeros partidos del torneo. Para cada encuentro reconstruimos el estado dinámico de ambas selecciones hasta el último partido disputado (3 de junio de 2026), generamos las 54 variables y obtenemos las probabilidades H/D/A del clasificador junto con los goles esperados de los regresores de Poisson. Todos los partidos se tratan como de sede neutral. La Tabla 3 muestra las predicciones de la primera jornada.

Predicciones para los primeros partidos de la Copa Mundial FIFA 2026. Probabilidades en % (local / empate / visitante) y marcador esperado (redondeo de los goles esperados de Poisson).
Fecha Partido L / E / V (%) Marcador
06-11 Mexico vs South Africa 36 / 36 / 28 1–1
06-12 South Korea vs Czech Republic 39 / 35 / 26 1–2
06-12 Canada vs Bosnia and Herzegovina 76 / 16 / 7 2–1
06-13 United States vs Paraguay 56 / 28 / 16 1–1
06-13 Qatar vs Switzerland 29 / 26 / 45 1–1
06-13 Brazil vs Morocco 39 / 35 / 26 1–1
06-14 Haiti vs Scotland 52 / 29 / 19 1–1
06-14 Australia vs Turkey 52 / 25 / 23 1–1
06-14 Germany vs Curaçao 79 / 14 / 7 2–1
06-14 Netherlands vs Japan 26 / 33 / 41 1–2
06-14 Ivory Coast vs Ecuador 40 / 42 / 18 1–1
06-15 Sweden vs Tunisia 26 / 32 / 43 1–1

El modelo asigna alta confianza a los favoritos claros (Canadá 76 %, Alemania 79 %) y refleja incertidumbre genuina en los duelos parejos, donde las tres probabilidades se acercan (p. ej. México–Sudáfrica, 36/36/28). Dos limitaciones son visibles. Primera, el marcador esperado tiende al 1–1 porque es el redondeo del valor esperado de una Poisson de media cercana a la unidad; captura la tendencia pero no la dispersión real de marcadores. Segunda, las probabilidades del clasificador y el marcador de los regresores provienen de modelos distintos y pueden no ser perfectamente coherentes entre sí. El listado completo de los 72 partidos con equipos definidos se exporta a data/wc2026_predictions.csv.

Conclusiones y trabajo futuro

Comparamos cuatro enfoques para predecir partidos de selecciones nacionales. El clasificador XGBoost con variables enriquecidas (estadísticas dinámicas + xG + Dixon–Coles + económicas) resultó el más equilibrado, con un 60,5 % de accuracy y una log-loss de 0,852, superando la referencia de los bookmakers. El filtrado a selecciones FIFA no solo depuró el conjunto y produjo rankings coherentes, sino que mejoró todas las métricas de forma simultánea. Los indicadores económicos —con la población a la cabeza— aportaron una mejora marginal pero consistente. El ensamblado no aportó mejoras, evidenciando la falta de diversidad informativa entre los modelos. Finalmente, ilustramos la utilidad del modelo prediciendo la primera jornada de la Copa Mundial FIFA 2026.

Como trabajo futuro proponemos: (i) ampliar el histórico de entrenamiento; (ii) explotar los datos de eventos de StatsBomb para construir xG por partido; (iii) calibrar explícitamente las probabilidades (p. ej., temperature scaling); y (iv) aplicar el modelo a la simulación del cuadro de la Copa Mundial FIFA 2026.

9

Dixon, M. J., & Coles, S. G. (1997). Modelling association football scores and inefficiencies in the football betting market. Journal of the Royal Statistical Society: Series C (Applied Statistics), 46(2), 265–280.

Chen, T., & Guestrin, C. (2016). XGBoost: A scalable tree boosting system. Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, 785–794.

Carter, A. (2018). A beginner’s guide to beating the bookmakers with TensorFlow. https://andrew.carterlunn.co.uk/programming/2018/02/20/beating-the-bookmakers-with-tensorflow.html

Ramacciotti, F. (ca. 2017). Bayesian soccer using TensorFlow Probability [Kaggle Notebook]. https://www.kaggle.com/code/fernandoramacciotti/bayesian-soccer-using-tensorflow-probability

Andreas, K., & Gracia, C. (2025). Football player market value prediction using TensorFlow neural network. Medium.