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:
Clasificación del resultado en tres clases: victoria local (H), empate (D) y victoria visitante (A).
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 %).
| 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.
| 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.
| 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.