¿Quién ganará la Copa Mundial de Fútbol de 2026?

arranca el 11 de junio con 48 equipos, 104 partidos y la habitual avalancha de tomas calientes. Quería un pronóstico que realmente pudiera defender. No es sólo un modelo genial de aprendizaje automático con buenos resultados, sino un modelo en el que cada número se remonta a una suposición explícita sobre la que podría discutir.

Este artículo construye ese pronóstico desde cero. Es deliberadamente simple: califica a cada equipo, convierte cada enfrentamiento en una distribución de goles y simula todo el torneo decenas de miles de veces.

Esto puede parecer muy específico del fútbol, ​​pero prácticamente todo lo que se incluye en este artículo, desde la metodología hasta la forma en que interpretamos los resultados, es universal para la ciencia de datos. Cambie los “equipos” por representantes de ventas, fechas de entrega, cargas de servidores o cohortes de abandono y los mismos tres pasos le brindarán un pronóstico defendible en lugar de una estimación puntual.

La verdadera habilidad transferible aquí es construir un canal donde cada número se remonta a una suposición sobre la que puedes discutir, en lugar de una que un modelo de aprendizaje automático de caja negra te oculta.

En nuestro caso del fútbol, ​​esto significa: nada de datos de seguimiento, nada de aprendizaje profundo, nada que no puedas reconstruir en una tarde. ¡Pero no dejes de leer aquí! El punto no es la sofisticación. Se trata de tener un canal transparente que te obligue a enfrentar las mismas opciones de modelado que esconden las cajas negras. Construiremos nuestro modelo en tres pasos e interrogaremos los supuestos en cada uno de ellos.

Paso 1: Califica cada equipo con Elo

No se puede pronosticar un partido sin un número de qué tan bueno es cada lado. La opción más limpia y disponible para las selecciones nacionales es la clasificación Elo de World Football, una adaptación del sistema de ajedrez de Arpad Elo.

Elo es una única ecuación autocorrectora. Cada equipo tiene una calificación R. Antes de un partido, la puntuación esperada del equipo A contra el equipo B (en una escala de 0 a 1, donde 1 es una victoria) es una función logística de la diferencia de calificación:

E_A = 1 / (1 + 10^(-(R_A – R_B) / 400))

Después del partido, empujas la calificación hacia lo que realmente sucedió:

R_A’ = R_A + K * (S_A – E_A),

donde S_A es el resultado obtenido (1 victoria, 0,5 empate, 0 derrota) y K controla qué tan rápido se mueven las calificaciones. La variante del fútbol añade dos aspectos que importan: K escala con el margen de victoria (un 4-0 mueve las calificaciones más que un 1-0) y pondera los partidos competitivos por encima de los amistosos. La constante 400 es una elección de escala: es lo que hace que una diferencia de 400 puntos corresponda aproximadamente a un favorito de 10:1 (E ≈ 0,91).

Para el modelo, sólo necesitamos las calificaciones actuales, almacenadas como un diccionario. Estoy usando la instantánea previa al torneo de principios de junio de 2026, tomada de un conjunto de datos de Kaggle reutilizable gratuitamente que compila estas calificaciones:

# World Football Elo Ratings, instantánea previa al torneo (principios de junio de 2026). # Fuente: “Copa Mundial de la FIFA 2026 – Clasificaciones Elo históricas” (Kaggle, CC BY-SA 4.0), # recopilación de datos de Clasificaciones Elo del fútbol mundial (eloratings.net). ELO = { “España”: 2155, “Argentina”: 2113, “Francia”: 2062, “Inglaterra”: 2020, “Brasil”: 1988, “Portugal”: 1984, “Colombia”: 1977, “Países Bajos”: 1944, “Alemania”: 1925, #… los 48 equipos clasificados}

Verificación de suposiciones: Elo comprime todo (forma, calidad del equipo, fatiga) en un solo número y asume que la fuerza de un equipo es más o menos estacionaria en el corto plazo. Esa es una simplificación fuerte, pero honesta y auditable, y Elo es difícil de superar como característica única.

Paso 2: convertir una brecha de calificación en una distribución de objetivos

Una diferencia de calificación nos da una probabilidad de ganar, pero para simular un torneo queremos puntajes: estos determinan la diferencia de goles, los desempates de grupo y la textura del asunto. La medida estándar en el análisis del fútbol es modelar los goles de cada equipo como un proceso de Poisson.
La distribución de Poisson da la probabilidad de observar k eventos cuando los eventos ocurren de forma independiente a una tasa promedio constante λ:

P(k goles) = λ^k * e^(-λ) / k!

Los goles encajan bien en esto empíricamente: son discretos, relativamente raros y, en general, no se recuerdan dentro de un partido. Si tratamos el conteo de goles de los dos equipos como variables de Poisson independientes con medias λ_local y λ_fuera, la distribución completa del marcador es solo el producto externo de sus dos pmf, y podemos leer las probabilidades de ganar/empatar/perder sumando las celdas apropiadas:

de scipy.stats importar poisson importar numpy como np def match_probs(lam_home, lam_away, max_goals=10): h = poisson.pmf(np.arange(max_goals + 1), lam_home) a = poisson.pmf(np.arange(max_goals + 1), lam_away) grid = np.outer(h, a) # cuadrícula[i, j] = P(local i, visitante j) p_home = np.tril(grid, -1).sum() # goles locales > goles visitante p_draw = np.trace(grid) p_away = np.triu(grid, 1).sum() return p_home, p_draw, p_away

Verificación de supuestos: el supuesto de independencia es conveniente pero imperfecto: las puntuaciones reales muestran correlación y un exceso de empates con puntuaciones bajas (0–0, 1–1). La solución estándar es el ajuste Dixon-Coles, que añade un término de corrección de puntuación baja y una ponderación de caída del tiempo en los partidos históricos. Lo omitiremos aquí para mayor claridad; es una mejora natural y exactamente el tipo de refinamiento que recorre el capítulo de Poisson de mi próximo libro.

Paso 3: conecta las calificaciones con los objetivos

Necesitamos λ_home y λ_away en función de la brecha Elo. Una pieza sólida del folclore del modelaje del fútbol es que una ventaja Elo de ~400 puntos vale aproximadamente un gol de supremacía. Así que dividimos una base de ~2,7 goles totales (un promedio internacional típico) entre los equipos según su diferencia de calificación:

BASE_GOALS = 2.7 GOALS_PER_400_ELO = 1.0 def lambdas(elo_a, elo_b): diff = (elo_a – elo_b) / 400.0 * GOALS_PER_400_ELO la = max(0.15, GOALS_BASE / 2 + diff / 2) lb = max(0.15, GOALS_BASE / 2 – diferencia / 2) retorno la, lb

El piso de 0,15 evita que incluso a un gran perdedor se le asigne una tasa de puntuación negativa no física. Una versión con más principios se ajusta a la calificación log(λ) = β₀ + β₁·Δ como un GLM de Poisson en datos de coincidencias reales; La heurística de supremacía lineal anterior es la versión del reverso del sobre y aterriza en el mismo lugar para los favoritos.

Paso 4: Simula el torneo 10.000 veces

Una única simulación no es una previsión, es sólo un posible 2026. La previsión es la distribución entre miles de ellas. Así que analizamos todo el grupo y contamos la frecuencia con la que gana cada equipo.

El formato de 2026 es nuevo y vale la pena mencionarlo con precisión: 48 equipos en 12 grupos de cuatro, donde los dos primeros de cada grupo más los ocho mejores terceros clasificados avanzan a una eliminatoria de eliminación simple de 32 equipos.

Esa regla del tercer lugar es un problema combinatorio porque no puedes decidir quién avanza hasta que todos los grupos hayan terminado. Por lo tanto, la simulación rastrea los puntos y la diferencia de goles de los cuatro equipos de cada grupo, clasifica a los equipos en tercer lugar en todos los grupos y elige a los ocho mejores. En las rondas eliminatorias, el empate se produce en los penaltis, que modelamos como un casi lanzamiento de moneda que se inclina ligeramente hacia el lado más fuerte.

N = 10_000 título = {t: 0 para t en ELO} para _ en rango(N): campeón = simular_un_torneo() # grupos -> R32 -> … -> título final[champion] += 1 problemas = {t: título[t] / N para t en ELO}

¿Por qué 10.000? Porque una probabilidad simulada es en sí misma una estimación con error de muestreo. Una probabilidad de título p estimada a partir de N torneos independientes tiene un error estándar de sqrt(p(1-p)/N). Para un favorito del 15% en N = 10.000, eso es alrededor de 0,36 puntos porcentuales, lo suficientemente ajustado como para que la clasificación sea estable y los números principales no se tambaleen entre carreras. Caiga a N = 500 y el error estándar se cuadruplica y algo más a ~1,6 puntos, suficiente para reorganizar el mediocampo. Vectorizar la simulación (dibujar todos los N torneos como operaciones de matriz en lugar de un bucle de Python) hace que más de 20.000 ejecuciones sean esencialmente gratuitas.

Lo que dice el modelo

EquipoProbabilidad de victoriaEspaña16,0%Argentina11,9%Francia7,9%Inglaterra7,0%Brasil5,4%Países Bajos4,7%Portugal4,3%Alemania3,7%

Tabla 1: Posibles resultados del Mundial, según modelo. Fuente: autor.

Destacan dos cosas. En primer lugar, el favorito ronda el 15%, no el 50%. Incluso el mejor equipo del mundo tiene muchas más probabilidades de no ganar un nocaut de 48 equipos que de ganarlo, una consecuencia directa de la variación de Poisson en un deporte de baja puntuación compuesta por siete partidos en los que se gana o se va a casa.

En segundo lugar, estas cifras se acercan notablemente a los pronósticos publicados por modelos estadísticos mucho más elaborados, del tipo que se basa en años de datos de partidos y docenas de características. Esto es tranquilizador: un proceso transparente Elo-plus-Poisson recupera la mayor parte de lo que produce un sistema de pronóstico pesado, porque en última instancia ambos están haciendo lo mismo: mapear la fuerza del equipo en las probabilidades de resultados.

Lo que hace bien y lo que omite

El modelo es honesto en cuanto a ser simple, y cada simplificación es un dial etiquetado que puedes girar:

Lugar neutral. Cada partido se trata como neutral; los anfitriones (Estados Unidos, México, Canadá) no reciben ningún impulso. Agregar un término de ventaja local (~+50–100 Elo, históricamente vale un tercio de un objetivo) es un cambio de una sola línea. Calificaciones estáticas. Elo está congelado en el saque inicial; el modelo no se actualiza a medida que se desarrolla el torneo. Una nueva calificación después de cada ronda agudizaría los pronósticos para rondas posteriores. Goles de Poisson independientes. Sin corrección de puntuación baja de Dixon-Coles, sin inflación explícita. Soporte sembrado. Utilizo un nocaut con cabezas de serie en lugar del mapa exacto de dieciseisavos de final de la FIFA. Para las probabilidades de título de los mejores equipos esto apenas mueve la aguja, pero es importante para caminos específicos.
Cada uno de ellos es el tema de un capítulo del libro del que soy coautor, Soccer Analytics with Machine Learning (O’Reilly, 2026): el modelo de goles de Poisson y sus extensiones en el Capítulo 6, las calificaciones de los equipos en el Capítulo 8 y la conversión de probabilidades en decisiones de apuestas en el Capítulo 9. Este artículo es la versión de juguete de ese canal, y un juguete que realmente puedes ejecutar en una tarde.

Pruébalo tú mismo

Se pueden encontrar muchos más ejemplos en el repositorio de GitHub del libro: clónelo, agregue las calificaciones Elo de hoy y tendrá su propio pronóstico de la Copa Mundial más rápido de lo que puede indicarle a Claude.

En otro artículo, verás cómo reconstruyo esta estructura con once modelos diferentes, la ajusto a datos de partidos reales y veo a la FIFA coronar a cuatro campeones diferentes.

Por ahora mi modelo dice España. El torneo comienza el 11 de junio. Lo descubriremos juntos.

Ari Joury es coautor de Soccer Analytics with Machine Learning (O’Reilly, 2026).