Cycling race predictor · Tour of Guangxi

Stage 2 — 2026-10-14

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 144 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.03
hilly0.14
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 26.4%; Magnier Paul 16.2%; de Kleijn Arvid 8.0%; Meeus Jordi 5.8%; Molano Sebastian 4.2%

Alt: res_4

The other branch — a mountain day won from the escape
sprint0.00
mountain0.30
hilly0.06
rolling0.44
break0.20
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): Pidcock Tom 15.3%; Ayuso Juan 11.5%; Vauquelin Kévin 9.5%; Bisiaux Léo 2.9%; Van Wilder Ilan 2.3%

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 100%, Alt: res_4 75% — 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 Team26.4%0.8%n/a––
Magnier PaulSoudal Quick-Step16.2%0.7%n/a––
Pidcock TomPinarello-Q36.5 Pro Cycling Team1.3%15.3%n/a––
Ayuso JuanLidl-Trek0.0%11.5%n/a––
Vauquelin KévinNetcompany INEOS0.2%9.5%n/a––
de Kleijn ArvidTudor Pro Cycling Team8.0%0.2%n/a––
Meeus JordiRed Bull-BORA-hansgrohe5.8%0.3%n/a––
Molano SebastianUAE Team Emirates-XRG4.2%0.0%n/a––
Kanter MaxXDS Astana Team4.0%0.2%n/a––
van den Berg MarijnEF Education-EasyPost4.0%1.3%n/a––
Fretin MilanCofidis3.9%0.2%n/a––
Bisiaux LéoDecathlon CMA CGM Team0.0%2.9%n/a––
Van Wilder IlanSoudal Quick-Step0.0%2.3%n/a––
Blikra ErlendUno-X Mobility2.2%0.0%n/a––
Moschetti MatteoPinarello-Q36.5 Pro Cycling Team1.8%0.1%n/a––
Martinez DanielRed Bull-BORA-hansgrohe0.0%1.8%n/a––
Lamperti LukeEF Education-EasyPost1.8%0.5%n/a––
Eulalio AfonsoBahrain Victorious0.0%1.7%n/a––
Narvaez JhonnatanUAE Team Emirates-XRG0.1%1.7%n/a––
Pinarello AlessandroNSN Cycling Team0.0%1.7%n/a––
Groves KadenAlpecin-Premier Tech1.7%0.1%n/a––
Boichis AdrienRed Bull-BORA-hansgrohe0.2%1.7%n/a––
Barré LouisTeam Visma | Lease a Bike0.0%1.7%n/a––
Widar JarnoLotto-Intermarché0.0%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 Olav26.4%36.7%23.8%53.2%69.9%n/a
2Magnier Paul16.2%20.7%15.0%41.3%64.8%n/a
3de Kleijn Arvid8.0%3.4%9.2%16.4%40.5%n/a
4Meeus Jordi5.8%6.0%5.7%21.3%55.3%n/a
5Molano Sebastian4.2%2.8%4.6%11.4%36.6%n/a
6Kanter Max4.0%6.4%3.5%29.2%62.6%n/a
7van den Berg Marijn4.0%1.7%4.6%9.3%51.5%n/a
8Fretin Milan3.9%1.8%4.4%10.0%44.6%n/a
9Blikra Erlend2.2%1.4%2.4%8.3%42.0%n/a
10Moschetti Matteo1.8%1.0%2.1%7.3%38.9%n/a
11Lamperti Luke1.8%1.2%1.9%5.8%46.7%n/a
12Groves Kaden1.7%1.5%1.7%4.7%22.0%n/a
13Welsford Sam1.5%2.9%1.2%12.2%37.3%n/a
14Bol Cees1.5%1.0%1.6%5.6%32.5%n/a
15Kogut Oded1.5%1.2%1.5%6.9%40.2%n/a
16Biesterbos Frits1.4%1.1%1.5%3.8%54.4%n/a
17Milan Matteo1.3%0.9%1.4%3.9%42.8%n/a
18Pidcock Tom1.3%1.0%1.3%2.8%19.6%n/a
19Marit Arne1.0%0.3%1.2%4.4%42.3%n/a
20Miquel Delgado Pau0.9%0.8%0.9%3.7%44.0%n/a
21Donaldson Robert0.9%0.3%1.1%1.3%21.9%n/a
22Oliveira Rui0.9%0.6%0.9%2.0%24.8%n/a
23Einhorn Itamar0.8%0.3%1.0%4.7%36.8%n/a
24Jakobsen Fabio0.8%0.3%1.0%1.4%15.1%n/a
25Erzen Zak0.8%0.4%0.8%2.6%39.0%n/a
26Taminiaux Lionel0.4%0.2%0.5%1.0%18.6%n/a
27Gudmestad Tord0.4%0.2%0.5%1.5%19.1%n/a
28Vermeersch Florian0.3%0.2%0.3%1.4%11.2%n/a
29Gilmore Brady0.3%0.2%0.3%1.1%18.3%n/a
30Govekar Matevz0.2%0.2%0.3%2.0%33.1%n/a
The other branch — a mountain day won from the escape — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Pidcock Tom15.3%14.9%20.4%35.4%79.8%n/a
2Ayuso Juan11.5%12.8%15.0%31.3%72.3%n/a
3Vauquelin Kévin9.5%11.2%12.2%27.3%74.2%n/a
4Bisiaux Léo2.9%3.1%3.8%12.0%49.7%n/a
5Van Wilder Ilan2.3%1.8%3.1%8.6%44.7%n/a
6Martinez Daniel1.8%1.7%2.5%7.1%35.2%n/a
7Eulalio Afonso1.7%1.8%2.3%9.4%42.6%n/a
8Narvaez Jhonnatan1.7%1.8%2.3%11.2%46.4%n/a
9Pinarello Alessandro1.7%1.3%2.4%5.2%43.9%n/a
10Boichis Adrien1.7%1.3%2.4%4.5%29.1%n/a
11Barré Louis1.7%1.2%2.3%5.2%34.0%n/a
12Widar Jarno1.6%1.6%2.1%7.5%50.8%n/a
13Van Gils Maxim1.4%2.4%1.7%8.7%38.7%n/a
14Gilmore Brady1.4%3.0%1.4%7.2%26.9%n/a
15Honore Mikkel1.3%0.6%1.9%4.0%24.4%n/a
16van den Berg Marijn1.3%0.8%1.8%2.6%15.2%n/a
17Bagioli Andrea1.1%1.5%1.3%5.3%29.6%n/a
18Champoussin Clément0.9%1.3%1.1%6.0%42.2%n/a
19Braz Afonso Clément0.9%0.6%1.3%4.0%32.5%n/a
20Kooij Olav0.8%1.0%1.0%2.9%5.8%n/a
21Magnier Paul0.7%0.3%1.0%1.3%4.5%n/a
22Graat Tijmen0.5%0.2%0.8%1.6%29.1%n/a
23Lamperti Luke0.5%0.6%0.6%4.2%10.5%n/a
24Romo Javier0.4%0.3%0.6%2.4%18.7%n/a
25Lutsenko Alexey0.4%0.3%0.6%2.3%19.7%n/a
26Miquel Delgado Pau0.4%0.4%0.6%1.8%11.7%n/a
27Vermeersch Florian0.4%0.2%0.6%3.3%14.6%n/a
28Kragh Andersen Søren0.4%0.1%0.6%0.6%3.6%n/a
29Biesterbos Frits0.4%0.5%0.5%1.9%15.3%n/a
30Brenner Marco0.4%0.2%0.6%2.4%19.6%n/a

After the stage

Results

The stage hasn't been settled yet — this section fills in once the results capture runs after the finish.