Cycling race predictor · Tour de Langkawi

Stage 5 — 2026-10-01

The same production stack priced under 2 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.

2 scenarios 109 riders priced models retrained 72bc1bd857 book snapshot no capture

The fork

2 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.

Main read

The main read — the day as the key says it goes
sprint0.01
mountain0.27
hilly0.32
rolling0.39
break0.01
TT0.00
keyed: hard puncheur day 0.4 / mountain escape 0.3 / GC day 0.2 (written by the automated reader, not by a person) (board order by rider-type retrieval; prices unchanged)
The main board. It inherits the config-root day key and is priced on the reference set that key selects.
Top 5 (blend): Castellon Jan 7.5%; Jasch Lennart 5.9%; Cavia Daniel 5.6%; Breuillard Nicolas 4.4%; Malucelli Matteo 3.8%

Alt: gc_day

The other branch — the classification men deciding it on the last climb
sprint0.00
mountain0.37
hilly0.00
rolling0.62
break0.01
TT0.00
keyed: GC day (written by the automated reader, not by a person) (board order by rider-type retrieval; prices unchanged)
The alternate branch, chosen by the driver because the day key carries weight in a second family (the macro read). It is priced as if that shape were certain, so the two boards bracket the read.
Top 5 (blend): Castellon Jan 13.7%; Breuillard Nicolas 7.8%; Jasch Lennart 5.3%; Aparicio Mario 3.2%; Cavia Daniel 3.2%

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 Main read 61%, Alt: gc_day 69% — 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.

RiderTeamMain readAlt: gc_dayBook oddsBook devigMax edge
Castellon JanCaja Rural-Seguros RGA7.5%13.7%n/a––
Breuillard NicolasTeam TotalEnergies4.4%7.8%n/a––
Jasch LennartTudor Pro Cycling Team5.9%5.3%n/a––
Cavia DanielBurgos Burpellet BH5.6%3.2%n/a––
Malucelli MatteoXDS Astana Team3.8%0.2%n/a––
Aparicio MarioBurgos Burpellet BH1.4%3.2%n/a––
Gaffuri MattiaTeam Picnic PostNL1.5%3.1%n/a––
López MartinXDS Astana Team1.5%3.1%n/a––
Christophersen Cedrik BakkeUnibet Rose Rockets2.3%3.0%n/a––
Balderstone AbelCaja Rural-Seguros RGA1.9%2.7%n/a––
Gutiérrez JorgeEquipo Kern Pharma1.4%2.7%n/a––
Diaz Jose ManuelBurgos Burpellet BH1.5%2.4%n/a––
Covili LucaBardiani-CSF 7 Saber1.1%1.8%n/a––
Rikunov PetrWheeltop Rotor Chengdu Team1.8%1.0%n/a––
Gaviria FernandoCaja Rural-Seguros RGA1.7%0.1%n/a––
Gate AaronXDS Astana Team1.3%1.3%n/a––
Huby Antoine7Eleven Cliqq Roadbike Philippines1.0%1.2%n/a––
de Bod StefanModern Adventure Pro Cycling0.8%1.2%n/a––
Herreño MartínBardiani-CSF 7 Saber0.8%1.1%n/a––
The main read — the day as the key says it goes — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Castellon Jan7.5%4.6%13.1%18.5%71.7%n/a
2Jasch Lennart5.9%4.3%10.0%18.5%67.7%n/a
3Cavia Daniel5.6%4.8%9.3%14.4%33.5%n/a
4Breuillard Nicolas4.4%3.3%7.4%11.3%52.1%n/a
5Malucelli Matteo3.8%8.4%5.1%16.2%24.6%n/a
6Christophersen Cedrik Bakke2.3%1.0%4.1%6.5%49.7%n/a
7Balderstone Abel1.9%3.4%2.8%9.5%58.2%n/a
8Rikunov Petr1.8%1.6%3.0%6.8%41.3%n/a
9Gaviria Fernando1.7%1.2%3.0%5.9%13.2%n/a
10Gaffuri Mattia1.5%1.6%2.4%5.4%50.8%n/a
11López Martin1.5%2.6%2.1%7.9%39.1%n/a
12Diaz Jose Manuel1.5%1.5%2.4%6.1%52.5%n/a
13Aparicio Mario1.4%1.1%2.4%2.7%16.8%n/a
14Gutiérrez Jorge1.4%1.8%2.3%5.0%45.7%n/a
15Gate Aaron1.3%1.0%2.1%3.5%15.6%n/a
16Covili Luca1.1%1.1%1.9%3.9%47.9%n/a
17Huby Antoine1.0%1.5%1.6%4.6%38.5%n/a
18Van Den Boer Seppe0.9%0.6%1.6%3.8%10.5%n/a
19Le Berre Mathis0.9%1.0%1.4%9.0%45.0%n/a
20Retegi Mikel0.8%1.2%1.3%4.1%37.6%n/a
21Herreño Martín0.8%1.7%1.1%4.4%45.3%n/a
22de Bod Stefan0.8%1.1%1.2%3.4%35.2%n/a
23Meris Sergio0.7%0.6%1.2%2.7%24.1%n/a
24Álvarez Rodrigo0.7%0.2%1.2%4.0%20.2%n/a
25Donzé Robin0.7%0.8%1.1%2.1%33.9%n/a
26Syritsa Gleb0.6%0.1%1.1%1.5%5.0%n/a
27Augé Ronan0.5%0.2%0.9%2.6%8.7%n/a
28Bregnhøj Mathias0.5%0.4%0.8%2.4%34.4%n/a
29Stepanov Andrei0.4%0.3%0.7%1.4%12.7%n/a
30Gimeno Nil0.4%0.3%0.6%1.3%28.0%n/a
The other branch — the classification men deciding it on the last climb — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Castellon Jan13.7%8.6%21.1%28.5%87.2%n/a
2Breuillard Nicolas7.8%6.5%11.7%17.9%58.5%n/a
3Jasch Lennart5.3%5.6%7.7%23.8%82.8%n/a
4Aparicio Mario3.2%2.0%5.0%6.9%39.5%n/a
5Cavia Daniel3.2%3.2%4.7%6.4%16.1%n/a
6Gaffuri Mattia3.1%3.8%4.4%13.3%81.4%n/a
7López Martin3.1%5.1%4.0%14.8%56.4%n/a
8Christophersen Cedrik Bakke3.0%2.0%4.6%10.1%73.1%n/a
9Balderstone Abel2.7%4.3%3.6%13.9%76.7%n/a
10Gutiérrez Jorge2.7%2.6%3.9%8.6%64.1%n/a
11Diaz Jose Manuel2.4%3.3%3.3%11.8%76.6%n/a
12Covili Luca1.8%1.2%2.8%5.5%58.0%n/a
13Gate Aaron1.3%0.9%2.0%2.0%10.3%n/a
14Huby Antoine1.2%1.6%1.7%5.1%39.2%n/a
15de Bod Stefan1.2%1.3%1.7%5.1%43.6%n/a
16Herreño Martín1.1%2.2%1.4%6.3%59.0%n/a
17Rikunov Petr1.0%0.3%1.7%2.3%27.2%n/a
18Bregnhøj Mathias0.9%1.8%1.2%6.3%59.9%n/a
19Meris Sergio0.8%0.7%1.1%3.6%20.1%n/a
20Le Berre Mathis0.7%2.4%0.6%8.6%51.2%n/a
21Van Den Boer Seppe0.5%0.3%0.7%2.0%5.4%n/a
22Haug Kieran0.4%0.7%0.6%2.1%40.9%n/a
23Stepanov Andrei0.4%0.5%0.6%1.6%12.3%n/a
24Cruz Martínez Edward0.4%0.7%0.4%2.4%10.8%n/a
25Burnett Josh0.3%0.6%0.4%1.9%26.9%n/a
26Caicedo Jonathan0.3%0.4%0.4%1.1%16.0%n/a
27Arriola-Bengoa Julen0.3%0.3%0.5%0.8%8.1%n/a
28Whitehouse Daniel0.3%0.2%0.4%1.2%13.3%n/a
29Retegi Mikel0.3%0.2%0.4%1.7%13.6%n/a
30Álvarez Rodrigo0.3%0.2%0.4%1.1%5.8%n/a

After the stage

Results — won by Breuillard Nicolas

PosRiderTeamMain read win pAlt: gc_day win p
1Breuillard NicolasTeam TotalEnergies4.4%7.8%
2Burnett JoshBurgos Burpellet BH0.3%0.3%
3Jasch LennartTUDOR PRO CYCLING TEAM5.9%5.3%
4Castellon JanCaja Rural-Seguros RGA7.5%13.7%
5Diaz Jose ManuelBurgos Burpellet BH1.5%2.4%
6Balderstone AbelCaja Rural-Seguros RGA1.9%2.7%
7Gutiérrez JorgeEquipo Kern Pharma1.4%2.7%
8Fougner Eivind BroholtUnibet Rose Rockets0.1%0.3%
9Bregnhøj MathiasTerengganu Cycling Team0.5%0.9%
10Arriola-Bengoa JulenCaja Rural-Seguros RGA0.3%0.3%

Scenario scoring — probability given to the actual winner

ScenarioBlend win pBook devig
Main read4.37%–
Alt: gc_day7.80%–