course
Att förutsäga fotboll är svårt. Det är en målsnål sport där ett styrt skott kan vända ett resultat, och en stor del av varje match avgörs av tur. Landslagsfotboll är ännu knepigare: landslag spelar bara ett fåtal tävlingsmatcher per år, så det finns långt mindre data att lära av än i klubbligor.
Som om inte det vore nog gjorde FIFA uppgiften ännu svårare inför årets VM. Det utökade VM med 48 lag inför ett nytt format där de två bästa i var och en av de tolv grupperna går vidare, tillsammans med åtta av de tolv bästa treorna, vilket gör gruppspelsöden svårförutsägbara. Eftersom jag gillar en bra utmaning (och fotboll) är det precis det jag gav mig i kast med att förutspå.
Detta är en uppföljning på mitt EURO 2024-prognosprojekt, ombyggt nästan från grunden. Förra gången arbetade jag helt i Jupyter-notebooks och förutsåg en enskild mest sannolik målrad per match. Den här gången byggde jag en end-to-end-MLOps-pipeline som hämtar färska resultat, tränar om sig själv och kör en Monte Carlo-simulering av hela turneringen 10 000 gånger, vilket omvandlar matchprognoser till sannolikheter för hur långt varje lag tar sig.
I den här artikeln guidar jag dig på en övergripande nivå genom projektet: data och features, MLOps-metoderna som håller allt reproducerbart, pipeline-arkitekturen och vilken modell som visar sig bäst på landslagsfotboll. Du hittar hela koden i projektets repo. Och självklart berättar jag vem modellen tror vinner. (Spoiler: den gillar Spanien och Argentina på runt 16 % vardera, men det intressanta är hur den tar sig dit.)
Om du kommit i turneringsstämning rekommenderar jag att du tittar på inspelningarna från våra sessioner i Data & AI World Cup, eller delta i vår FIFA World Cup 2026 Prediction-tävling. Vinnaren får inte bara en officiell VM-tröja utan även en 3-månadersprenumeration på Claude Enterprise. Håll dig uppdaterad via live-topplistan.
FIFA World Cup 2026 Prediction
I korthet
- Detta är en end-to-end MLOps-pipeline som förutspår FIFA World Cup 2026, hämtar färska landslagsresultat och tränar om automatiskt på Google Cloud, varannan timme under turneringen.
- Data från API-Football och Elo-ratingar bearbetas genom en Bronze–Silver–Gold-medaljongsarkitektur och versionshanteras med DVC för full reproducerbarhet.
- Tio modeller från fem familjer jämfördes på en holdout med 347 matcher; XGBoost vann knappt, de fem bästa var nästan oskiljbara, och Elo-skillnaden mellan lagen gör den största delen av det prediktiva arbetet.
- En Monte Carlo-simulering spelar hela turneringen 10 000 gånger och omvandlar målprognoser per match till varje lags chans att gå vidare och vinna.
- Per den 10 juni 2026 är modellens favoriter Spanien och Argentina, på ungefär 16 % vardera. De liveuppdaterade prognoserna kan följas på en tillhörande Streamlit-instrumentpanel som uppdateras varannan timme.
Datan bakom prognoserna
En prognos blir aldrig bättre än vad som matas in i den, så det är värt att börja med råvarorna. Modellen lär sig av två livedatakällor och förvandlar dem till en enda, prydlig feature-tabell.
Varifrån datan kommer
Allt byggs från två håll. API-Football tillhandahåller spelscheman och matchstatistik: vilka som möttes, när, var och hur det slutade. eloratings.net tillhandahåller Elo-ratingar för varje landslag.
En Elo-rating är ett enda tal som fångar hur starkt ett lag är. Varje lag finns någonstans på skalan och efter varje match uppdateras ratingen: slå ett starkare lag och du tjänar mycket; förlora mot ett svagare och du tappar rejält. Idén kommer från schack och passar snyggt för fotboll. Vill du ha hela intuitionen går denna tidigare DataCamp-artikel igenom den i kontexten av VM 2022.
Tillsammans ger de två källorna ett Gold-dataset med ungefär 6 900 landskamper sedan 2018 att lära av.
Vad modellen förutspår
Här är det första viktiga designvalet. I stället för att förutsäga utfall direkt som vinst, oavgjort eller förlust förutspår modellen något mer finmaskigt: hur många mål varje lag gör i en match. Målantal i fotboll följer, med god approximation, en Poisson-fördelning, standardmetoden för att modellera hur ofta en relativt sällsynt händelse inträffar under ett fast tidsfönster.
Att förutsäga mål snarare än resultat är det som gör allt senare möjligt. När modellen kan ge en plausibel målrad för vilken matchning som helst kan de frågor alla egentligen bryr sig om – vilka som tar sig ur gruppen och vem som lyfter bucklan – besvaras genom att simulera dessa målrader tusentals gånger.
Features som spelar roll
Varje match beskrivs av en liten, noggrant vald uppsättning features:
- Elo-skillnad: gapet i rating mellan de två lagen. Detta är överlägset den viktigaste enskilda feature:n i modellen, med en betydelse ungefär två tiopotenser över nästa starkaste. Det stämmer med intuitionen, eftersom styrkegapet mellan lagen säger mer om det sannolika utfallet än nästan något annat.
- Elo-summa: de två ratingarna adderade, ett mått på matchens övergripande kvalitet. Skillnaden ensam kan inte skilja Argentina mot Spanien från San Marino mot Andorra – två jämna matcher på helt olika nivåer – och summan återställer den informationen.
- Löpande Elo-förändring (senaste 5 matcherna): hur mycket varje lags rating nyligen har skiftat. Detta fångar form samtidigt som styrkan på motståndet redan är inräknad.
- Löpande gjorda och insläppta mål (senaste 5 matcherna): senaste offensiva och defensiva utfall i absoluta tal, beräknat för varje lag.
- Matchkontext: tävlingsnivån (en VM-match väger annorlunda än ett kval eller en Nations League-match), om matchen är utslagsmatch och om den spelas på neutral plan.
Varje feature är strikt läckagesäker, vilket betyder att var och en endast använder information som fanns tillgänglig före avspark. Det låter självklart, men det är ett av de lättaste sätten att av misstag bygga en modell som ser briljant ut i test och faller isär i verkligheten.
En idé som inte kom med: jag planerade en uppsättning "spelsstils"-features byggda genom att klustra lag utifrån deras in-game-statistik, ett steg i osuperviserat lärande. I praktiken separerade sig inte lagen i meningsfulla grupper, så i stället för att mata modellen med brus strök jag det. Negativa resultat är också resultat.
Att hålla datan reproducerbar
När data anländer från två källor löpande måste vägen från råfiler till modellklara features vara identisk varje gång. Det är vad en medaljongsarkitektur ger. Den organiserar data i tre lager:
- Bronze: rådata, exakt som den anländer, orörd.
- Silver: rensad och standardiserad. Här mappar jag lagnamn mellan de två källorna (de är sällan överens om stavningar), validerar schemat, lägger till Elo-ratingar till matchposterna och hanterar allt som saknas eller är felaktigt format.
- Gold: modelleringslagret, en prydlig rad per match med alla features beräknade och redo för träning.
Varje lager matar nästa, så när något ser fel ut kan jag spåra tillbaka ett steg i taget i stället för att reda ut allt på en gång. För att göra hela kedjan reproducerbar använder jag DVC (Data Version Control). När färska resultat kommer in räcker ett dvc repro för att bygga om Silver och Gold från Bronze, köra om ett steg bara om dess indata ändrats och versionshantera de resulterande dataseten så att vilket tidigare tillstånd som helst kan återställas exakt.
Välja den bästa modellen
Att förutsäga mål är ett välstuderat problem och det finns inget självklart verktyg. Så i stället för att låsa mig vid ett angreppssätt från början byggde jag tio och lät dem tävla.
Utmanarna
De tio modellerna spänner över fem familjer plus en enkel baslinje. Du behöver inte känna till varje modells inre; poängen är att de gör mycket olika antaganden om hur mål uppstår.
| Familj | Modeller | Kärnidén |
|---|---|---|
| Baslinje | Poisson med medelhastighet | Antar att varje lag helt enkelt gör ett övergripande långsiktigt snitt, och ignorerar alla features. En lägstanivå för de andra att slå. |
| Statistisk | Bivariat Poisson, Negativ binomial | Modellerar de två målantalens fördelningar direkt med sannolikhetsfördelningar gjorda för räknehändelser. |
| Bayesiansk | Bayesiansk Poisson (MCMC) | Samma räkningsidé, men returnerar ett fullt osäkerhetsintervall kring varje uppskattning. Betydligt tyngre att beräkna: ungefär 100 gånger långsammare att anpassa än de övriga. |
| Tidsserier | SARIMAX | Behandlar ett lags resultat som en sekvens över tid och projicerar sekvensen framåt. |
| Maskininlärning | Ridge, Random Forest, XGBoost | Lär mönster direkt från features utan att låsa sig vid en fast ekvation. |
| Djupinlärning | LSTM, 1D CNN | Neuronnät som letar efter sekventiella och lokala mönster i datan. |
Hur de bedömdes
Med tio kandidater var det aldrig aktuellt att välja en vinnare på känn. I stället passerar varje modell tre steg, och koden avgör om den går vidare. Det är detta som avses med kodbaserad driftsättning: modeller flyttas från en miljö till nästa via automatiska kontroller i stället för manuell justering, så att hela urvalet förblir reproducerbart och lätt att granska.
- Experiment. Varje modell tränas endast på landskamper spelade före VM 2022. Inte alla dessa matcher väger lika: färskare matcher och matcher med högre insats viktas upp (tidsavtagande och matchviktning), så ett nyligt tävlingsresultat formar modellen mer än en gammal träningslandskamp. Varje modells inställningar trimmas sedan för att minimera Poisson negativ log-likelihood (NLL) med korsvalidering. NLL är helt enkelt ett mått på hur väl de förutsagda målgraderna matchar målen lagen faktiskt gjorde – lägre är bättre. Resultatet är den bäst trimmade versionen av varje modell.
- Kvalitetssäkring. Dessa trimmade modeller testas därefter på matcher de aldrig sett: VM 2022 plus sex stora turneringar sedan dess (EM, två Afrikanska mästerskap, Copa América, Asiatiska mästerskapet och Gold Cup), totalt 347 matcher. Här byter måttet till ranked probability score (RPS), som mäter hur bra en probabilistisk prognos är när utfallen har en naturlig ordning, som förlust, oavgjort, vinst, och belönar att vara säker åt ungefär rätt håll. Lägre är bättre igen. Den starkaste modellen här blir utmanaren. RPS är rätt mått eftersom det verkliga målet är att förutse hur långt lag går, inte bara målsummor.
- Driftsätt. Utmanaren jämförs med den regerande mästaren. Om den vinner befordras den och omtränas på alla tillgängliga matcher, så att den går in i turneringen med allt data i ryggen.
Vad som vann
Så vilken metod toppade? Här är hela holdout-tabellen, bedömd med RPS (lägre är bättre):
| Modell | Holdout RPS |
|---|---|
| XGBoost | 0.18289 |
| Bayesiansk Poisson | 0.18316 |
| Negativ binomial | 0.18373 |
| Bivariat Poisson | 0.18389 |
| Random Forest | 0.18392 |
| SARIMAX | 0.18583 |
| Ridge | 0.18813 |
| LSTM | 0.19299 |
| 1D CNN | 0.20916 |
| Poisson med medelhastighet (baslinje) | 0.22872 |
Fyra saker sticker ut från dessa resultat:
- XGBoost vann, men med minsta möjliga marginal. De fem bästa modellerna (XGBoost, Bayesiansk Poisson, Negativ binomial, Bivariat Poisson och Random Forest) hamnade inom cirka 0,0011 RPS från varandra. När fem väldigt olika angreppssätt landar så nära betyder det oftast att taket sätts av data och features, inte modellen. Här gör Elo-skillnaden så stor del av jobbet att modellvalet knappt rör nålen.
- En feature dominerar. Elo-skillnad var den viktigaste prediktorn med stor marginal, ungefär hundra gånger mer inflytelserik än nästa feature. Det är mer betryggande än förvånande: i en enskild match är styrkegapet mellan två lag verkligen större delen av berättelsen.
- Djupinlärning kom sist, baslinjen undantagen. 1D CNN och LSTM var de svagaste modellerna bortsett från den naiva baslinjen. Med bara runt 7 000 matcher att lära av finns det helt enkelt inte tillräckligt med data för nät med så många parametrar; klassiska metoder hanterar små, strukturerade dataset mycket bättre.
- Inga tecken på överanpassning i de klassiska modellerna. Vanligtvis går en modell lite sämre på osedd data än under träning. Här fick nästan varje modell (utom LSTM) bättre resultat på de undansparade turneringarna än i korsvalideringen. Den troliga orsaken är att turneringsfotboll är mer förutsägbar än den vardagliga landslagskalendern: högre insatser, starkare och mer välbekanta lag samt neutrala arenor tar bort en del av slumpen.
Inför live-turneringen kör jag inte alla tio. Jag behåller en mindre trupp: baslinjen med medelhastighet som referenspunkt, plus de tre bästa. XGBoost och Bayesiansk Poisson tar de två topplatserna.
Tredjeplatsen är i praktiken oavgjord: Negativ binomial och Bivariat Poisson hamnar inom 0,0002 RPS från varandra och byter plats beroende på slumpfrö, så mellan två statistiskt oskiljbara modeller valde jag Bivariat Poisson, vars formulering har starkare fotfäste i fotbollsprognoslitteraturen (Karlis och Ntzoufras, 2004).
Det lämnar en trupp bestående av XGBoost (maskininlärning), Bivariat Poisson (klassisk statistik) och Bayesiansk Poisson (bayesiansk inferens). Nästa avsnitt täcker hur dessa modeller körs, tränas om och förvandlar matchprognoser till en fullständig turneringsprognos.
Från idé till produktion
En modell som lever i en notebook är bara användbar medan du sitter framför den. För att förutspå matcher under en månadslång turnering måste allt rulla av sig självt: hämta nya resultat, träna om, simulera på nytt och uppdatera prognosen utan handpåläggning. Det är pipelinens jobb.
Den tvåtimmarsvisa pipelinen på GCP
Hela projektet körs som ett enda schemalagt jobb på Google Cloud Run. Före turneringen vaknar den en gång om dagen; från öppningsmatchen den 11 juni körs den varannan timme. Varje körning följer samma cykel:
- Kontrollera ny data. Om inga matcher avslutats sedan förra körningen finns inget att göra och jobbet avslutas tidigt.
- Ingest och återbyggnad. När nya resultat har kommit in hämtas de från datakällorna, och ett enda
dvc reprobygger om Silver- och Gold-lagren så att features är aktuella. - Träna om, förutsäg, simulera. Truppens modeller uppdateras (mer om hur om strax), varje kommande matchning förutsägs och hela turneringen simuleras.
- Skatta. När en match är avgjord poängsätts de prognoser som gjordes för den, vilket matar övervakningen som beskrivs nedan.
Eftersom varje steg triggas av kod enligt schema finns ingen manuell knapptryckning under turneringen. Nya resultat in, uppdaterad prognos ut.
Två lägen: fruset vs. per omgång
Här fungerar projektet också som ett experiment. Under turneringen körs truppen i två parallella lägen, och skillnaden mellan dem är frågan jag hoppas besvara med data: Blir prognoserna bättre om man tränar om allteftersom turneringen fortskrider?
- Fruset. Modellerna låses i samma ögonblick som turneringen sparkas i gång och tränas aldrig om. De reagerar fortfarande på resultaten, eftersom varje simulering startar från den uppdaterade slutspelstavlan, men modellernas parametrar ändras aldrig.
- Per omgång. Hyperparametrarna (inställningarna på hög nivå) förblir fasta, men de parametrar som modellen lär sig anpassas på all tillgänglig data efter varje avslutad gruppspelsomgång och varje utslagsrunda, så modellerna fortsätter att lära under turneringens gång.
Att köra båda sida vid sida låter mig jämföra dem på två fronter när allt är över: rå prediktiv noggrannhet och hur snabbt var och ens osäkerhet minskar när fältet smalnar. Om per omgång vinner är regelbunden omträning mödan värd; om fruset håller jämna steg kanske den extra mekaniken inte är värd besväret.
Från prognoser till turnering: Monte Carlo-simuleringen
Att förutsäga en enskild match är en sak. Att omvandla det till ”hur stor chans har varje lag att vinna turneringen” är där Monte Carlo-simuleringen kommer in.
Först inferens. I stället för att bara förutsäga de matcher vi redan känner till förutspår modellen varje möjlig matchning bland de 48 lagen. Det låter överdrivet, men i en turnering kan vilket lag som helst möta vilket annat i slutspelet, så en prognos måste vara redo för varje parning.
Sedan måste reglerna kodas, och 2026 års format gör det särskilt besvärligt. I de 12 grupperna går topp två automatiskt vidare, men det gör också de åtta bästa treorna, och vilken slutspelsplats var och en av dessa åtta hamnar på beror på vilka grupper de kom ifrån.
Det finns 495 sätt att välja åtta kvalificerande grupper av tolv (tolv över åtta), och vart och ett ger en annan uppsättning 32-delsfinaler. Det finns ingen elegant formel för det; FIFA publicerar helt enkelt en tabell. Så jag (eller snarare min mycket kapabla kollega Cursor) hårdkodade alla 495 kombinationer i en mapping, med den officiella tabellen som källa.
"best_third_mappings": {
"EFGHIJKL": {
"74": "3F",
"77": "3G",
"79": "3E",
"80": "3K",
"81": "3I",
"82": "3H",
"85": "3J",
"87": "3L"
},
"DFGHIJKL": ...
Varje nyckel, som EFGHIJKL, listar vilka åtta grupper som levererade de vidaregående treorna, och värdena placerar vart och ett av dessa lag (3E, 3F osv.) i en specifik 32-delsfinal med matchnummer. Det är en post; hela mappen upprepar detta 495 gånger, en gång per kombination.
De tre värdnationerna (USA, Kanada och Mexiko) får en extra hantering. När en värd spelar en match i sitt eget land tillämpas en hemmaplansjustering i simuleringen för den matchen, medan resten av turneringen betraktas som neutral plan.
Med prognoserna och reglerna på plats kör simuleringen hela turneringen 10 000 gånger. I varje körning följer den denna procedur:
- Dra en målrad för varje match genom att samp la hemma- och bortamål från modellens förutsagda fördelningar
- Spela gruppspelet enligt de verkliga poäng- och tiebreak-reglerna
- Fastställ tabellen för bästa treor
- Fyll i slutspelsträdet utifrån mappingarna ovan
- Spela vidare till en ensam mästare.
Över 10 000 simulerade turneringar blir andelen körningar där ett lag når final eller lyfter bucklan lagets sannolikhet. En körning är en gissning; tiotusen körningar är en prognos.
Allt spåras med MLflow
Varje körning som hittills beskrivits, i båda lägena, loggas till MLflow (hostat på DagsHub). Experimentspårning innebär att systematiskt registrera indata, inställningar, resultat och utdata från varje körning, så att vilken som helst kan jämföras mot de andra eller reproduceras exakt. Några saker som fångas är värda att lyfta:
- Reproducerbarhet. Simuleringen använder ett fast slumpfrö härlett från turneringsrundan, och samma frö delas av fruset- och per omgång-lägena. Det betyder att all skillnad mellan de två kommer från modellerna själva, inte från turen i simuleringens lottdragningar. Varje körning loggar också den exakta datasnapshot den såg (antal Gold-rader och en tidsstämpel), så resultat kan alltid spåras tillbaka till sina indata.
- Experimentet. Varje körning taggas med sitt läge (fruset eller per omgång) och sin fas i livscykeln, från experimentell och QA till live-inferens och omträning, vilket speglar befordringsflödet från föregående avsnitt.
- Jämförelse. Holdout-RPS loggas som urvalsmått, tillsammans med en referens till den nuvarande mästarkörningen för härledning. Anpassningstid loggas också, vilket tydligt visar var den bayesianska modellens ungefär hundra gånger långsammare träning dyker upp svart på vitt.
De tränade modellerna och själva prognosfilerna (turneringssannolikheter, gruppställningar och matchprognoser) lagras som körningsartefakter, och det är exakt dessa filer som den live-instrumentpanelen läser. Det sluter loopen: från råa resultat, genom träning och simulering, till siffrorna du kan se online.
Övervakning av drift
Den sista delen körs när matcher är avgjorda. När riktiga resultat anländer poängsätts de prognoser som gjordes för dem och jämförs med den enkla baslinjen med medelhastighet. Om fullmodellerna börjar tappa mark mot en modell som inte vet något om lagen är det en varningssignal om drift: mönstren som lärdes före turneringen kanske inte längre matchar vad som händer på planen.
Att bevaka detta är standardpraxis för alla system som gör liveprognoser, och du kan läsa mer om hur detekteringen går till i denna guide till datadrift och modelldrift.
Så, vem vinner VM?
Efter all denna maskineri – här är vad det är till för.
Favoriterna
Per den 10 juni 2026, dagen före öppningsmatchen, är modellens dom tydlig i toppen och tät strax bakom. Spanien och Argentina leder fältet, båda med ungefär 16 % chans att lyfta bucklan. Att de regerande världsmästarna (Argentina) och de regerande Europamästarna (Spanien) hamnar överst är en betryggande rimlighetskontroll på att modellen är förankrad i verkligheten.
Bakom dem finns en tät jagande klunga: Frankrike, England, Brasilien och Colombia kompletterar de troligaste vinnarna. Detta är live-siffror och de rör sig så snart riktiga resultat börjar trilla in, så betrakta dem som en ögonblicksbild från den 10 juni snarare än en fast profetia. Instrumentpanelen visar alltid de aktuella siffrorna, med högst två timmars fördröjning.
Live-instrumentpanelen
På tal om det: Varenda siffra i den här artikeln kommer från en live-Streamlit-app som uppdateras automatiskt när pipelinen körs. Du kan öppna den på wc2026-predictions.streamlit.app och följa turneringen. Den har fyra huvudvyer:
- Turneringsöversikt: hur långt varje lag förväntas gå, i överblick.
- Gruppställningar: för varje grupp, varje lags sannolikhet att sluta etta, tvåa, trea (uppdelat i trea-och-vidare kontra trea-och-ute, tack vare bästa-trea-regeln) eller fyra.
- Matchprognoser: för varje gruppmatch, chansen för hemmavinst, oavgjort eller bortavinst, tillsammans med det mest sannolika slutspelsträdet.
- Vanligaste slutspelsmatchningarna: de parningar som simuleringen producerar oftast.
En egenhet värd att flagga i matchvyn: ett par lag dyker upp i två möjliga 32-delsfinalplatser samtidigt. Det är inte ett fel. Det händer när en grupp är så jämn att modellen inte kan avgöra med säkerhet vilken kvalificeringsposition ett lag tar. Kombinerat med osäkerheten kring bästa treor leder de två utfallen till olika slutspelsplatser. För Turkiet ledde det till och med till att de var med två gånger i åttondelsfinal.
Följande grafik visar de avslutande rundorna (kvartsfinal till final) som XGBoost-modellen projicerar före turneringsstart:

Slantsinglingslaget: USA
Det roliga med en sådan här modell ligger i lagen som trotsar ögonmåttet, och det tydligaste exemplet är USA. Går du till turneringsöversikten på instrumentpanelen märker du direkt att USA sticker ut i färg.
Som medvärdar inför hemmapublik kan du kanske vänta dig en bekväm start, men modellen är betydligt mer försiktig: den ger dem bara omkring 54,6 % chans att ta sig ur gruppen, den 13:e lägsta i hela fältet (kom ihåg att två tredjedelar av lagen kvalificerar sig!), eftersom deras grupp med Australien, Paraguay och Turkiet är ovanligt jämn.
Det intressanta kommer sedan. Har de krånglat sig vidare ligger USA sedan på ungefär slantsingling i varje följande omgång. Staplar du dessa slantsinglingar hamnar de på cirka 2 % chans att vinna hela turneringen, vilket är den 13:e högsta av alla 48 lag.
Ett lag som rankas 13:e från botten att ta sig ur gruppen och 13:e från toppen att vinna allt är så nära en perfekt definition av ett slantsinglingslag du kan komma: aldrig favorit, aldrig uträknat.
Avslutande tankar
Det här projektet var mycket arbete och täcker långt mer än vad en artikel rymmer. Repon innehåller mycket som inte fick plats här: hela uppsättningen kandidatmodeller, feature engineering och orkestreringen som håller allt rullande är några exempel.
För nu har modellen gjort sina val, och turneringen blir domare. Oavsett om du kom för MLOps eller fotbollen hoppas jag att du tycker det är lika roligt att följa det som jag. Du kan följa live-prognosen när matcherna spelas och se hur väl förutsägelserna står sig.
Vill du titta närmare på några av begreppen jag nämnt rekommenderar jag vår kurs MLOps Concepts.
Vanliga frågor om VM 2026-vinnare och prognoser
Vem vinner FIFA World Cup 2026?
Per den 10 juni 2026, precis innan turneringen börjar, gör modellen Spanien och Argentina till delade favoriter, båda med ungefär 16 % chans att vinna, följda av Frankrike, England, Brasilien och Colombia. Inget enskilt lag är solklar favorit, vilket återspeglar hur öppen turneringen är. Dessa siffror är live och rör sig när resultaten kommer in, så instrumentpanelen visar alltid aktuella tal.
Hur träffsäkert kan en maskininlärningsmodell förutsäga fotboll?
Landslagsfotboll är svår att förutse: den är målsnål och lagen spelar få tävlingsmatcher, så även en stark modell lämnar mycket åt slumpen. I det här projektet hamnade de fem bästa modellerna inom cirka 0,001 RPS från varandra, vilket antyder att noggrannhetstaket främst sätts av tillgänglig data och features snarare än algoritmen. Den enskilt största drivkraften i prognoserna var Elo-gapet mellan lagen.
Varför förutsäga antalet mål i stället för matchresultatet?
Att förutsäga antal mål för varje lag, snarare än ren vinst, oavgjort eller förlust, ger en full sannolikhetsfördelning över målrader. Det är det som gör det möjligt att simulera en hel turnering: när du kan samp la plausibla målrader kan du spela ut gruppspel och slutspel tusentals gånger och läsa av varje lags chans att gå vidare eller vinna.
Målantal följer dessutom Poisson-fördelningen ganska väl, vilket passar denna typ av modellering.
Vad är en Monte Carlo-simulering och varför köra 10 000 av dem?
En Monte Carlo-simulering spelar upp en slumpmässig process upprepade gånger för att uppskatta sannolikheter som är svåra att räkna ut direkt. Här drar varje körning en målrad för varje match från modellens prognoser och spelar turneringen till en vinnare; att göra detta 10 000 gånger omvandlar matchprognoser till stabila procentsiffror som ”Spanien vinner cirka 16 % av gångerna.” En simulerad turnering är bara ett möjligt utfall, men tiotusen av dem approximerar den verkliga spridningen av möjligheter.
Vilka verktyg behövs för att bygga en sådan MLOps-pipeline?
Kärnkomponenterna är dataversionering (detta projekt använder DVC), experimentspårning (MLflow), ett sätt att köra jobb enligt schema (Google Cloud Run med Cloud Scheduler) och ett sätt att exponera resultaten (en Streamlit-instrumentpanel).
Själva modellerna använder en mix av Python-bibliotek: scikit-learn (Ridge och random forest), XGBoost (mästaren), statsmodels och SciPy (Poisson-, bivariat Poisson- och negativ binomial-regression, plus SARIMAX), PyMC (den bayesianska modellen) och Keras (LSTM och CNN), med pandas och NumPy för datahantering.
Inget av detta är strikt nödvändigt för en engångsmodell, men tillsammans gör de pipelinen reproducerbar och kapabel att träna om och uppdatera sig själv utan manuellt arbete