Progetti

World Cup Multiverse

100.000 Mondiali, un browser, e l'Italia di nuovo dove merita.

Un simulatore gratuito e completamente client-side dei Mondiali 2026: un modello bayesiano delle partite, 100.000 simulazioni Monte Carlo in un Web Worker, e un interruttore che rimette l'Italia nel torneo.

DataGiugno 2026
StatoOnline · Open source
Tech stack
  • TypeScript
  • React
  • Vite
  • Web Workers
  • PyMC
  • Vercel

Perché esiste

La notte in cui l'Italia è stata eliminata dal terzo Mondiale consecutivo avevo due opzioni: elaborare il lutto come un adulto funzionante, oppure aprire un editor di codice alle 2 di notte. Ho aperto l'editor.

C'è chi tiene un diario, c'è chi va in terapia. Io ho costruito un simulatore Monte Carlo da 100.000 esecuzioni di un universo parallelo in cui gli Azzurri sono esattamente dove meritano, al Mondiale, solo per farmi dire dai numeri che probabilmente uscirebbero comunque ai sedicesimi. La catarsi adesso è un toggle.

Quindi, tecnicamente, questo è un motore statistico di calcio. Emotivamente, è un meccanismo di elaborazione del lutto con un modello bayesiano attaccato. C'è un pulsante che rimette l'Italia nel Gruppo B al posto della Bosnia. Lo premo spesso. Aiuta.

«L'Italia non è al Mondiale, quindi ce l'ho rimessa io.»

Cosa fa

Premi Simula e il browser gioca 100.000 Mondiali completi (gironi, migliori terze, sedicesimi, fino alla finale) e li aggrega in una probabilità di vittoria per ognuna delle 48 squadre. Una singola esecuzione campionata viene tenuta da parte e riprodotta come “Tournament Cinema” animato, etichettato chiaramente come un universo su 100.000.

Attorno alla simulazione c'è un prodotto completo: una dashboard delle probabilità con le tabelle di avanzamento fase per fase, uno Strength Score 0–100 per squadra, gli scontri diretti con gol attesi, e scenari what-if impilabili (infortuni, squalifiche, fattore caos) che rilanciano tutto e codificano lo scenario esatto in un URL condivisibile.

La home: ogni modalità a un click.

La prima risposta è volutamente semplice: dopo 100.000 tornei, chi vince più spesso? Invece di fingere che esista un unico futuro certo, la dashboard mostra l'intera distribuzione — dalla vittoria del trofeo fino alla probabilità di raggiungere ogni singola fase.

Probabilità di vittoria Monte Carlo su 100.000 tornei.

Le probabilità spiegano ciò che tende ad accadere, ma non hanno ancora il sapore di un Mondiale. Per questo il simulatore conserva uno di quei 100.000 universi e lo trasforma in Tournament Cinema: il tabellone prende vita partita dopo partita, lasciando che ogni sorpresa campionata riscriva il percorso verso la finale.

Tournament Cinema: un tabellone campionato, giocato in diretta.

A volte la domanda interessante è più piccola di un intero torneo: cosa succede se queste due squadre si affrontano domani? La modalità testa a testa isola l'incontro e traduce il modello in probabilità di vittoria, pareggio e sconfitta, insieme ai gol attesi che le determinano.

Testa a testa: vittoria/pareggio/sconfitta e gol attesi tra due squadre.

Poi interviene la realtà. Un giocatore chiave si infortuna, un altro è squalificato, oppure il torneo diventa insolitamente caotico. Gli scenari what-if possono essere combinati e l'intera simulazione riparte all'istante, rendendo visibile il peso di ogni cambiamento invece di lasciarlo all'intuizione.

What-if impilabili: infortuni, squalifiche, caos, rilanciati all'istante.

Sotto ogni previsione c'è lo stesso linguaggio comune: uno Strength Score da 0 a 100. La vista squadre riporta tutte le 48 nazionali nello stesso quadro, così le ipotesi che alimentano la simulazione restano visibili e confrontabili prima ancora del primo calcio d'inizio virtuale.

Tutte le 48 squadre, ognuna con uno Strength Score 0–100.

Il motore

Ogni partita è modellata come una Poisson bivariata in stile Dixon-Coles: ogni squadra ha un parametro di attacco e uno di difesa, corretti per la sovrastima sistematica dei pareggi a basso punteggio, aggiustati con la storia reale degli scontri diretti, e compressi in modo che le favorite non diventino mai invincibili. Il loop Monte Carlo campiona poi risultati reali, fa avanzare il vincitore campionato, mai la favorita: è per questo che esecuzioni ripetute incoronano campioni diversi.

I parametri di attacco e difesa non sono inventati: arrivano da un modello bayesiano gerarchico stimato offline con PyMC su circa 49.000 partite internazionali dal 1872, con pesi a decadimento temporale e prior ancorati all'Elo. Il browser carica solo il JSON esportato, niente Python, niente fitting, niente backend a runtime. Tutti i 100.000 tornei girano dentro un Web Worker, così l'interfaccia non si blocca mai.

100ktornei per click
~49kpartite storiche nel modello
48squadre, formato 2026 completo
0server coinvolti

Il pulsante Italia

Il what-if di punta: l'Italia non si è qualificata, eliminata dalla Bosnia ai rigori nel playoff. Un toggle mette gli Azzurri nel Gruppo B al posto della Bosnia, esattamente lo slot che avrebbero occupato qualificandosi, e rilancia l'intero multiverso. Il modello resta onesto: nessun bonus, nessun sentimento, solo i parametri che l'Italia si è guadagnata sul campo. I numeri sono raramente gentili. Continuo a premerlo lo stesso.

L'onboarding: Italia DENTRO o FUORI?

Com'è andata a finire

Qualche tempo dopo aver pubblicato tutto, il Mondiale vero è finito, e la Spagna ha alzato la coppa, esattamente la squadra che il mio simulatore aveva incoronato favorita più netta: la probabilità di vittoria più alta tra tutte le 48. Un bel po' di amici mi hanno scritto per ringraziarmi, si erano fidati dei numeri. E non è stata fortuna: la maggior parte delle squadre che il modello mandava lontano nel tabellone sono arrivate davvero in fondo. Questa è la buona notizia, l'analisi era costruita davvero su dati solidi. La cattiva notizia è la stessa notizia: significa che il modello aveva probabilmente ragione anche sull'Italia.

La Spagna alza il Mondiale 2026, la favorita del simulatore, confermata.
«Alla fine il modello non aveva bisogno di terapia. Io sì.»

Altri progetti