Vai al contenuto principale

Pronostico del vincitore dei Mondiali FIFA 2026: una guida MLOps

Scopri come una pipeline MLOps end-to-end prevede i risultati dei Mondiali 2026, dal retraining automatico e DVC a una simulazione Monte Carlo del tabellone con 10.000 iterazioni.
Aggiornato 17 giu 2026  · 15 min leggi

Esplora con l'AI

Apri in ChatGPTApri in ClaudeApri in Perplexity

Prevedere il calcio è difficile. È uno sport a basso punteggio in cui un tiro deviato può ribaltare un risultato, e una buona parte di ogni partita è questione di fortuna. Il calcio internazionale è ancora più complicato: le nazionali giocano solo poche gare competitive all’anno, quindi c’è molta meno data da cui imparare rispetto ai campionati di club.

\n

E come se non bastasse, la FIFA ha reso il compito ancora più arduo per i Mondiali di quest’anno. Il Mondiale allargato a 48 squadre introduce un nuovo formato in cui passano le prime due di ciascuno dei dodici gironi, insieme a otto delle dodici migliori terze, rendendo imprevedibili i destini della fase a gironi. Visto che mi piacciono le sfide (e il calcio), è proprio quello che ho deciso di provare a prevedere.

\n

Questo è il seguito del mio progetto di pronostici per EURO 2024, ricostruito quasi da zero. La volta scorsa ho lavorato interamente in Jupyter notebook e ho previsto un singolo punteggio più probabile per partita. Questa volta ho costruito una pipeline MLOps end-to-end che acquisisce risultati aggiornati, si riaddestra da sola e lancia una simulazione Monte Carlo dell’intero torneo 10.000 volte, trasformando le previsioni a livello di partita in probabilità su fin dove può arrivare ogni squadra.

\n

In questo articolo ti guiderò a grandi linee nel progetto: i dati e le feature, le pratiche MLOps che ne garantiscono la riproducibilità, l’architettura della pipeline e quale modello risulta prevedere meglio il calcio per nazionali. Puoi trovare il codice completo nel repo del progetto. E naturalmente ti dirò chi secondo il modello vincerà. (Spoiler: piacciono Spagna e Argentina attorno al 16% ciascuna, ma la parte interessante è come ci arriva.)

\n

Se questo ti ha messo in clima torneo, ti consiglio di guardare le registrazioni delle nostre sessioni della Data & AI World Cup, oppure di partecipare alla nostra competition FIFA World Cup 2026 Prediction. Il vincitore riceverà non solo una maglia ufficiale dei Mondiali, ma anche un abbonamento di 3 mesi a Claude Enterprise. Resta aggiornato con la classifica live.

\n

FIFA World Cup 2026 Prediction

\n

In breve

\n
    \n
  • Questa è una pipeline MLOps end-to-end che prevede i Mondiali FIFA 2026, acquisendo risultati internazionali aggiornati e riaddestrandosi automaticamente su Google Cloud, ogni due ore durante il torneo.
  • \n
  • I dati da API-Football e dai rating Elo sono processati con un’architettura a medaglioni Bronze-Silver-Gold e versionati con DVC per una riproducibilità completa.
  • \n
  • Dieci modelli di cinque famiglie sono stati confrontati su un holdout di 347 partite; XGBoost ha vinto di misura, i primi cinque sono quasi indistinguibili e la differenza Elo tra squadre fa gran parte del lavoro predittivo.
  • \n
  • Una simulazione Monte Carlo gioca l’intero torneo 10.000 volte, trasformando le previsioni di gol a livello di partita nelle probabilità di avanzamento e vittoria di ciascuna squadra.
  • \n
  • Al 10 giugno 2026, le favorite del modello sono Spagna e Argentina, a circa il 16% ciascuna. Le previsioni live possono essere seguite su una dashboard Streamlit che si aggiorna ogni due ore.
  • \n

I dati dietro le previsioni

\n

Una previsione è valida solo quanto lo sono gli input, quindi vale la pena partire dalle materie prime. Il modello apprende da due sorgenti dati live e le trasforma in un’unica tabella ordinata di feature.

\n

Da dove arrivano i dati

\n

Tutto nasce da due fonti. API-Football fornisce calendario e statistiche per partita: chi ha giocato contro chi, quando, dove e come è finita. eloratings.net fornisce i rating Elo per ogni nazionale.

\n

Un rating Elo è un singolo numero che cattura la forza di una squadra. Ogni squadra si colloca da qualche parte sulla scala e dopo ogni partita il rating si aggiorna: se batti una squadra più forte guadagni molto; se perdi contro una più debole, cali bruscamente. L’idea viene dagli scacchi e si adatta bene al calcio. Se vuoi l’intuizione completa, questo articolo di DataCamp lo spiega nel contesto dei Mondiali 2022.

\n

Insieme, le due fonti forniscono un dataset Gold di circa 6.900 partite internazionali dal 2018 da cui imparare.

\n

Cosa prevede il modello

\n

Ecco la prima scelta progettuale importante. Invece di prevedere direttamente l’esito come vittoria, pareggio o sconfitta, il modello stima qualcosa di più granulare: il numero di gol che ciascuna squadra segna in una partita. I conteggi dei gol nel calcio seguono, con buona approssimazione, una distribuzione di Poisson, il modo standard di modellare quante volte accade un evento relativamente raro in un intervallo di tempo fisso.

\n

Prevedere i gol e non solo l’esito è ciò che rende possibile tutto il resto. Una volta che il modello può produrre un punteggio plausibile per qualsiasi abbinamento, le domande che interessano davvero a tutti, chi esce dal girone e chi alza la coppa, possono essere affrontate simulando quei punteggi migliaia di volte.

\n

Le feature che contano

\n

Ogni partita è descritta da un set di feature piccolo ma scelto con cura:

\n
    \n
  • Differenza Elo: il divario di rating tra le due squadre. Questa è di gran lunga la feature più importante del modello, con un’importanza circa due ordini di grandezza superiore alla successiva. Torna con l’intuizione: il divario di forza tra le due squadre dice più del probabile esito di quasi qualsiasi altra cosa.
  • \n
  • Somma Elo: i due rating sommati, come proxy della qualità complessiva della partita. La sola differenza non può distinguere Argentina-Spagna da San Marino-Andorra, due gare equilibrate ma a livelli completamente diversi, e la somma ripristina quell’informazione.
  • \n
  • Variazione Elo mobile (ultime 5 partite): quanto è cambiato di recente il rating di ciascuna squadra. Cattura la forma tenendo già conto della forza degli avversari affrontati.
  • \n
  • Gol fatti e subiti mobili (ultime 5 partite): rendimento offensivo e difensivo recente in termini assoluti, calcolato per ciascuna squadra.
  • \n
  • Contesto della partita: il livello della competizione (una gara del Mondiale pesa diversamente da una qualificazione o da una partita di Nations League), se è a eliminazione diretta e se si gioca in campo neutro.
  • \n
\n

Ogni feature è rigorosamente a prova di leakage, cioè usa solo informazioni disponibili prima del calcio d’inizio. Sembra ovvio, ma è uno dei modi più facili per costruire per errore un modello che sembra brillante nei test e crolla nel mondo reale.

\n

Un’idea che non è passata: avevo pianificato un set di feature sullo \"stile di gioco\" costruite raggruppando le squadre dalle statistiche in gara, un passo di apprendimento non supervisionato. In pratica, le squadre non si sono separate in gruppi significativi, quindi, invece di alimentare il modello con rumore, le ho scartate. Anche i risultati negativi sono risultati.

\n

Mantenere i dati riproducibili

\n

Con dati che arrivano da due fonti in modo continuo, il percorso dai file grezzi alle feature pronte per il modello deve essere identico ogni singola volta. È ciò che fornisce una architettura a medaglioni. Organizza i dati in tre layer:

\n
    \n
  • Bronze: i dati grezzi, esattamente come arrivano, lasciati intatti.
  • \n
  • Silver: puliti e standardizzati. Qui mappo i nomi delle squadre tra le due fonti (raramente concordano sulle grafie), valido lo schema, unisco i rating Elo ai record delle partite e gestisco ciò che manca o è malformato.
  • \n
  • Gold: il layer di modellazione, una riga ordinata per partita con ogni feature calcolata e pronta per l’addestramento.
  • \n
\n

Ogni layer alimenta il successivo, così quando qualcosa non torna posso risalire di uno stadio alla volta invece di districare tutto in una volta. Per rendere riproducibile l’intero percorso, uso DVC (Data Version Control). Quando arrivano nuovi risultati, un singolo dvc repro ricostruisce i layer Silver e Gold dal Bronze, rieseguendo un passo solo se i suoi input sono cambiati, e versiona i dataset risultanti in modo che qualsiasi stato precedente sia recuperabile esattamente.

\n

Scegliere il modello migliore

\n

Prevedere i gol è un problema ben studiato e non esiste un unico strumento ovvio. Quindi, invece di impegnarmi in un approccio a priori, ne ho costruiti dieci e li ho messi in competizione.

\n

I contendenti

\n

I dieci modelli coprono cinque famiglie più un baseline semplice. Non serve conoscerne gli interni; il punto è che fanno assunzioni molto diverse su come nascono i gol.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FamigliaModelliL’idea di base
BaselinePoisson a tasso medioAssume che ogni squadra segni semplicemente una media di lungo periodo, ignorando tutte le feature. Un pavimento che gli altri devono superare.
StatisticaPoisson bivariata, Binomiale negativaModellano direttamente i due conteggi di gol con distribuzioni di probabilità pensate per contare eventi.
BayesianaPoisson Bayesiana (MCMC)La stessa idea del conteggio, ma restituisce un intero intervallo di incertezza attorno a ciascuna stima. Molto più esosa in calcolo: circa 100 volte più lenta da adattare rispetto alle altre.
Serie storicheSARIMAXTratta i risultati di una squadra come una sequenza nel tempo e proietta quella sequenza in avanti.
Machine learningRidge, Random Forest, XGBoostImparano pattern direttamente dalle feature senza impegnarsi in un’equazione fissa.
Deep learningLSTM, CNN 1DReti neurali che cercano pattern sequenziali e locali nei dati.
\n

Come sono stati valutati

\n

Con dieci candidati, scegliere un vincitore a occhio non avrebbe funzionato. Invece, ogni modello passa tre fasi, e il codice decide se proseguire. Questo è ciò che si intende per code-based deployment: i modelli vengono promossi da un ambiente al successivo tramite verifiche automatiche, non con tarature manuali, così l’intera selezione resta riproducibile e facile da auditare.

\n
    \n
  • Esperimento. Ogni modello è addestrato solo sulle partite internazionali giocate prima dei Mondiali 2022. Non tutte contano allo stesso modo: alle gare più recenti e a quelle di maggior peso è assegnata più importanza (pesatura per decadimento temporale e per importanza della partita), così un risultato competitivo recente influisce più di un’amichevole vecchia. Le impostazioni di ciascun modello sono poi ottimizzate per minimizzare la negative log-likelihood (NLL) di Poisson usando la cross-validation. La NLL è solo un punteggio di quanto bene i tassi di gol previsti corrispondono ai gol effettivamente segnati, dove più basso è meglio. Il risultato è la versione meglio tarata di ogni modello.
  • \n
  • Quality assurance. Quei modelli tarati vengono poi testati su partite che non hanno mai visto: i Mondiali 2022 più sei grandi tornei successivi (gli EURO, due Coppe d’Africa, la Copa América, la Coppa d’Asia e la Gold Cup), 347 partite in tutto. Qui la metrica passa al ranked probability score (RPS), che misura la bontà di una previsione probabilistica quando gli esiti hanno un ordine naturale, come sconfitta, pareggio, vittoria, e premia l’essere fiduciosi nella direzione corretta. Anche qui più basso è meglio. Il modello più forte diventa il challenger. L’RPS è il metro giusto perché l’obiettivo reale è prevedere fin dove arrivano le squadre, non solo i totali di gol.
  • \n
  • Deploy. Il challenger è confrontato con il campione in carica. Se vince, viene promosso e riadattato su tutte le partite disponibili, così entra nel torneo avendo imparato da tutti i dati.
  • \n
\n

Cosa ha vinto

\n

Quale approccio è arrivato in cima? Ecco la classifica completa dell’holdout, valutata con RPS (più basso è meglio):

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ModelloRPS holdout
XGBoost0.18289
Poisson Bayesiana0.18316
Binomiale negativa0.18373
Poisson bivariata0.18389
Random Forest0.18392
SARIMAX0.18583
Ridge0.18813
LSTM0.19299
CNN 1D0.20916
Poisson a tasso medio (baseline)0.22872
\n

Quattro aspetti spiccano da questi risultati:

\n
    \n
  • XGBoost ha vinto, ma di poco. I primi cinque modelli (XGBoost, Poisson Bayesiana, Binomiale negativa, Poisson bivariata e Random Forest) hanno chiuso entro circa 0,0011 di RPS l’uno dall’altro. Quando cinque approcci molto diversi arrivano così vicini, di solito significa che il soffitto è imposto dai dati e dalle feature, non dal modello. Qui, la differenza Elo fa così tanto del lavoro che la scelta del modello sposta a malapena l’ago.
  • \n
  • Una feature domina. La differenza Elo è stata il predittore più importante con ampio margine, circa cento volte più influente della successiva. È più rassicurante che sorprendente: in una singola partita, il divario di forza tra due squadre è davvero gran parte della storia.
  • \n
  • Il deep learning è arrivato ultimo, baseline a parte. La CNN 1D e l’LSTM sono stati i modelli più deboli a eccezione del baseline ingenuo. Con solo circa 7.000 partite da cui imparare, non ci sono abbastanza dati per nutrire reti con così tanti parametri; i metodi classici gestiscono molto meglio dataset piccoli e strutturati.
  • \n
  • Nessun segno di overfitting nei modelli classici. Normalmente un modello fa un po’ peggio su dati mai visti rispetto all’addestramento. Qui, quasi tutti i modelli (tranne l’LSTM) hanno ottenuto punteggi migliori sui tornei tenuti da parte che in cross-validation. La ragione probabile è che il calcio da torneo è più prevedibile del calendario internazionale ordinario: posta più alta, squadre più forti e familiari e campi neutri eliminano parte della casualità.
  • \n
\n

\"LaPer il torneo live non eseguo tutti e dieci. Mantengo una rosa più piccola: il baseline a tasso medio come punto di riferimento, più i tre migliori performer. XGBoost e Poisson Bayesiana occupano i primi due posti a pieno titolo.

\n

Il terzo posto è di fatto un pareggio: Binomiale negativa e Poisson bivariata chiudono entro 0,0002 di RPS e si scambiano di posto a seconda del seed casuale, quindi tra due modelli statisticamente indistinguibili ho scelto la Poisson bivariata, la cui formulazione ha basi più solide nella letteratura sulle previsioni calcistiche (Karlis e Ntzoufras, 2004).

\n

Resta quindi una rosa con XGBoost (machine learning), Poisson bivariata (statistica classica) e Poisson Bayesiana (inferenza bayesiana). La prossima sezione spiega come questi modelli girano, si riaddestrano e trasformano le previsioni di singole partite in una previsione completa del torneo.

\n

Metterlo in produzione

\n

Un modello che vive in un notebook è utile solo mentre ci sei davanti. Per prevedere le partite durante un torneo di un mese, tutto deve girare da solo: acquisire nuovi risultati, riaddestrarsi, rieseguire le simulazioni e aggiornare la previsione senza che nessuno lo tocchi. È il compito della pipeline.

\n

La pipeline ogni due ore su GCP

\n

L’intero progetto gira come un singolo job schedulato su Google Cloud Run. Prima del torneo, si attiva una volta al giorno; dalla partita inaugurale dell’11 giugno, gira ogni due ore. Ogni esecuzione segue lo stesso ciclo:

\n
    \n
  • Controllo di nuovi dati. Se non sono finite partite dall’ultima esecuzione, non c’è nulla da fare e il job termina in anticipo.
  • \n
  • Ingestione e ricostruzione. Quando sono arrivati nuovi risultati, vengono prelevati dalle fonti dati e un singolo dvc repro ricostruisce i layer Silver e Gold così che le feature siano aggiornate.
  • \n
  • Riaddestramento, previsione, simulazione. I modelli in rosa sono aggiornati (tra poco spiego come), ogni prossimo abbinamento è previsto e l’intero torneo è simulato.
  • \n
  • Scoring. Una volta definita una partita, le previsioni fatte per essa vengono valutate, alimentando il monitoraggio descritto sotto.
  • \n
\n

Dato che ogni passo è attivato da codice su una schedulazione, non c’è bisogno di pressare bottoni manualmente durante il torneo. Nuovo risultato in ingresso, previsione aggiornata in uscita.

\n

Due modalità: frozen vs. per round

\n

Qui il progetto raddoppia come esperimento. Durante il torneo, la rosa gira in due modalità parallele, e la differenza tra loro è la domanda a cui spero di rispondere con i dati: Riaddestrare man mano che il torneo procede migliora le previsioni?

\n
    \n
  • Frozen. I modelli sono bloccati al calcio d’inizio e non vengono mai riaddestrati. Reagiscono comunque ai risultati, perché ogni simulazione parte dal tabellone aggiornato, ma i parametri del modello non cambiano mai.
  • \n
  • Per round. Gli iperparametri (le impostazioni di alto livello) restano fissi, ma i parametri che il modello apprende vengono ricalibrati su tutti i dati disponibili dopo ogni giornata della fase a gironi e dopo ogni turno a eliminazione diretta, così i modelli continuano a imparare dal torneo mentre accade.
  • \n
\n

Eseguirle entrambe in parallelo mi permette di confrontarle su due fronti una volta finito: l’accuratezza predittiva grezza e la velocità con cui l’incertezza di ciascuna si riduce man mano che il campo si restringe. Se vince la modalità per round, il riaddestramento regolare si giustifica; se la frozen tiene testa, la macchina in più potrebbe non valere la pena.

\n

Dalle previsioni al torneo: la simulazione Monte Carlo

\n

Prevedere una singola partita è una cosa. Trasformarla in \"qual è la probabilità che ogni squadra vinca il torneo\" è dove entra in gioco la simulazione Monte Carlo.

\n

Prima, l’inferenza. Invece di prevedere solo le partite già note, il modello stima ogni possibile abbinamento tra le 48 squadre. Sembra eccessivo, ma in un torneo qualsiasi squadra può incontrarne un’altra nella fase a eliminazione diretta, quindi bisogna avere una previsione pronta per ogni coppia.

\n

Poi, bisogna codificare le regole, e il formato 2026 lo rende particolarmente scomodo. Nei 12 gironi, le prime due passano automaticamente, ma anche le otto migliori terze, e il posto nel tabellone che spetta a ciascuna di queste otto dipende da quali gironi provengono.

\n

Ci sono 495 modi per scegliere otto gironi qualificati su dodici (dodici su otto), e ciascuno produce un set diverso di abbinamenti per i sedicesimi. Non esiste una formula pulita; la FIFA pubblica semplicemente una tabella. Così io (o meglio il mio capace collega Cursor) ho codificato manualmente tutte le 495 combinazioni in una mappatura, usando come fonte la tabella ufficiale.

\n
\"best_third_mappings\": {\n  \"EFGHIJKL\": {\n    \"74\": \"3F\",\n    \"77\": \"3G\",\n    \"79\": \"3E\",\n    \"80\": \"3K\",\n    \"81\": \"3I\",\n    \"82\": \"3H\",\n    \"85\": \"3J\",\n    \"87\": \"3L\"\n  }, \n  \"DFGHIJKL\": ...
\n

Ogni chiave, come EFGHIJKL, elenca quali otto gironi hanno fornito le terze qualificate, e i valori inseriscono ciascuna di quelle squadre (3E, 3F e così via) in uno specifico numero di partita dei sedicesimi. Questo è un elemento; la mappatura completa lo ripete 495 volte, una per combinazione.

\n

Le tre nazioni ospitanti (Stati Uniti, Canada e Messico) richiedono una gestione aggiuntiva. Quando una di loro gioca una partita disputata nel proprio Paese, la simulazione applica un aggiustamento per il fattore campo, mentre il resto del torneo è trattato come campo neutro.

\n

Con previsioni e regole pronte, la simulazione gioca l’intero torneo 10.000 volte. In ogni run, segue questa procedura:

\n
    \n
  1. Estrae un punteggio per ogni partita campionando i gol di casa e trasferta dalle distribuzioni previste dal modello
  2. \n
  3. Gioca la fase a gironi con regole reali di punti e spareggi
  4. \n
  5. Risoluzione della classifica delle migliori terze
  6. \n
  7. Compilazione del tabellone a eliminazione diretta usando le mappature sopra
  8. \n
  9. Si prosegue fino a un’unica campionessa.
  10. \n
\n

Sulle 10.000 simulazioni, la quota di run in cui una squadra raggiunge la finale o alza il trofeo diventa la sua probabilità. Una run è un’ipotesi; diecimila run sono una previsione.

\n

Tracciare tutto con MLflow

\n

Ogni run descritta finora, in entrambe le modalità, è loggata su MLflow (ospitato su DagsHub). Il tracciamento degli esperimenti significa registrare in modo sistematico input, impostazioni, risultati e output di ogni run, così da poterli confrontare o riprodurre esattamente. Vale la pena citare alcune cose che cattura:

\n
    \n
  • Riproducibilità. La simulazione usa un seed fisso derivato dal turno del torneo, condiviso tra modalità frozen e per round. Questo significa che ogni differenza tra le due viene dai modelli stessi, non dalla fortuna del sorteggio dentro la simulazione. Ogni run registra anche l’istantanea esatta dei dati visti (numero di righe Gold e timestamp), così i risultati sono sempre riconducibili agli input.
  • \n
  • L’esperimento. Ogni run è etichettata con la sua modalità (frozen o per round) e con la fase del ciclo di vita, dall’esperimentale e QA fino alle run live di inferenza e refit, rispecchiando il flusso di promozione della sezione precedente.
  • \n
  • Confronto. L’RPS dell’holdout è loggato come metrica di selezione, insieme a un riferimento alla run campione corrente per la lineage. È registrato anche il tempo di fitting, dove emerge nero su bianco l’addestramento circa 100 volte più lento del modello bayesiano.
  • \n
\n

I modelli addestrati e i file di previsione (probabilità del torneo, classifiche dei gironi e pronostici delle partite) sono salvati come artifact delle run, e sono esattamente i file che la dashboard live legge. Si chiude così il cerchio: dai risultati grezzi, passando per addestramento e simulazione, fino ai numeri che puoi vedere online.

\n

Monitoraggio del drift

\n

L’ultimo pezzo gira una volta concluse le partite. Man mano che arrivano i risultati reali, le previsioni fatte per essi vengono valutate e confrontate con il semplice baseline a tasso medio. Se i modelli completi iniziano a perdere terreno rispetto a un modello che non sa nulla delle squadre, è un segnale di drift: i pattern appresi prima del torneo potrebbero non corrispondere più a ciò che accade in campo.

\n

Monitorarlo è prassi standard per qualsiasi sistema che faccia previsioni live, e puoi leggere di più su come si rileva in questa guida su data drift e model drift.

\n

Quindi, chi vince i Mondiali?

\n

Dopo tutta questa macchina, ecco a cosa serve.

\n

Le favorite

\n

Al 10 giugno 2026, il giorno prima della partita inaugurale, il verdetto del modello è chiaro in cima e affollato appena dietro. Spagna e Argentina guidano il gruppo, ciascuna con circa il 16% di probabilità di alzare la coppa. Che le campionesse del mondo in carica (Argentina) e le campionesse d’Europa in carica (Spagna) risultino davanti è un rassicurante sanity check che il modello è ancorato alla realtà.

\n

Dietro c’è un gruppo all’inseguimento molto compatto: Francia, Inghilterra, Brasile e Colombia completano le più probabili vincitrici. Questi sono numeri live e si muoveranno non appena arrivano i risultati reali, quindi trattali come un’istantanea del 10 giugno e non come una profezia scolpita nella pietra. La dashboard mostra sempre i numeri correnti, con un ritardo massimo di due ore.

\n

La dashboard live

\n

A proposito: ogni numero in questo articolo arriva da un’app Streamlit live che si aggiorna automaticamente mentre gira la pipeline. Puoi aprirla su wc2026-predictions.streamlit.app e seguirla per tutto il torneo. Ha quattro viste principali:

\n
    \n
  • Panoramica del torneo: a colpo d’occhio fin dove ci si aspetta che arrivi ogni squadra.
  • \n
  • Classifiche dei gironi: per ogni girone, la probabilità per ogni squadra di finire prima, seconda, terza (distinta in terza e qualificata vs. terza e fuori, grazie alla regola delle migliori terze) o quarta.
  • \n
  • Previsioni delle partite: per ogni gara dei gironi, la probabilità di vittoria in casa, pareggio o vittoria in trasferta, insieme al tabellone a eliminazione più probabile.
  • \n
  • Abbinamenti più comuni a eliminazione diretta: le coppie che la simulazione produce più spesso.
  • \n
\n

Un dettaglio da segnalare nella vista delle partite: un paio di squadre compaiono contemporaneamente in due possibili slot dei sedicesimi. Non è un bug. Succede quando un girone è così equilibrato che il modello non riesce a dire con sicurezza quale posizione di qualificazione prenderà una squadra. Combinato con l’incertezza sulle migliori terze, i due esiti portano a slot a eliminazione diversi. Nel caso della Turchia, li ha persino portati a comparire due volte agli ottavi.

\n

La seguente grafica mostra le fasi finali (dai quarti alla finale) che il modello XGBoost proietta prima del calcio d’inizio del torneo:

\n

\"ChatGPT

\n

La squadra da lancio della moneta: Stati Uniti

\n

Il bello di un modello così sta nelle squadre che sfidano l’occhio, e l’esempio più chiaro sono gli Stati Uniti. Se vai alla panoramica del torneo sulla dashboard, noterai subito che gli USA spiccano per colore.

\n

Da co-organizzatori che giocano davanti al proprio pubblico, potresti aspettarti una partenza comoda, ma il modello è molto più cauto: dà loro solo circa il 54,6% di probabilità di uscire dal girone, la 13ª più bassa di tutto il campo (ricorda che passano i due terzi delle squadre!), perché il loro girone con Australia, Paraguay e Turchia è insolitamente equilibrato.

\n

La parte interessante viene dopo. Una volta passati per il rotto della cuffia, gli USA restano intorno a un lancio della moneta in ogni turno successivo. Mettendo insieme quei testa-o-croce, arrivano a circa il 2% di probabilità di vincere l’intero torneo, che è la 13ª più alta su tutte le 48 squadre.

\n

Una squadra che è 13ª dal fondo per uscire dal girone e 13ª dall’alto per vincere tutto è praticamente la definizione perfetta di squadra da lancio della moneta: mai favorita, mai spacciata.

\n

Considerazioni finali

\n

Questo progetto ha richiesto parecchio lavoro e copre molto più di quanto ci stia in un articolo. Nel repo trovi molto altro che qui non ci stava: l’intero set di modelli candidati, la feature engineering e l’orchestrazione che tiene tutto in funzione, per esempio.

\n

Per ora, il modello ha fatto le sue scelte e sarà il torneo a giudicare. Che tu sia qui per l’MLOps o per il calcio, spero ti diverta seguirlo come succederà a me. Puoi seguire le previsioni live man mano che arrivano le partite e vedere quanto reggono i pronostici.

\n

Se vuoi approfondire alcuni dei concetti citati, ti consiglio il nostro corso MLOps Concepts.

FIFA World Cup 2026 Winner Prediction FAQs

Chi vincerà i Mondiali FIFA 2026?

Al 10 giugno 2026, alla vigilia del torneo, il modello indica Spagna e Argentina come co-favorite, ciascuna con circa il 16% di probabilità di vittoria, seguite da Francia, Inghilterra, Brasile e Colombia. Nessuna squadra è favorita in modo schiacciante, a conferma di quanto sia aperto il torneo. Questi sono numeri live che si muovono con l’arrivo dei risultati, quindi la dashboard mostra sempre i valori aggiornati.

Quanto può essere accurato un modello di machine learning nel prevedere il calcio?

Il calcio internazionale è difficile da prevedere: si segna poco e le squadre giocano poche gare competitive, quindi anche un modello solido lascia molta parte al caso. In questo progetto, i primi cinque modelli sono finiti entro circa 0,001 di RPS l’uno dall’altro, il che suggerisce che il limite di accuratezza è determinato soprattutto dai dati e dalle feature disponibili più che dall’algoritmo. Il singolo fattore di maggiore impatto è stato il divario di rating Elo tra le due squadre.

Perché prevedere il numero di gol invece dell’esito della partita?

Prevedere i gol di ciascuna squadra, invece di un semplice vittoria, pareggio o sconfitta, produce un’intera distribuzione di probabilità sui punteggi. È questo che rende possibile simulare un intero torneo: una volta che puoi campionare punteggi plausibili, puoi giocare migliaia di volte la fase a gironi e il tabellone a eliminazione e leggere le probabilità di avanzamento o vittoria di ogni squadra.

\n

I conteggi dei gol seguono anche abbastanza bene una distribuzione di Poisson, che si adatta a questo stile di modellazione.

Cos’è una simulazione Monte Carlo e perché farne 10.000?

Una simulazione Monte Carlo ripete l’esecuzione di un processo casuale per stimare probabilità difficili da calcolare direttamente. Qui, ogni run estrae un punteggio per ogni partita dalle previsioni del modello e gioca il torneo fino a una vincitrice; farlo 10.000 volte trasforma le previsioni di singole partite in percentuali stabili come \"la Spagna vince circa il 16% delle volte\". Un torneo simulato è solo un possibile esito, ma diecimila ne approssimano il ventaglio reale di possibilità.

Di quali strumenti hai bisogno per costruire una pipeline MLOps come questa?

I pezzi chiave sono il versionamento dei dati (in questo progetto si usa DVC), il tracciamento degli esperimenti (MLflow), un modo per eseguire job a orario (Google Cloud Run con Cloud Scheduler) e un modo per servire i risultati (una dashboard Streamlit).

\n

I modelli attingono a un mix di librerie Python: scikit-learn (Ridge e random forest), XGBoost (il campione), statsmodels e SciPy (le regressioni Poisson, Poisson bivariata e binomiale negativa, più SARIMAX), PyMC (il modello bayesiano) e Keras (LSTM e CNN), con pandas e NumPy per la gestione dei dati.

\n

Nessuna di queste è strettamente necessaria per un modello una tantum, ma insieme rendono la pipeline riproducibile e capace di riaddestrarsi e aggiornarsi senza interventi manuali


Tom Farnschläder's photo
Author
Tom Farnschläder
LinkedIn

Tom è un data scientist e formatore tecnico. Scrive e gestisce i tutorial e i post del blog di DataCamp su data science. In precedenza, Tom ha lavorato nella data science presso Deutsche Telekom.

Argomenti

I migliori corsi di Machine Learning

Corso

Capire il Machine Learning

2 h
299.3K
Un'introduzione all'apprendimento automatico senza bisogno di programmare.
Vedi dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

Mostra AltroMostra Altro