Cycling race predictor · one-day race

Giro del Veneto awaiting the result

One day, one result: the production stack priced the whole field under 1 course reading, against the market's line where one was captured. A one-day race is its own best reference — the main reading is built from this race's own recent editions.

Raced 14 October 2026 1 reading 120 riders priced models retrained 72bc1bd857 market snapshot markets_1950.json

The fork

1 reading of the same road

Course profile is an input the model cannot see from a map — it is set from reference races. The main reading averages this race's own last editions, so the terrain and the kind of rider it selects come from the race's own history; any alternate reading swaps in an archetype set to ask what a different day would do to the same field.

Own history

Giro del Veneto on its own recent editions
sprint0.00
mountain0.15
hilly0.01
rolling0.68
break0.15
TT0.00
References: Giro del Veneto (2025); Giro del Veneto (2024); Giro del Veneto (2023); Giro del Veneto (2022); Giro del Veneto (2021)
The race read on its own recent history: the profile is the average of this race's last 5 editions, so the terrain and the kind of rider it selects come from the race itself rather than from an archetype.
Top 5 (blend): Grégoire Romain 13.4%; McNulty Brandon 10.5%; Scaroni Cristian 8.3%; Wellens Tim 6.1%; Hirschi Marc 5.1%

The board

Win probabilities across the heads

Blend is the production price (cascade × LambdaRank, DNF-adjusted at the pricing layer); Cascade and LambdaRank are the two underlying heads shown for the main reading. The market columns are the devigged win line, present as the information benchmark the model is scored against.

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 own history 100% — while the devigged market column sums to exactly 100%. Putting the two side by side flatters the model, and Max edge is inflated by about that factor. Of our heads only the LambdaRank one is natively book-preserving.

RiderTeamBlendCascadeLambdaRankMarket oddsMarket devigMax edge
Grégoire RomainGroupama-FDJ United13.4%21.1%11.4%n/a––
McNulty BrandonUAE Team Emirates-XRG10.5%20.0%8.1%8.008.2%+2.2pp
Scaroni CristianXDS Astana Team8.3%7.2%8.6%n/a––
Wellens TimUAE Team Emirates-XRG6.1%7.2%5.8%34.001.9%+4.2pp
Hirschi MarcTudor Pro Cycling Team5.1%2.7%5.7%29.002.3%+2.9pp
Rondel MathysTudor Pro Cycling Team4.5%1.5%5.3%81.000.8%+3.7pp
Vendrame AndreaTeam Jayco-AlUla4.0%3.1%4.3%19.003.5%+0.6pp
Cosnefroy BenoîtUAE Team Emirates-XRG3.9%5.1%3.6%3.5018.8%-14.9pp
Fancellu AlessandroMBH Bank Ballan Telecom Fort3.7%1.4%4.3%126.000.5%+3.2pp
Crescioli LudovicoTeam Polti VisitMalta3.1%1.4%3.5%67.001.0%+2.1pp
Ulissi DiegoXDS Astana Team2.5%1.8%2.7%67.001.0%+1.5pp
Dunbar EdwardPinarello-Q36.5 Pro Cycling Team2.0%0.8%2.3%n/a––
Adrià RogerMovistar Team1.9%1.4%2.0%15.004.4%-2.5pp
Morgado AntónioUAE Team Emirates-XRG1.5%3.3%1.1%81.000.8%+0.7pp
Pluimers RickTudor Pro Cycling Team1.4%1.9%1.3%21.003.1%-1.7pp
Teuns DylanCofidis1.4%1.5%1.3%201.000.3%+1.0pp
Charmig AnthonUno-X Mobility1.3%1.1%1.4%15.004.4%-3.1pp
Conci NicolaXDS Astana Team1.2%0.4%1.4%201.000.3%+0.8pp
Belletta DarioTeam Polti VisitMalta1.1%0.8%1.2%201.000.3%+0.8pp
Barrenetxea JonMovistar Team1.1%0.7%1.2%41.001.6%-0.5pp
Christen FabioPinarello-Q36.5 Pro Cycling Team1.1%0.5%1.3%81.000.8%+0.3pp
Baroncini FilippoUAE Team Emirates-XRG1.1%1.5%1.0%126.000.5%+0.6pp
Hermans QuintenPinarello-Q36.5 Pro Cycling Team0.9%0.8%0.9%26.002.5%-1.7pp
Velasco SimoneXDS Astana Team0.5%0.3%0.6%29.002.3%-1.8pp
Giro del Veneto on its own recent editions — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Market odds
1Grégoire Romain13.4%21.1%11.4%36.7%63.5%n/a
2McNulty Brandon10.5%20.0%8.1%33.0%56.9%8.00
3Scaroni Cristian8.3%7.2%8.6%21.6%59.5%n/a
4Wellens Tim6.1%7.2%5.8%18.7%54.1%34.00
5Hirschi Marc5.1%2.7%5.7%10.6%45.2%29.00
6Rondel Mathys4.5%1.5%5.3%9.8%42.3%81.00
7Vendrame Andrea4.0%3.1%4.3%11.7%45.7%19.00
8Cosnefroy Benoît3.9%5.1%3.6%15.2%47.4%3.50
9Fancellu Alessandro3.7%1.4%4.3%7.4%30.6%126.00
10Crescioli Ludovico3.1%1.4%3.5%8.2%43.7%67.00
11Ulissi Diego2.5%1.8%2.7%9.5%47.7%67.00
12Dunbar Edward2.0%0.8%2.3%5.0%23.4%n/a
13Adrià Roger1.9%1.4%2.0%7.7%35.0%15.00
14Morgado António1.5%3.3%1.1%11.7%38.4%81.00
15Pluimers Rick1.4%1.9%1.3%9.9%40.1%21.00
16Teuns Dylan1.4%1.5%1.3%4.1%29.0%201.00
17Charmig Anthon1.3%1.1%1.4%3.9%32.4%15.00
18Conci Nicola1.2%0.4%1.4%1.5%21.2%201.00
19Belletta Dario1.1%0.8%1.2%2.8%29.3%201.00
20Barrenetxea Jon1.1%0.7%1.2%3.5%44.6%41.00
21Christen Fabio1.1%0.5%1.3%3.3%31.1%81.00
22Baroncini Filippo1.1%1.5%1.0%6.3%24.6%126.00
23Turconi Filippo0.9%0.3%1.1%2.6%22.7%301.00
24Izquierdo Clement0.9%1.4%0.8%3.0%22.2%301.00
25Molenaar Alex0.9%0.7%0.9%3.1%27.8%101.00
26Hermans Quinten0.9%0.8%0.9%2.7%21.3%26.00
27Madouas Valentin0.8%0.7%0.8%2.4%27.5%151.00
28Tronchon Bastien0.7%0.4%0.8%4.3%25.7%81.00
29Trentin Matteo0.6%0.8%0.5%1.7%30.4%81.00
30Camprubí Marcel0.6%0.3%0.6%3.6%16.4%251.00

After the race

Result

The race hasn't been settled yet — this section fills in once the results archive lands under results/race/.