Cycling race predictor · Tour de Luxembourg

Stage 4 — 2026-09-19

The same production stack priced under 1 course readings, against the bookmaker's pre-stage line. Each scenario is one opinion about what kind of day this is; the results section settles the argument.

1 scenarios 95 riders priced models retrained 75c6e7af51 book snapshot no capture

The fork

1 readings of the same road

Course profile is an input the model can't see from a map — it's set from reference races (or overridden by hand). Different readings redistribute the same probability mass across rider types.

Hindsight (post-hoc)

Hindsight (post-hoc) — oracle-matched references
sprint0.00
mountain0.00
hilly0.00
rolling0.00
break0.00
TT1.00
keyed: time trial (board order by rider-type retrieval; prices unchanged)
RETROSPECTIVE ONLY — no pre-race prediction was made. This board uses the settled result as the oracle and the nearest historical realized race shapes. It is corpus completion, not evidence of forecasting skill.
Top 5 (blend): van der Poel Mathieu 23.4%; Johansen Julius 9.6%; Raccagni Noviero Andrea 7.3%; Politt Nils 6.5%; Piganzoli Davide 5.7%

The board

Win probabilities, scenario by scenario

Blend win probability per scenario (cascade × LambdaRank, DNF-adjusted at the pricing layer), next to the devigged Kambi (Unibet) win line captured the morning before the stage. "Max edge" compares the most favourable scenario against the book — treat it as scenario-conditional, not a free bet.

Read "Max edge" as directional, not as a price. The blend is a set of per-rider marginals and does not sum to one book — across this field each reading totals Hindsight (post-hoc) 94% — while the devigged book column sums to exactly 100%. Putting the two side by side flatters the model, and Max edge is inflated by about that factor: divide a rider's probability by his reading's total before calling anything an edge. Of our heads only the LambdaRank one is natively book-preserving.

RiderTeamHindsight (post-hoc)Book oddsBook devigMax edge
van der Poel MathieuAlpecin-Premier Tech23.4%n/a––
Johansen JuliusUAE Team Emirates-XRG9.6%n/a––
Raccagni Noviero AndreaSoudal Quick-Step7.3%n/a––
Politt NilsUAE Team Emirates-XRG6.5%n/a––
Piganzoli DavideTeam Visma | Lease a Bike5.7%n/a––
Thierry PierreTeam TotalEnergies5.4%n/a––
Kragh Andersen SørenLidl-Trek5.1%n/a––
Reinderink PepijnSoudal Quick-Step4.2%n/a––
Guernalec ThibaultTeam TotalEnergies3.4%n/a––
Gachignard ThomasTeam TotalEnergies2.8%n/a––
Gautherat PierreDecathlon CMA CGM Team2.3%n/a––
Paret-Peintre AurélienDecathlon CMA CGM Team2.1%n/a––
L'Hote AntoineDecathlon CMA CGM Team1.9%n/a––
Hagenes Per StrandTeam Visma | Lease a Bike1.8%n/a––
Lanhove MilanTeam Flanders-Baloise1.8%n/a––
Baroncini FilippoUAE Team Emirates-XRG1.4%n/a––
Hindsight (post-hoc) — oracle-matched references — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1van der Poel Mathieu23.4%32.9%22.5%57.7%83.8%n/a
2Johansen Julius9.6%8.8%10.4%22.5%76.1%n/a
3Raccagni Noviero Andrea7.3%5.5%8.3%18.5%74.9%n/a
4Politt Nils6.5%6.1%7.0%22.1%72.3%n/a
5Piganzoli Davide5.7%6.5%5.9%21.4%82.1%n/a
6Thierry Pierre5.4%3.5%6.2%14.1%60.9%n/a
7Kragh Andersen Søren5.1%2.9%5.9%19.0%70.3%n/a
8Reinderink Pepijn4.2%2.5%4.9%12.5%71.1%n/a
9Guernalec Thibault3.4%2.4%3.9%12.3%59.0%n/a
10Gachignard Thomas2.8%2.1%3.2%13.5%71.1%n/a
11Gautherat Pierre2.3%2.2%2.4%11.0%43.7%n/a
12Paret-Peintre Aurélien2.1%1.9%2.3%9.9%69.0%n/a
13L'Hote Antoine1.9%2.3%1.9%8.8%49.6%n/a
14Hagenes Per Strand1.8%1.7%1.9%7.0%37.5%n/a
15Lanhove Milan1.8%0.5%2.2%4.1%46.4%n/a
16Baroncini Filippo1.4%1.7%1.4%6.8%36.1%n/a
17Hayter Leo1.0%0.4%1.2%4.0%29.5%n/a
18Thonnon Senne0.6%0.2%0.8%1.6%34.8%n/a
19Honore Mikkel0.5%0.9%0.5%2.7%20.8%n/a
20van Baarle Dylan0.5%0.2%0.6%9.0%39.3%n/a
21Kockelmann Mathieu0.5%1.1%0.4%2.6%18.3%n/a
22Geoghegan Hart Tao0.5%0.2%0.6%2.5%30.5%n/a
23Walker Max0.5%0.4%0.5%1.0%24.0%n/a
24Stuyven Jasper0.4%0.3%0.5%1.5%19.7%n/a
25Servranckx Gauthier0.4%0.6%0.4%2.3%41.1%n/a
26van den Berg Marijn0.3%0.5%0.3%2.9%23.9%n/a
27Bagioli Andrea0.3%0.7%0.3%3.1%12.7%n/a
28Oomen Sam0.3%0.5%0.3%1.6%27.8%n/a
29Mollema Bauke0.3%0.2%0.3%1.6%10.2%n/a
30Breuillard Nicolas0.3%0.2%0.3%0.7%10.1%n/a

After the stage

Results — won by Piganzoli Davide

PosRiderTeamHindsight (post-hoc) win p
1Piganzoli DavideTeam Visma | Lease a Bike5.7%
2Raccagni Noviero AndreaSoudal Quick-Step7.3%
3Hayter LeoModern Adventure Pro Cycling1.0%
4Johansen JuliusUAE Team Emirates-XRG9.6%
5Kragh Andersen SørenLidl-Trek5.1%
6Paret-Peintre AurélienDecathlon CMA CGM Team2.1%
7Verstrynge EmielAlpecin-Premier Tech0.1%
8van Baarle DylanSoudal Quick-Step0.5%
9Heidemann MiguelREMBE | rad-net0.1%
10Guernalec ThibaultTeam TotalEnergies3.4%

Scenario scoring — probability given to the actual winner

ScenarioBlend win pBook devig
Hindsight (post-hoc)5.71%–