Cycling race predictor · Tour de Langkawi

Stage 7 — 2026-10-03

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 106 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.74
mountain0.01
hilly0.21
rolling0.01
break0.02
TT0.00
keyed: bunch sprint 0.8 / survivor gallop 0.1 / split sprint 0.1 (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): Malucelli Matteo 39.8%; Gaviria Fernando 14.8%; Syritsa Gleb 9.6%; Cavia Daniel 7.8%; Pickrell Riley 5.2%

Alt: res_3

The other branch — a reduced bunch sprint
sprint0.00
mountain0.22
hilly0.01
rolling0.54
break0.23
TT0.00
keyed: survivor gallop (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 (a sprint off a hard finale). It is priced as if that shape were certain, so the two boards bracket the read.
Top 5 (blend): Castellon Jan 8.6%; Cavia Daniel 6.3%; Jasch Lennart 5.8%; Breuillard Nicolas 5.7%; Malucelli Matteo 4.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 Main read 96%, Alt: res_3 73% — 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: res_3Book oddsBook devigMax edge
Malucelli MatteoXDS Astana Team39.8%4.7%n/a––
Gaviria FernandoCaja Rural-Seguros RGA14.8%1.9%n/a––
Syritsa GlebXDS Astana Team9.6%0.5%n/a––
Castellon JanCaja Rural-Seguros RGA0.1%8.6%n/a––
Cavia DanielBurgos Burpellet BH7.8%6.3%n/a––
Jasch LennartTudor Pro Cycling Team0.4%5.8%n/a––
Breuillard NicolasTeam TotalEnergies0.1%5.7%n/a––
Pickrell RileyModern Adventure Pro Cycling5.2%0.2%n/a––
Abdul Halil Mohamad Izzat HilmiMalaysia Pro Cycling2.9%0.2%n/a––
Christophersen Cedrik BakkeUnibet Rose Rockets0.1%2.8%n/a––
Aparicio MarioBurgos Burpellet BH0.0%2.5%n/a––
López MartinXDS Astana Team0.0%2.5%n/a––
Gutiérrez JorgeEquipo Kern Pharma0.1%2.2%n/a––
Diaz Jose ManuelBurgos Burpellet BH0.1%2.2%n/a––
Balderstone AbelCaja Rural-Seguros RGA0.0%2.2%n/a––
Gate AaronXDS Astana Team0.7%2.0%n/a––
Hoogendoorn RoyTeam Picnic PostNL1.6%0.8%n/a––
Rikunov PetrWheeltop Rotor Chengdu Team0.9%1.5%n/a––
Van Den Boer SeppeTudor Pro Cycling Team1.5%1.2%n/a––
de Bod StefanModern Adventure Pro Cycling0.1%1.3%n/a––
Huby Antoine7Eleven Cliqq Roadbike Philippines0.3%1.2%n/a––
Le Berre MathisTeam TotalEnergies0.6%1.2%n/a––
Álvarez RodrigoBurgos Burpellet BH1.2%1.1%n/a––
Herreño MartínBardiani-CSF 7 Saber0.0%1.1%n/a––
The main read — the day as the key says it goes — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Malucelli Matteo39.8%37.9%41.9%71.7%85.6%n/a
2Gaviria Fernando14.8%10.7%16.4%36.0%68.9%n/a
3Syritsa Gleb9.6%9.4%10.1%27.6%63.3%n/a
4Cavia Daniel7.8%6.1%8.6%21.2%74.0%n/a
5Pickrell Riley5.2%7.7%4.8%25.8%72.3%n/a
6Abdul Halil Mohamad Izzat Hilmi2.9%2.4%3.2%11.3%52.5%n/a
7Hoogendoorn Roy1.6%2.2%1.6%10.2%53.9%n/a
8Van Den Boer Seppe1.5%1.4%1.6%9.4%51.0%n/a
9Álvarez Rodrigo1.2%1.6%1.1%6.3%63.8%n/a
10Villar Iker1.0%2.7%0.6%9.2%56.9%n/a
11Rikunov Petr0.9%1.2%0.9%4.7%51.2%n/a
12Cettolin Filippo0.8%1.0%0.7%8.9%67.3%n/a
13McGill Scott0.7%1.1%0.6%5.4%44.0%n/a
14Delle Vedove Alessio0.7%0.8%0.7%4.6%41.9%n/a
15Gate Aaron0.7%0.5%0.7%3.0%20.5%n/a
16Mohd Nawawi Muhamad Iqbal Daniel0.6%0.9%0.5%5.4%41.0%n/a
17Le Berre Mathis0.6%0.4%0.6%5.9%40.8%n/a
18Oda Hijiri0.5%1.1%0.4%3.2%45.6%n/a
19Corkery Dillon0.5%1.0%0.3%4.3%35.6%n/a
20Jasch Lennart0.4%0.1%0.5%0.7%19.5%n/a
21Retegi Mikel0.4%0.3%0.4%1.5%33.3%n/a
22Meisa Ade0.3%0.9%0.2%5.4%39.3%n/a
23Huby Antoine0.3%0.4%0.3%1.3%24.4%n/a
24van Rees Christiaan0.3%0.9%0.1%4.9%36.8%n/a
25Townsend Rory0.3%0.3%0.2%2.2%23.2%n/a
26Meris Sergio0.1%0.2%0.1%0.8%9.6%n/a
27Gimeno Nil0.1%0.2%0.1%0.6%31.3%n/a
28Donzé Robin0.1%0.1%0.1%0.6%16.6%n/a
29Castellon Jan0.1%0.1%0.1%0.3%7.5%n/a
30Gonov Lev0.1%0.1%0.1%1.1%10.2%n/a
The other branch — a reduced bunch sprint — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Castellon Jan8.6%3.4%13.1%13.5%62.4%n/a
2Cavia Daniel6.3%5.4%8.9%16.7%42.5%n/a
3Jasch Lennart5.8%3.1%8.7%14.8%62.4%n/a
4Breuillard Nicolas5.7%3.7%8.4%11.7%47.0%n/a
5Malucelli Matteo4.7%11.1%4.8%23.7%34.1%n/a
6Christophersen Cedrik Bakke2.8%1.1%4.2%5.6%35.3%n/a
7Aparicio Mario2.5%2.5%3.4%6.6%28.6%n/a
8López Martin2.5%3.5%3.1%9.6%36.8%n/a
9Gutiérrez Jorge2.2%1.5%3.3%5.0%41.5%n/a
10Diaz Jose Manuel2.2%2.0%3.1%6.1%47.2%n/a
11Balderstone Abel2.2%2.3%2.9%6.8%42.8%n/a
12Gate Aaron2.0%2.5%2.6%7.9%29.1%n/a
13Gaviria Fernando1.9%2.3%2.5%7.1%16.7%n/a
14Rikunov Petr1.5%1.7%2.0%5.7%40.0%n/a
15de Bod Stefan1.3%1.8%1.6%4.8%26.5%n/a
16Huby Antoine1.2%1.4%1.6%5.1%36.5%n/a
17Van Den Boer Seppe1.2%1.1%1.7%4.2%23.2%n/a
18Le Berre Mathis1.2%3.1%1.2%9.6%48.3%n/a
19Herreño Martín1.1%1.8%1.3%5.3%31.7%n/a
20Álvarez Rodrigo1.1%1.3%1.4%4.7%35.8%n/a
21Covili Luca1.0%0.4%1.6%2.0%24.0%n/a
22Meris Sergio1.0%0.8%1.4%3.8%22.6%n/a
23Bregnhøj Mathias0.9%0.7%1.3%3.2%31.1%n/a
24Hoogendoorn Roy0.8%1.4%0.9%5.0%24.5%n/a
25Retegi Mikel0.6%0.3%1.0%2.5%20.6%n/a
26Stepanov Andrei0.5%0.4%0.8%1.8%12.8%n/a
27Syritsa Gleb0.5%1.0%0.6%4.5%13.5%n/a
28Haug Kieran0.5%0.8%0.6%1.7%25.5%n/a
29Donzé Robin0.4%0.2%0.6%1.7%17.7%n/a
30Arriola-Bengoa Julen0.4%0.3%0.6%1.5%12.2%n/a

After the stage

Results — won by Gimeno Nil

PosRiderTeamMain read win pAlt: res_3 win p
1Gimeno NilEquipo Kern Pharma0.1%0.3%
2Aparicio MarioBurgos Burpellet BH0.0%2.5%
3Stepanov AndreiWheeltop Rotor Chengdu Team0.1%0.5%
4van Engelen AdneTerengganu Cycling Team0.0%0.2%
5Pickrell RileyModern Adventure Pro Cycling5.2%0.2%
6Malucelli MatteoXDS Astana Team39.8%4.7%
7van Rees ChristiaanTeam Picnic PostNL0.3%0.1%
8Cettolin FilippoBardiani-CSF 7 Saber0.8%0.1%
9Van Den Boer SeppeTUDOR PRO CYCLING TEAM U231.5%1.2%
10Syritsa GlebXDS Astana Team9.6%0.5%

Scenario scoring — probability given to the actual winner

ScenarioBlend win pBook devig
Main read0.14%–
Alt: res_30.29%–