FIFA 2026 prediction using XGBOOST

Author

Andres PEÑA

Published

June 8, 2026

Start values
# A tibble: 10 × 3
   parameters values names                                                   
   <chr>       <dbl> <chr>                                                   
 1 dfsy       2010   data filter start year                                  
 2 prop          1   input data proportion, default = 1 (all data)           
 3 stt           0.8 amount data used to train model, default: 80%           
 4 alpha         0.8 Decay mensual ajustable                                 
 5 ventana       6   últimos N partidos para forma reciente                  
 6 nrounds     300   xgb parameters                                          
 7 w_prob        0.5 peso de la probabilidad del modelo, default: 50%        
 8 w_xg          0.5 peso del xG relativo, default: 50%                      
 9 Friendly      1   Friendly games are included, default: TRUE              
10 teams         1   train model included only FIFA 2026 teams, default: TRUE

SCHEDULE FIFA 2026

SCHEDULE FIFA 2026
Rows: 104
Columns: 6
$ grupo            <chr> "Group A", "Group A", "Group B", "Group D", "Group B"…
$ id               <dbl> 1, 2, 3, 4, 8, 7, 5, 6, 10, 11, 9, 12, 14, 16, 13, 15…
$ date             <date> 2026-06-11, 2026-06-11, 2026-06-12, 2026-06-12, 2026…
$ equipo_local     <chr> "Mexico", "South Korea", "Canada", "United States", "…
$ equipo_visitante <chr> "South Africa", "Czech Republic", "Bosnia and Herzego…
$ stage            <chr> "R1", "R1", "R1", "R1", "R1", "R1", "R1", "R1", "R1",…

DATOS DE PARTIDOS REALIZADOS

DATOS DE PARTIDOS REALIZADOS (partidos_raw)
Rows: 6,739
Columns: 12
$ fecha            <date> 2010-01-02, 2010-01-02, 2010-01-04, 2010-01-04, 2010…
$ equipo_local     <chr> "Qatar", "Iran", "Tanzania", "Egypt", "Ghana", "Thail…
$ equipo_visitante <chr> "Mali", "North Korea", "Ivory Coast", "Mali", "Malawi…
$ goles_local      <dbl> 0, 1, 0, 1, 0, 0, 2, 1, 2, 0, 4, 1, 3, 0, 3, 1, 0, 3,…
$ goles_visitante  <dbl> 0, 0, 1, 0, 0, 0, 2, 3, 3, 2, 2, 2, 0, 0, 1, 1, 1, 1,…
$ competicion      <chr> "Friendly", "Friendly", "Friendly", "Friendly", "Frie…
$ city             <chr> "Doha", "Doha", "Dar es Salaam", "Dubai", "Manzini", …
$ country          <chr> "Qatar", "Qatar", "Tanzania", "United Arab Emirates",…
$ neutral          <lgl> FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, …
$ year             <dbl> 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010,…
$ meses_atras      <dbl> 197.7333, 197.7333, 197.6667, 197.6667, 197.6333, 197…
$ peso             <dbl> 6.881135e-20, 6.881135e-20, 6.984266e-20, 6.984266e-2…

COVARIABLES & XGBOOST

Construyendo covariables... (puede tardar unos segundos)
Dataset con covariables: 6224 partidos
covariables usadas: 24 

Entrenando modelo: Goles Local...
Entrenando modelo: Goles Visitante...
✓ Modelos entrenados.
  Best iteration Local:     151 
  Best iteration Visitante: 187 

Estimando parámetro Dixon-Coles ρ...
  ρ estimado: -0.0232
  (ρ < 0 corrige exceso de 0-0 y 1-1; ρ = 0 = Poisson puro)

=== MÉTRICAS DE EVALUACIÓN ===
MAE Goles Local:     1.079
MAE Goles Visitante: 0.857
Accuracy 1X2:        59.5%
Log-Loss 1X2:        0.8943
  (Referencia: modelo naive ~1.0986)



══════════════════════════════════════════════════════════
          SIMULACIÓN MUNDIAL FIFA 2026
══════════════════════════════════════════════════════════

Partidos fase de grupos: 72  (12 grupos × 6 partidos)

── TABLAS DE GRUPOS ──────────────────────────────────────

Grupo A:
  1. Mexico                  Pts: 9  GF:3  GC:0  DG:+3  ✓
  2. South Korea             Pts: 6  GF:4  GC:3  DG:+1  ✓
  3. South Africa            Pts: 3  GF:3  GC:4  DG:-1
  4. Czech Republic          Pts: 0  GF:2  GC:5  DG:-3

Grupo B:
  1. Switzerland             Pts: 9  GF:5  GC:2  DG:+3  ✓
  2. Canada                  Pts: 6  GF:4  GC:3  DG:+1  ✓
  3. Bosnia and Herzegovina  Pts: 3  GF:3  GC:4  DG:-1
  4. Qatar                   Pts: 0  GF:0  GC:3  DG:-3

Grupo C:
  1. Morocco                 Pts: 9  GF:4  GC:1  DG:+3  ✓
  2. Brazil                  Pts: 6  GF:3  GC:2  DG:+1  ✓
  3. Scotland                Pts: 3  GF:1  GC:2  DG:-1
  4. Haiti                   Pts: 0  GF:0  GC:3  DG:-3

Grupo D:
  1. Turkey                  Pts: 9  GF:3  GC:0  DG:+3  ✓
  2. United States           Pts: 6  GF:4  GC:3  DG:+1  ✓
  3. Australia               Pts: 3  GF:3  GC:4  DG:-1
  4. Paraguay                Pts: 0  GF:2  GC:5  DG:-3

Grupo E:
  1. Germany                 Pts: 9  GF:6  GC:2  DG:+4  ✓
  2. Ivory Coast             Pts: 6  GF:4  GC:3  DG:+1  ✓
  3. Ecuador                 Pts: 3  GF:3  GC:4  DG:-1
  4. Curacao                 Pts: 0  GF:0  GC:4  DG:-4

Grupo F:
  1. Netherlands             Pts: 9  GF:4  GC:0  DG:+4  ✓
  2. Japan                   Pts: 6  GF:2  GC:1  DG:+1  ✓
  3. Sweden                  Pts: 3  GF:1  GC:2  DG:-1
  4. Tunesia                 Pts: 0  GF:0  GC:4  DG:-4

Grupo G:
  1. Belgium                 Pts: 9  GF:4  GC:0  DG:+4  ✓
  2. Iran                    Pts: 6  GF:2  GC:1  DG:+1  ✓
  3. New Zealand             Pts: 3  GF:1  GC:2  DG:-1
  4. Egipt                   Pts: 0  GF:0  GC:4  DG:-4

Grupo H:
  1. Spain                   Pts: 9  GF:5  GC:0  DG:+5  ✓
  2. Cape Verde              Pts: 6  GF:2  GC:1  DG:+1  ✓
  3. Uruguay                 Pts: 3  GF:1  GC:3  DG:-2
  4. Saudi Arabia            Pts: 0  GF:0  GC:4  DG:-4

Grupo I:
  1. France                  Pts: 9  GF:5  GC:2  DG:+3  ✓
  2. Senegal                 Pts: 6  GF:5  GC:4  DG:+1  ✓
  3. Iraq                    Pts: 3  GF:4  GC:5  DG:-1
  4. Norway                  Pts: 0  GF:2  GC:5  DG:-3

Grupo J:
  1. Austria                 Pts: 6  GF:5  GC:3  DG:+2  ✓
  2. Algeria                 Pts: 6  GF:4  GC:2  DG:+2  ✓
  3. Argentina               Pts: 6  GF:3  GC:2  DG:+1
  4. Jordan                  Pts: 0  GF:0  GC:5  DG:-5

Grupo K:
  1. Portugal                Pts: 9  GF:6  GC:2  DG:+4  ✓
  2. Uzbekistan              Pts: 6  GF:4  GC:3  DG:+1  ✓
  3. Colombia                Pts: 3  GF:3  GC:4  DG:-1
  4. RD Congo                Pts: 0  GF:0  GC:4  DG:-4

Grupo L:
  1. England                 Pts: 9  GF:3  GC:0  DG:+3  ✓
  2. Croatia                 Pts: 6  GF:4  GC:3  DG:+1  ✓
  3. Panama                  Pts: 3  GF:3  GC:4  DG:-1
  4. Ghana                   Pts: 0  GF:2  GC:5  DG:-3

── CLASIFICADOS ──────────────────────────────────────────
  Primeros  (12): A=Mexico, B=Switzerland, C=Morocco, D=Turkey, E=Germany, F=Netherlands, G=Belgium, H=Spain, I=France, J=Austria, K=Portugal, L=England
  Segundos  (12): A=South Korea, B=Canada, C=Brazil, D=United States, E=Ivory Coast, F=Japan, G=Iran, H=Cape Verde, I=Senegal, J=Algeria, K=Uzbekistan, L=Croatia
  3os mejor ( 8): J=Argentina, I=Iraq, A=South Africa, B=Bosnia and Herzegovina, D=Australia, E=Ecuador, K=Colombia, L=Panama

  Clave combinación 3ros: ABDEIJKL
  (Combinación no en tabla → asignación secuencial de 3ros)
  Bracket Ronda de 32: 16 cruces, 32 equipos únicos ✓

  Cruces Ronda de 32:
    M73: South Korea               vs Canada
    M74: Germany                   vs Argentina
    M75: Netherlands               vs Brazil
    M76: Morocco                   vs Japan
    M77: France                    vs Iraq
    M78: Ivory Coast               vs Senegal
    M79: Mexico                    vs South Africa
    M80: England                   vs Bosnia and Herzegovina
    M81: Turkey                    vs Australia
    M82: Belgium                   vs Ecuador
    M83: Uzbekistan                vs Croatia
    M84: Spain                     vs Algeria
    M85: Switzerland               vs Colombia
    M86: Austria                   vs Cape Verde
    M87: Portugal                  vs Panama
    M88: United States             vs Iran

Ronda de 32
───────────
  South Korea            2-1  Canada                
    xG: 1.276-1.101 | Score: 0.321-0.266 | [P1=40% PX=28% P2=32%] → Avanza: South Korea
  Germany                2-1  Argentina             
    xG: 1.288-1.051 | Score: 0.333-0.258 | [P1=42% PX=28% P2=30%] → Avanza: Germany
  Netherlands            1-0  Brazil                
    xG: 1.603-0.742 | Score: 0.479-0.184 | [P1=58% PX=25% P2=17%] → Avanza: Netherlands
  Morocco                1-0  Japan                 
    xG: 1.703-0.967 | Score: 0.434-0.210 | [P1=54% PX=24% P2=21%] → Avanza: Morocco
  France                 1-0  Iraq                  
    xG: 1.827-0.855 | Score: 0.486-0.185 | [P1=60% PX=23% P2=17%] → Avanza: France
  Ivory Coast            2-1  Senegal               
    xG: 1.470-1.019 | Score: 0.377-0.237 | [P1=47% PX=27% P2=26%] → Avanza: Ivory Coast
  Mexico                 1-0  South Africa          
    xG: 1.620-0.714 | Score: 0.491-0.178 | [P1=59% PX=25% P2=16%] → Avanza: Mexico
  England                1-0  Bosnia and Herzegovina
    xG: 1.988-0.775 | Score: 0.537-0.162 | [P1=66% PX=21% P2=14%] → Avanza: England
  Turkey                 1-0  Australia             
    xG: 1.678-0.756 | Score: 0.489-0.181 | [P1=59% PX=24% P2=16%] → Avanza: Turkey
  Belgium                2-0  Ecuador               
    xG: 2.212-0.849 | Score: 0.550-0.159 | [P1=68% PX=19% P2=13%] → Avanza: Belgium
  Uzbekistan             1-2  Croatia               
    xG: 1.144-1.355 | Score: 0.264-0.328 | [P1=31% PX=27% P2=41%] → Avanza: Croatia
  Spain                  1-0  Algeria               
    xG: 1.319-0.898 | Score: 0.376-0.234 | [P1=46% PX=29% P2=25%] → Avanza: Spain
  Switzerland            2-1  Colombia              
    xG: 1.667-1.065 | Score: 0.404-0.226 | [P1=51% PX=25% P2=24%] → Avanza: Switzerland
  Austria                2-1  Cape Verde            
    xG: 1.392-1.047 | Score: 0.355-0.248 | [P1=44% PX=28% P2=28%] → Avanza: Austria
  Portugal               1-0  Panama                
    xG: 1.943-0.732 | Score: 0.543-0.158 | [P1=66% PX=21% P2=13%] → Avanza: Portugal
  United States          1-2  Iran                  
    xG: 1.158-1.210 | Score: 0.280-0.296 | [P1=34% PX=28% P2=37%] → Avanza: Iran

Octavos de Final
────────────────
  South Korea            1-2  Germany               
    xG: 1.019-1.105 | Score: 0.272-0.301 | [P1=33% PX=30% P2=37%] → Avanza: Germany
  Netherlands            2-1  Morocco               
    xG: 1.341-1.148 | Score: 0.324-0.266 | [P1=41% PX=28% P2=32%] → Avanza: Netherlands
  France                 1-0  Ivory Coast           
    xG: 1.371-0.947 | Score: 0.374-0.236 | [P1=46% PX=28% P2=26%] → Avanza: France
  Mexico                 0-1  England               
    xG: 0.942-1.546 | Score: 0.220-0.411 | [P1=23% PX=26% P2=51%] → Avanza: England
  Turkey                 1-2  Belgium               
    xG: 1.193-1.212 | Score: 0.284-0.290 | [P1=35% PX=28% P2=36%] → Avanza: Belgium
  Croatia                1-2  Spain                 
    xG: 1.202-1.547 | Score: 0.254-0.352 | [P1=29% PX=26% P2=45%] → Avanza: Spain
  Switzerland            2-1  Austria               
    xG: 1.328-1.156 | Score: 0.320-0.268 | [P1=40% PX=28% P2=32%] → Avanza: Switzerland
  Portugal               1-0  Iran                  
    xG: 1.430-0.993 | Score: 0.375-0.237 | [P1=47% PX=27% P2=26%] → Avanza: Portugal

Cuartos de Final
────────────────
  Germany                2-1  Netherlands           
    xG: 1.460-1.155 | Score: 0.346-0.256 | [P1=44% PX=26% P2=30%] → Avanza: Germany
  France                 2-1  England               
    xG: 1.412-1.281 | Score: 0.313-0.276 | [P1=40% PX=26% P2=34%] → Avanza: France
  Belgium                1-2  Spain                 
    xG: 1.218-1.407 | Score: 0.269-0.323 | [P1=32% PX=27% P2=41%] → Avanza: Spain
  Switzerland            1-2  Portugal              
    xG: 1.187-1.852 | Score: 0.227-0.409 | [P1=24% PX=23% P2=53%] → Avanza: Portugal

Semifinales
───────────
  Germany                1-2  France                
    xG: 1.145-1.222 | Score: 0.277-0.301 | [P1=34% PX=28% P2=38%] → Avanza: France
  Spain                  2-1  Portugal              
    xG: 1.340-1.052 | Score: 0.344-0.254 | [P1=43% PX=28% P2=29%] → Avanza: Spain

Tercer Puesto
─────────────
  Germany                2-1  Portugal              
    xG: 1.566-1.136 | Score: 0.369-0.244 | [P1=47% PX=26% P2=27%] → Avanza: Germany

FINAL
─────
  France                 1-2  Spain                 
    xG: 1.172-1.621 | Score: 0.244-0.372 | [P1=27% PX=25% P2=48%] → Avanza: Spain


══════════════════════════════════════════════════════════
              RESULTADOS FINALES MUNDIAL 2026
══════════════════════════════════════════════════════════
  🥇 CAMPEÓN DEL MUNDO : Spain
  🥈 Subcampeón        : France
  🥉 Tercer lugar      : Germany
  4° lugar             : Portugal
══════════════════════════════════════════════════════════

Data frame `todas_rondas` disponible con 32 partidos eliminatorios.

✓ Simulación completa del Mundial 2026 finalizada.
[1] "Elapsed time"
Time difference of 6.472724 mins

RESULTADOS TORNEO FIFA 2026