Gebouwd op 49.477 historische interlands, live WK-data en open datasets die iedereen kan inzien. Dezelfde wiskunde die de grote spelers gebruiken — alleen dan navolgbaar, van ruwe bron tot kans.
Samen vormen ze een keten: het ene levert de grondstof voor het volgende.
ELO is een rapportcijfer voor sterkte, oorspronkelijk bedacht voor schaken. Elk team begint op 1500 punten. Na elke wedstrijd verschuiven de punten: de winnaar pakt van de verliezer. De clou zit in hoeveel er verschuift. Versla je een veel sterker team, dan incasseer je een flinke sprong — dat had niemand verwacht. Versla je een dwerg, dan levert het bijna niets op.
Doe dat voor 49.477 interlands, chronologisch van 1872 tot nu, en de punten kristalliseren vanzelf uit naar de echte krachtsverhoudingen. Brazilië zweeft bovenin, Bhutan bungelt onderaan — niemand hoefde dat handmatig in te voeren. De wedstrijduitslagen doen het werk.
Wat ELO je niet vertelt: de score. Het zegt dat team A waarschijnlijk wint, niet of dat 1–0 of 4–1 wordt. Daarvoor is de volgende stap.
Een Poisson-verdeling is de wiskunde van zeldzame gebeurtenissen die in een vast tijdvak kunnen vallen: hoeveel klanten lopen per uur een winkel binnen, hoeveel druppels per minuut uit een kraan — en hoeveel goals er in negentig minuten vallen. Het past goed bij voetbal, juist omdat goals schaars en min of meer onafhankelijk zijn.
"Regressie" betekent: een verband leren uit data. Het model krijgt de ELO-verschillen als invoer en leert daaruit het verwachte aantal goals — in jargon λ (lambda). Eén regressor voor de thuisploeg, één voor de uitploeg.
Let op het woord verwacht. λ van 1,8 betekent niet dat er 1,8 goals vallen — dat kan niet eens. Het betekent: gemiddeld over heel veel denkbeeldige herhalingen zou je rond de 1,8 uitkomen. De spreiding is precies waar de laatste stap op inhaakt.
Je hebt nu twee λ's: het verwachte aantal goals voor thuis en uit. In plaats van daar één nette voorspelling uit te rekenen, doet Monte Carlo iets bruters en eerlijkers: het speelt de wedstrijd 50.000 keer, in software.
Elke simulatie trekt een willekeurige score uit de Poisson-verdeling rond die λ. De ene eindigt 1–0, de volgende 2–2, een uitschieter 4–1. Doe dat vijftigduizend keer en je telt: in hoeveel procent won team A? Wint het in 31.000 van de 50.000 runs, dan is de winkans 62%.
De naam komt van het casino in Monaco — je lost een lastig kansprobleem op door heel vaak te gokken en de uitkomsten te tellen, in plaats van het uit te rekenen met een formule.
Dit is een van mijn side projects. Niet omdat het moet, maar omdat datasets en modellen me energie geven.
Geef me een paar open repos, een Poisson-regressor en een vrij weekend,
en ik bouw liever een voorspelmodel dan dat ik uitrust.
Alle code, alle data, alle algoritmes liggen open. Niet als marketing —
transparantie is het onderwerp. Een model dat je niet kunt nalopen,
is geen model. Het is een orakel.
Voor elke WK-wedstrijd genereren we automatisch een kaart met kansen, ELO-ratings en verwachte goals. Klaar om te delen.






Vijf open datasets, samen completer dan veel betaalde diensten. Elke bron is publiek, traceerbaar en herbruikbaar — je kunt alles wat hier binnenkomt zelf ophalen en controleren.
De gouden standaard voor historische interland-uitslagen. 49.477 wedstrijden van 1872 tot heden, handmatig samengesteld en dagelijks bijgehouden. Doelpunten, thuisvoordeel, neutraalveld-markering — precies wat het model nodig heeft.
Live WK 2026 schema en uitslagen in machine-leesbaar JSON. Zodra een wedstrijd gespeeld is, herberekent het model automatisch de ELO-ratings voor alle resterende duels.
De ongedocumenteerde maar stabiele ESPN-API levert live scores, wedstrijdminuten en status. Geen sleutel, geen limiet, al jaren betrouwbaar — een stille held van de open sportdata.
Aanvullende live bron: doelpuntenmakers, kaarten, wissels, opstellingen. De open tier geeft 100 requests per dag — ruim voldoende voor de groepsfase. Springt in als ESPN onvolledig is.
Spelerselecties per land: rugnummer, positie, geboortedatum. Automatisch berekende gemiddelde leeftijd per selectie en volledige kaderlijsten.
Het model is goed — jij maakt het beter. Pas aanvals- en defensiefactoren per team aan op basis van vorm, blessures of tactiek. De correcties werken direct door in alle voorspellingen.
Vijf stappen. Elke stap bouwt voort op de vorige. Het resultaat is een kansverhouding die aansluit bij wat historisch gezien echt gebeurt.
Elk team krijgt een ELO-score — hetzelfde systeem als bij schaken. We starten op 1500 punten en doorlopen chronologisch elke interland van 1872 tot nu. Winnen van een sterk team levert meer punten op dan winnen van een zwak land.
Zodra een WK-wedstrijd gespeeld is, worden de ELO-ratings direct bijgewerkt. Een verrassingswinst heeft een grotere impact. Alle nog niet gespeelde wedstrijden gebruiken de meest recente ratings.
ELO vertelt wie wint — maar niet met hoeveel. Daarvoor trainen we twee Poisson-regressors op historische data: één voor thuisgoals, één voor uitgoals. De gespeelde WK-duels worden meegenomen in de trainset.
De modeluitvoer kan gecorrigeerd worden met handmatige inzichten per team: aanvalsfactor, defensiefactor en momentum-multiplier. De correcties zijn transparant zichtbaar in de app.
Met de verwachte goals trekken we 50.000 keer een willekeurig scoreverloop via Poisson-sampling. Het percentage simulaties waarin team A wint, is de kans op winst. Dit geeft stabielere kansen dan een analytische benadering.
Geen score verschijnt in de app zonder dat je kunt nalopen hoe hij berekend is.
Gebouwd door Arjen Houweling — AI & ML-specialist. Net als de andere voorspelmodellen op open data op arjenhouweling.nl: transparant gebouwd, geen black box.
Dataanalisten bouwen dit met dure licenties en gesloten modellen. Ik bouw het met Python, open repos en de nieuwsgierigheid die maakt dat ik niet kan stoppen voor het klopt.
⚽ Open de WK 2026 Predictor