projects 28.06.26 · 10 MIN

Mundial 2026 — Cuartos de final: bracket completo y predicciones con 2M simulaciones

La fase de grupos terminó. 72 partidos jugados, cero pendientes. Capturé todos los resultados desde football-data.org, reentrené el modelo bayesiano con esa evidencia nueva (7,845 partidos históricos + los 72 del torneo) y simulé el Mundial completo 2 millones de veces en la GPU. El cuadro de eliminatorias está fijo: 32 equipos clasificados, emparejamientos determinados por el Anexo C oficial de la FIFA.

Los cambios más grandes respecto al update del 18 de junio:

  • 🇪🇸 España da el salto más grande: de 10.9% a 14.7% (+3.8 pp). Primera ronda dominante: 7 pts, 5 goles a favor, 1 en contra.
  • 🇦🇷 Argentina consolida el primer lugar (16.7%) con grupo perfecto: 9 pts, 9 goles a favor.
  • 🇩🇪 Alemania sube de 3.3% a 5.1% a pesar de perder ante Ecuador en J3 — ganó los otros dos con solvencia.
  • 🇺🇾 Uruguay, 🇮🇷 Irán, 🇰🇷 Corea del Sur y 🇸🇦 Arabia Saudí se fueron a casa.

¿Quién levanta la copa?

Argentina y España se distancian del pelotón; detrás, seis equipos compactos entre el 5 y el 9%.

@d3
const data = [{"t":"Senegal","v":1.4},{"t":"Ecuador","v":1.7},{"t":"Suiza","v":1.8},{"t":"México","v":1.9},{"t":"P. Bajos","v":2.6},{"t":"Japón","v":3.0},{"t":"Bélgica","v":3.0},{"t":"Marruecos","v":3.6},{"t":"Alemania","v":5.1},{"t":"Portugal","v":6.0},{"t":"Colombia","v":6.1},{"t":"Inglaterra","v":6.7},{"t":"Francia","v":7.3},{"t":"Brasil","v":8.4},{"t":"España","v":14.7},{"t":"Argentina","v":16.7}];
const W = container.clientWidth || 1000;
const m = {top:8,right:64,left:120,bottom:28};
const rowH = 30, H = data.length*rowH + m.top + m.bottom;
const svg = d3.select(container).append('svg').attr('width',W).attr('height',H)
  .attr('font-family','JetBrains Mono, system-ui, sans-serif');
const x = d3.scaleLinear().domain([0, d3.max(data,d=>d.v)*1.08]).range([m.left, W-m.right]);
const y = d3.scaleBand().domain(data.map(d=>d.t)).range([m.top, H-m.bottom]).padding(0.45);
const color = d3.scaleSequential(d3.interpolateTurbo).domain([d3.max(data,d=>d.v)*1.25, 0]);
svg.append('g').attr('transform',`translate(0,${H-m.bottom})`)
  .call(d3.axisBottom(x).ticks(6).tickFormat(d=>d+'%'))
  .call(g=>g.select('.domain').remove())
  .call(g=>g.selectAll('.tick line').attr('stroke','#33332e'))
  .attr('color','#9a9a8e').attr('font-size','11px');
const row = svg.selectAll('g.row').data(data).join('g');
row.append('line').attr('x1',x(0)).attr('x2',d=>x(d.v))
  .attr('y1',d=>y(d.t)+y.bandwidth()/2).attr('y2',d=>y(d.t)+y.bandwidth()/2)
  .attr('stroke',d=>color(d.v)).attr('stroke-width',3).attr('opacity',0.5);
row.append('circle').attr('cx',d=>x(d.v)).attr('cy',d=>y(d.t)+y.bandwidth()/2)
  .attr('r',7).attr('fill',d=>color(d.v));
row.append('text').attr('x',m.left-10).attr('y',d=>y(d.t)+y.bandwidth()/2)
  .attr('dy','0.35em').attr('text-anchor','end').attr('font-size','13px')
  .attr('fill','#d4d4c8').text(d=>d.t);
row.append('text').attr('x',d=>x(d.v)+12).attr('y',d=>y(d.t)+y.bandwidth()/2)
  .attr('dy','0.35em').attr('font-size','12px').attr('font-weight','600')
  .attr('fill',d=>color(d.v)).text(d=>d.v.toFixed(1)+'%');

Los 8 mejores terceros: el margen fue mínimo

Con 12 grupos y solo 8 plazas para los mejores terceros, la última plaza se decidió por goles. Senegal entró como octavo y último clasificado con apenas 3 puntos — pero 8 goles a favor (el mejor saldo de goles entre todos los terceros) lo puso por delante de Irán (3 pts, 0 GD, 3 GF). Los grupos A, C, G y H no aportaron tercero.

Pos Grupo Selección Pts DG GF Estado
1 K RD Congo 4 +1 4 ✅ R32
2 F Suecia 4 0 7 ✅ R32
3 E Ecuador 4 0 2 ✅ R32
4 L Ghana 4 0 2 ✅ R32
5 B Bosnia 4 -1 5 ✅ R32
6 J Argelia 4 -2 5 ✅ R32
7 D Paraguay 4 -2 2 ✅ R32
8 I Senegal 3 +2 8 ✅ R32
G Irán 3 0 3 ❌ Eliminado
A Corea del Sur 3 -1 2 ❌ Eliminado
C Escocia 3 -3 1 ❌ Eliminado
H Uruguay 2 -1 3 ❌ Eliminado

El bracket R32 y el camino a cuartos

Los 32 equipos divididos en cuatro zonas. Cada zona alimenta un partido de cuartos. El porcentaje junto a cada nombre es la probabilidad de superar la ronda de 32.

⚽ Zona A → Cuartos 97

Partido Equipo A % avanza Equipo B % avanza
73 Canadá 65% Sudáfrica 35%
75 Alemania 70% Paraguay 30%
74 Brasil 60% Japón 40%
77 Noruega 56% Costa de Marfil 44%

→ Octavos: W73 vs W75 · W74 vs W77 → Cuartos más probable: Alemania vs Brasil

Alemania (48% de llegar a cuartos) y Brasil (41%) son los favoritos de sus respectivos lados. El partido 74 es competitivo: Japón (40%) tiene opciones reales contra Brasil. Costa de Marfil y Noruega están muy parejos (44% vs 56%).


⚽ Zona B → Cuartos 98

Partido Equipo A % avanza Equipo B % avanza
83 España 79% Austria 21%
84 Portugal 66% Croacia 34%
81 Bélgica 56% Senegal 44%
82 EE.UU. 72% Bosnia 28%

→ Octavos: W83 vs W84 · W81 vs W82 → Cuartos más probable: España vs Bélgica

La zona más cargada del torneo. España (51% de llegar a cuartos) domina su lado, pero del otro lado conviven Bélgica (37%), EE.UU. (30%) y Senegal (27%) extremadamente juntos. El modelo da a Senegal un 44% de superar a Bélgica — nada descabellado para el equipo que goleó 5-0 a Iraq.


⚽ Zona C → Cuartos 99

Partido Equipo A % avanza Equipo B % avanza
76 Marruecos 53% P. Bajos 47%
78 Francia 78% Suecia 22%
79 México ⛰️ 51% Ecuador 49%
80 Inglaterra 70% RD Congo 30%

→ Octavos: W76 vs W78 · W79 vs W80 → Cuartos más probable: Francia vs Inglaterra

El dato más llamativo de todo el bracket: el partido 79 (México vs Ecuador) se juega en Ciudad de México a 2,240 metros de altitud. Sin altitud, el modelo los tendría prácticamente empatados. El partido 76 es el más parejo del R32 entero: Marruecos-P. Bajos, 53-47.


⚽ Zona D → Cuartos 100

Partido Equipo A % avanza Equipo B % avanza
86 Australia 53% Egipto 47%
88 Colombia 75% Ghana 25%
85 Suiza 63% Argelia 37%
87 Argentina 83% Cabo Verde 17%

→ Octavos: W86 vs W88 · W85 vs W87 → Cuartos más probable: Argentina vs Colombia

Argentina (63% de llegar a cuartos) tiene el camino más despejado de los cuatro favoritos. Colombia (48%) es seria candidata a esperarle en cuartos. Si se da el encuentro, sería el duelo sudamericano del torneo.


Los cuartos más probables — resumen

Cuartos Partido más probable Prob. Lado A Prob. Lado B
QF 97 🇩🇪 Alemania vs Brasil 🇧🇷 48% 41%
QF 98 🇪🇸 España vs Bélgica 🇧🇪 51% 37%
QF 99 🇫🇷 Francia vs Inglaterra 🏴󠁧󠁢󠁥󠁮󠁧󠁿 44% 40%
QF 100 🇦🇷 Argentina vs Colombia 🇨🇴 63% 48%

El camino a la gloria

Probabilidad de alcanzar cada ronda para los 16 favoritos. Se lee de izquierda a derecha: del R16 hasta el título. Pasa el cursor sobre cada celda para el valor exacto.

@plotly
{"data": [{"type": "heatmap", "z": [[44.3,27.0,9.1,3.9,1.4],[48.6,22.9,9.6,4.1,1.7],[62.6,21.8,10.8,4.5,1.8],[51.4,24.7,10.5,4.5,1.9],[47.0,22.8,11.7,5.5,2.6],[40.4,24.3,14.0,6.6,3.0],[55.7,36.7,14.4,7.0,3.0],[53.0,27.2,14.5,7.2,3.6],[70.3,48.2,24.1,11.3,5.1],[66.1,31.0,20.4,11.8,6.0],[74.6,47.8,23.3,12.0,6.1],[69.7,40.2,22.2,12.0,6.7],[78.3,43.9,25.2,13.4,7.3],[59.6,41.3,27.6,15.5,8.4],[78.7,50.7,37.5,24.9,14.7],[82.8,62.6,42.7,26.6,16.7]], "x": ["Octavos","Cuartos","Semis","Final","Campeón"], "y": ["Senegal","Ecuador","Suiza","México","P. Bajos","Japón","Bélgica","Marruecos","Alemania","Portugal","Colombia","Inglaterra","Francia","Brasil","España","Argentina"], "colorscale": "YlGnBu", "reversescale": false, "zmin": 0, "zmax": 85, "xgap": 2, "ygap": 2, "hovertemplate": "%{y}  %{x}: %{z:.1f}%<extra></extra>", "colorbar": {"ticksuffix": "%", "outlinewidth": 0, "tickfont": {"color": "#d4d4c8"}, "thickness": 14}}], "layout": {"height": 520, "margin": {"l": 110, "r": 20, "t": 30, "b": 30}, "paper_bgcolor": "rgba(0,0,0,0)", "plot_bgcolor": "rgba(0,0,0,0)", "font": {"family": "JetBrains Mono, system-ui, sans-serif", "size": 12, "color": "#d4d4c8"}, "xaxis": {"side": "top", "tickfont": {"color": "#d4d4c8"}, "fixedrange": true}, "yaxis": {"tickfont": {"color": "#d4d4c8"}, "fixedrange": true}}}

Tabla completa (top 24)

# Selección Gr Octavos Cuartos Semis Final Campeón
1 Argentina J 83% 63% 43% 27% 16.7%
2 España H 79% 51% 38% 25% 14.7%
3 Brasil C 60% 41% 28% 16% 8.4%
4 Francia I 78% 44% 25% 13% 7.3%
5 Inglaterra L 70% 40% 22% 12% 6.7%
6 Colombia K 75% 48% 23% 12% 6.1%
7 Portugal K 66% 31% 20% 12% 6.0%
8 Alemania E 70% 48% 24% 11% 5.1%
9 Marruecos C 53% 27% 15% 7% 3.6%
10 Japón F 40% 24% 14% 7% 3.0%
11 Bélgica G 56% 37% 14% 7% 3.0%
12 P. Bajos F 47% 23% 12% 6% 2.6%
13 México A 51% 25% 11% 5% 1.9%
14 Suiza B 63% 22% 11% 5% 1.8%
15 Ecuador E 49% 23% 10% 4% 1.7%
16 Senegal I 44% 27% 9% 4% 1.4%
17 Canadá B 65% 28% 11% 4% 1.4%
18 Noruega I 56% 19% 10% 4% 1.3%
19 Australia D 53% 23% 9% 3% 1.3%
20 EE.UU. D 72% 30% 9% 3% 1.1%
21 Croacia L 34% 11% 6% 2% 0.9%
22 Costa de Marfil E 44% 15% 7% 2% 0.9%
23 Egipto G 47% 19% 6% 2% 0.8%
24 RD Congo K 30% 12% 4% 1% 0.5%

Cómo se hizo

Mismo pipeline del update anterior: captura automática de resultados (football-data.org), reentrenamiento del posterior bayesiano jerárquico (numpyro/NUTS, ~26 s sobre CPU, 0 divergencias) y simulación del torneo completo en PyTorch/CUDA sobre una RTX 4080 (2 millones de torneos en ~3 s).

El modelo ve ahora los 72 resultados reales del torneo con recencia de 730 días. Parámetros globales tras el refit: home_adv = +0.23, beta_alt = +0.081/km, intercept = +0.08. El cuadro usa la tabla oficial de 495 combinaciones del Anexo C; los empates en KO se resuelven por penales (50/50).

Disclaimer

Esto es un ejercicio de modelado estadístico, no consejo de apuestas. Las probabilidades reflejan el modelo y los resultados ya ocurridos, no certezas. El fútbol, afortunadamente, se juega.