Cycling race predictor · Tour of Guangxi

Stage 1 — 2026-10-13

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 151 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.82
mountain0.01
hilly0.16
rolling0.00
break0.00
TT0.00
keyed: bunch sprint 0.7 / hard puncheur day 0.3 (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): Kooij Olav 28.0%; Magnier Paul 18.1%; de Kleijn Arvid 9.1%; Meeus Jordi 5.5%; Molano Sebastian 4.4%

Alt: res_4

The other branch — a mountain day won from the escape
sprint0.00
mountain0.51
hilly0.00
rolling0.49
break0.00
TT0.00
keyed: hard puncheur 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 escape). It is priced as if that shape were certain, so the two boards bracket the read.
Top 5 (blend): Ayuso Juan 14.2%; Pidcock Tom 9.7%; Vauquelin Kévin 6.7%; Bisiaux Léo 4.3%; August AJ 3.8%

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 106%, Alt: res_4 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_4Book oddsBook devigMax edge
Kooij OlavDecathlon CMA CGM Team28.0%0.1%n/a––
Magnier PaulSoudal Quick-Step18.1%0.1%n/a––
Ayuso JuanLidl-Trek0.0%14.2%n/a––
Pidcock TomPinarello-Q36.5 Pro Cycling Team1.2%9.7%n/a––
de Kleijn ArvidTudor Pro Cycling Team9.1%0.0%n/a––
Vauquelin KévinNetcompany INEOS0.2%6.7%n/a––
Meeus JordiRed Bull-BORA-hansgrohe5.5%0.1%n/a––
Molano SebastianUAE Team Emirates-XRG4.4%0.0%n/a––
Bisiaux LéoDecathlon CMA CGM Team0.0%4.3%n/a––
Fretin MilanCofidis4.1%0.0%n/a––
van den Berg MarijnEF Education-EasyPost3.9%0.5%n/a––
Kanter MaxXDS Astana Team3.8%0.0%n/a––
August AJNetcompany INEOS0.0%3.8%n/a––
Van Wilder IlanSoudal Quick-Step0.0%2.5%n/a––
Martinez DanielRed Bull-BORA-hansgrohe0.0%2.3%n/a––
Blikra ErlendUno-X Mobility2.3%0.0%n/a––
Eulalio AfonsoBahrain Victorious0.0%2.1%n/a––
Widar JarnoLotto-Intermarché0.0%2.1%n/a––
Moschetti MatteoPinarello-Q36.5 Pro Cycling Team2.1%0.0%n/a––
Lamperti LukeEF Education-EasyPost2.0%0.2%n/a––
Groves KadenAlpecin-Premier Tech1.9%0.0%n/a––
Narvaez JhonnatanUAE Team Emirates-XRG0.1%1.8%n/a––
Barré LouisTeam Visma | Lease a Bike0.0%1.7%n/a––
Honore MikkelEF Education-EasyPost0.1%1.6%n/a––
The main read — the day as the key says it goes — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Kooij Olav28.0%38.8%23.7%55.1%72.2%n/a
2Magnier Paul18.1%25.5%15.2%48.6%72.0%n/a
3de Kleijn Arvid9.1%6.3%9.3%20.3%43.6%n/a
4Meeus Jordi5.5%5.1%5.3%19.2%54.9%n/a
5Molano Sebastian4.4%3.1%4.5%13.5%41.6%n/a
6Fretin Milan4.1%2.3%4.3%11.3%49.9%n/a
7van den Berg Marijn3.9%1.6%4.3%8.5%52.5%n/a
8Kanter Max3.8%4.4%3.5%19.2%51.5%n/a
9Blikra Erlend2.3%1.2%2.5%6.9%33.5%n/a
10Moschetti Matteo2.1%1.4%2.1%9.7%45.6%n/a
11Lamperti Luke2.0%1.1%2.1%5.2%38.2%n/a
12Groves Kaden1.9%1.4%1.9%5.5%24.8%n/a
13Kogut Oded1.5%1.0%1.6%5.9%36.6%n/a
14Biesterbos Frits1.5%1.0%1.5%3.2%49.0%n/a
15Milan Matteo1.5%1.1%1.5%6.8%40.3%n/a
16Bol Cees1.4%0.9%1.5%4.8%29.9%n/a
17Welsford Sam1.3%1.6%1.2%8.2%29.5%n/a
18Pidcock Tom1.2%0.7%1.3%2.2%21.1%n/a
19Jakobsen Fabio1.1%1.3%1.0%2.6%18.6%n/a
20Marit Arne1.0%0.4%1.1%4.1%49.1%n/a
21Donaldson Robert0.9%0.3%1.0%1.3%24.2%n/a
22Miquel Delgado Pau0.9%0.4%0.9%2.2%36.2%n/a
23Einhorn Itamar0.8%0.2%0.9%4.4%38.3%n/a
24Oliveira Rui0.8%0.5%0.9%2.0%27.4%n/a
25Erzen Zak0.8%0.4%0.8%1.8%38.6%n/a
26Pluimers Rick0.7%0.3%0.8%1.8%30.7%n/a
27Taminiaux Lionel0.5%0.2%0.5%0.6%10.9%n/a
28Gudmestad Tord0.4%0.2%0.5%1.3%22.2%n/a
29Gilmore Brady0.3%0.2%0.3%0.9%16.4%n/a
30Govekar Matevz0.3%0.2%0.3%1.6%23.1%n/a
The other branch — a mountain day won from the escape — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Ayuso Juan14.2%17.5%18.6%38.8%77.2%n/a
2Pidcock Tom9.7%5.5%14.3%20.2%66.1%n/a
3Vauquelin Kévin6.7%7.0%9.1%18.7%52.4%n/a
4Bisiaux Léo4.3%7.0%5.2%20.7%58.4%n/a
5August AJ3.8%4.1%5.2%14.5%45.3%n/a
6Van Wilder Ilan2.5%2.0%3.6%9.3%43.4%n/a
7Martinez Daniel2.3%2.0%3.3%12.0%36.0%n/a
8Eulalio Afonso2.1%2.3%2.8%11.1%43.1%n/a
9Widar Jarno2.1%2.3%2.8%8.9%51.7%n/a
10Narvaez Jhonnatan1.8%1.8%2.4%9.3%31.6%n/a
11Barré Louis1.7%1.2%2.5%6.4%28.1%n/a
12Honore Mikkel1.6%1.0%2.4%3.6%21.9%n/a
13Van Gils Maxim1.6%2.4%1.9%8.5%29.6%n/a
14Pinarello Alessandro1.5%1.1%2.1%4.5%32.0%n/a
15Boichis Adrien1.1%0.6%1.6%8.2%25.6%n/a
16Bagioli Andrea0.9%1.2%1.1%4.9%27.9%n/a
17Braz Afonso Clément0.8%0.7%1.2%3.9%35.7%n/a
18Champoussin Clément0.8%1.2%1.0%3.9%30.3%n/a
19Romo Javier0.8%1.4%1.0%5.1%31.7%n/a
20Graat Tijmen0.7%0.3%1.0%1.2%23.0%n/a
21Soler Marc0.6%0.7%0.8%4.0%31.3%n/a
22Meehan Jamie0.6%0.3%0.9%1.4%16.6%n/a
23Gilmore Brady0.5%0.3%0.8%1.1%8.1%n/a
24van den Berg Marijn0.5%0.3%0.8%1.3%7.7%n/a
25Kragh Andersen Søren0.5%0.3%0.7%1.4%7.3%n/a
26Powless Neilson0.5%1.0%0.5%2.1%15.3%n/a
27Schiffer Anton0.4%0.1%0.7%1.3%13.0%n/a
28Lutsenko Alexey0.4%0.4%0.6%1.9%16.3%n/a
29Brenner Marco0.4%0.2%0.6%2.4%16.2%n/a
30Cras Steff0.4%0.2%0.6%0.9%20.9%n/a

After the stage

Results — won by Magnier Paul

PosRiderTeamMain read win pAlt: res_4 win p
1Magnier PaulSoudal Quick-Step18.1%0.1%
2Welsford SamNetcompany INEOS1.3%0.0%
3Kanter MaxXDS Astana Team3.8%0.0%
4Kogut OdedNSN Cycling Team1.5%0.0%
5de Kleijn ArvidTudor Pro Cycling Team9.1%0.0%
6Milan MatteoGroupama-FDJ United1.5%0.0%
7Blikra ErlendUno-X Mobility2.3%0.0%
8Lamperti LukeEF Education-EasyPost2.0%0.2%
9Taminiaux LionelLotto-Intermarché0.5%0.0%
10Einhorn ItamarNSN Cycling Team0.8%0.0%

Scenario scoring — probability given to the actual winner

ScenarioBlend win pBook devig
Main read18.12%–
Alt: res_40.14%–