Backtest op 60 wedstrijdbestanden: hoe nauwkeurig is de engine
De voorspelling van de eindtijd in AeroPacer draait op een fysica-engine, niet op een statistische regressie. Het voordeel van een fysica-engine is dat hij een nieuw parcours vanaf dag één kan doorrekenen. Het nadeel is dat je moet aantonen dat hij goed rekent. Dit artikel laat zien hoe ik dat heb gecontroleerd.
Hoe ik het heb getest
De methode heet replay: neem het vermogen dat de atleet op wedstrijddag echt heeft getrapt, stop dat segment voor segment in de engine, tel de windrichting en windsnelheid per uur van die dag en de snelheidsverliezen in de bochten van het parcours erbij op, en bereken hoelang die rit volgens de engine "had moeten" duren. Vergelijk dat vervolgens met de werkelijke tijd op de fietscomputer.
Het belangrijkste detail is CdA (luchtweerstandsoppervlak). Los je CdA op uit het bestand van een wedstrijd en gebruik je dat om diezelfde wedstrijd te voorspellen, dan is dat vals spelen. Voor elke wedstrijd komt de CdA daarom uitsluitend uit de andere wedstrijden van die atleet: de schattingen worden gewogen naar recentheid en daarvan wordt de mediaan genomen. De data van de wedstrijd zelf blijft er dus buiten.
Steekproef
- Negen atleten, 2019 tot 2026, 74 wedstrijdbestanden, op parcoursen in meer dan 16 landen.
- Alle lichaamsgewichten zijn gemeten waarden. Fietsen zijn gegroepeerd op type (tri-fietsen en racefietsen krijgen aparte CdA-basislijnen).
- Bestanden met aantoonbare problemen zijn eruit gehaald: twee zonder vermogen, vier met een kapotte barometer, één dubbele upload, drie met gps-vervorming in tunnels. Hun CdA-schattingen tellen nog wel mee als basislijn, alleen hun totaaltijden blijven uit de statistiek.
Daarmee bleven 64 beoordeelbare wedstrijden over. Daarna gingen er vier extreme uitschieters af, wat een definitieve steekproef van 60 opleverde.
Resultaten
| Maatstaf | Waarde |
|---|---|
| Mediane absolute fout | 2.2% |
| Binnen ±5% | 92% |
| Binnen ±3% | 73% |
| Mediaan voor 70.3 (113 km) | 1.7% |
| Mediaan voor volledige afstand (226 km) | 2.3% |
| Mediaan inclusief teken | +0.7% (licht behoudend) |
Op de site staat "mediane fout ongeveer 2%, negen van de tien wedstrijden binnen ±5%". Beide getallen zijn naar de behoudende kant afgerond.
Hoe de fout verdeeld is
Voorspeld tegenover werkelijk
Waar de fout vandaan komt
- Lichaamsgewicht. Met aangenomen gewichten lag de mediaan juist lager, want als het gewicht niet klopt, compenseert de CdA-schatting de andere kant op en verbergt zo de fout. Zodra de gemeten gewichten erin gingen, kwamen de verschillen tussen materiaalgeneraties en tijdperken bloot te liggen. Daarom vraagt de Console om je echte gewicht.
- Materiaalwissels. Bij één atleet zakte de impliciete CdA vanaf 2024 van 0.22 naar 0.16 à 0.18. Een flinke materiaalsprong, maar de mediaan over de hele geschiedenis kan dat niet bijbenen. Dat is de onvermijdelijke prijs van CdA schatten uit andere wedstrijden.
- Afstand tot het weerstation. Bij Port Macquarie is geen weerstation in de buurt en het waaide hard; twee atleten in dezelfde wedstrijd kwamen uit op −7.4% en −4.1%.
- Barometers die op lange vlakke parcoursen te veel hoogtemeters melden. Dit raakt de opbouw van het parcours, niet de engine; de parcoursbibliotheek vangt het op met officiële routes en kruiscontroles tegen meerdere bronnen.
Wedstrijden die voor de validatie zijn gebruikt
De definitieve 60 wedstrijden komen uit 45 wedstrijdjaren, hieronder opgesomd. Meerdere bestanden bij dezelfde wedstrijd zijn verschillende atleten. De fout is per bestand de voorspelling ten opzichte van de werkelijke tijd (positief = trager voorspeld). De drie "trainingsritten" zijn mijn eigen trainingsritten op wedstrijdlengte, toegevoegd om de steekproef van 2026 aan te vullen.
| Jaar | Wedstrijd | Fietsonderdeel | Bestanden | Fout per bestand |
|---|---|---|---|---|
| 2026 | Tielifang · Guangde 113 | 113 · 88 km | 1 | +3.3% |
| 2026 | Trainingsrit (geen wedstrijd) | 116 km | 3 | -1.5% -0.5% +1.1% |
| 2026 | IRONMAN Vietnam · Da Nang | 226 · 180 km | 1 | +4.1% |
| 2026 | IRONMAN Taiwan · Penghu | 226 · 178 km | 1 | +2.2% |
| 2026 | IRONMAN Hamburg | 226 · 177 km | 2 | -0.7% +3.7% |
| 2026 | IRONMAN 70.3 Shanghai Chongming | 113 · 90 km | 3 | +1.0% +3.5% +4.5% |
| 2026 | Challenge Taiwan 226 | 226 · 180 km | 1 | +6.3% |
| 2025 | Tielifang · Guangde 113 | 113 · 89 km | 1 | +0.1% |
| 2025 | Beauty of Taitung 113 | 113 · 89 km | 1 | +3.8% |
| 2025 | IRONMAN World Championship · Nice | 226 · 178 km | 1 | -1.5% |
| 2025 | IRONMAN World Championship · Kona | 226 · 181 km | 1 | +2.7% |
| 2025 | IRONMAN Taiwan · Penghu | 226 · 184 km | 1 | +5.2% |
| 2025 | IRONMAN Malaysia · Langkawi | 226 · 179 km | 1 | -0.9% |
| 2025 | IRONMAN Gurye | 226 · 176 km | 3 | -1.5% +0.9% +1.1% |
| 2025 | IRONMAN Frankfurt | 226 · 175 km | 2 | +0.9% +2.4% |
| 2025 | IRONMAN California · Sacramento | 226 · 180 km | 1 | +2.3% |
| 2025 | IRONMAN 70.3 Kenting | 113 · 90 km | 1 | -0.9% |
| 2025 | IRONMAN 70.3 Shanghai Chongming | 113 · 90 km | 4 | -0.1% +1.3% +2.7% +2.7% |
| 2025 | IRONMAN 70.3 Puerto Princesa | 113 · 90 km | 2 | -1.7% -1.7% |
| 2024 | Tielifang · Guangde 113 | 113 · 89 km | 1 | -2.7% |
| 2024 | IRONMAN World Championship · Kona (gedeeltelijk bestand) | 73 km (gedeeltelijk) | 1 | +3.5% |
| 2024 | IRONMAN World Championship · Kona | 226 · 180 km | 1 | +2.2% |
| 2024 | IRONMAN Texas | 226 · 178 km | 1 | +4.1% |
| 2024 | IRONMAN Cairns | 226 · 179 km | 1 | -0.9% |
| 2024 | IRONMAN 70.3 World Championship · Taupō | 113 · 90 km | 2 | -2.4% -0.7% |
| 2024 | IRONMAN 70.3 Subic Bay | 113 · 91 km | 1 | +2.3% |
| 2024 | IRONMAN 70.3 Desaru Coast | 113 · 89 km | 1 | -2.7% |
| 2024 | IRONMAN 70.3 Bangsaen | 113 · 90 km | 1 | +2.7% |
| 2024 | IRONMAN 70.3 Bahrain | 113 · 90 km | 2 | +0.5% +0.9% |
| 2024 | Challenge Xiamen 113 | 113 · 89 km | 1 | +3.9% |
| 2024 | Challenge Taiwan 226 | 226 · 179 km | 1 | +4.2% |
| 2024 | Challenge Roth | 226 · 178 km | 1 | +2.3% |
| 2023 | Tielifang · Guangde 113 | 113 · 86 km | 2 | -7.0% +0.6% |
| 2023 | Puyuma Triathlon 226 | 226 · 178 km | 1 | -2.0% |
| 2023 | IRONMAN France · Nice | 226 · 179 km | 1 | -5.9% |
| 2023 | IRONMAN Austria · Klagenfurt | 226 · 179 km | 1 | -2.4% |
| 2023 | IRONMAN Australia · Port Macquarie | 226 · 180 km | 1 | -4.1% |
| 2023 | IRONMAN 70.3 Kenting | 113 · 90 km | 1 | -2.3% |
| 2023 | IRONMAN 70.3 Puerto Princesa | 113 · 90 km | 1 | -0.8% |
| 2022 | IRONMAN Taiwan · Penghu | 226 · 179 km | 1 | -1.9% |
| 2022 | IRONMAN 70.3 Taitung | 113 · 88 km | 1 | -0.3% |
| 2019 | IRONMAN World Championship · Kona | 226 · 180 km | 1 | +5.5% |
| 2019 | IRONMAN 70.3 Xi'an | 113 · 90 km | 1 | -0.8% |
| 2019 | IRONMAN 70.3 Liuzhou | 113 · 90 km | 1 | -2.1% |
| 2019 | IRONMAN 70.3 Xiamen | 113 · 90 km | 1 | -0.3% |
Wat dit betekent
Voor een agegrouper betekent dat getal dit: rijd je het plan, dan komt je eindtijd binnen ongeveer ±5% van de voorspelling uit. Stuur na de wedstrijd je ritbestand terug voor de vergelijking, dan wordt je eigen CdA met elke wedstrijd scherper en de fout bij de volgende dus kleiner.
Over de betrouwbaarheid
- Elk getal in dit artikel is rechtstreeks berekend uit de resultatentabel van de backtest, en de grafieken zijn uit diezelfde data getekend. Er is niet uitgezocht welke wedstrijden meetellen.
- De eruit gehaalde bestanden en de redenen staan hierboven allemaal vermeld. Die keuze is op datakwaliteit gemaakt voordat de resultaten bekend waren, niet op de grootte van de fout.
- De steekproef komt van negen echte atleten plus mijzelf als coach, en beslaat parcoursen in Azië, Europa, Noord-Amerika en Oceanië. Bij geen enkele wedstrijd is het eigen bestand gebruikt om de CdA voor die wedstrijd te schatten.
- Het backtestscript en de resultatentabel worden in het project bewaard en bij elke upgrade van de engine opnieuw gedraaid. Veranderen de getallen, dan werk ik ze hier bij, samen met de reden.
De engine wordt met nieuwe ritbestanden verder getest.