Cycling race predictor · Vuelta a España 2026

Stage 17 — 2026-09-09

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

3 scenarios 149 riders priced models retrained d911de60f7 book snapshot markets_1734.json

The fork

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

Pure speed

The final gallop — the sprinters' last clean road
sprint1.00
mountain0.00
hilly0.00
rolling0.00
break0.00
TT0.00
keyed: bunch sprint (board order by rider-type retrieval; prices unchanged)
The base case and official key. This reuses the campaign's pure-speed anchor set because stage 16 validated it one day ago on essentially the same question: Brennan ranked first and won from a 102-rider group. The terrain is even cleaner here — no meaningful climb, a long flat approach, and several sprint teams with no later opportunity.
Top 5 (blend): Brennan Matthew 52.2%; Meeus Jordi 9.0%; van Aert Wout 6.1%; De Schuyteneer Steffen 2.1%; Coquard Bryan 2.0%

Wind-strung sprint

Wind strings the bunch — still a sprint, but from a thinner front
sprint0.52
mountain0.01
hilly0.46
rolling0.01
break0.00
TT0.00
keyed: bunch sprint 0.7 / survivor gallop 0.2 / split sprint 0.1 (board order by rider-type retrieval; prices unchanged)
The weather stress test. Strong westerly wind is forecast and the final corner at 1.2 km can stretch a tired field, so this board asks whether the same favourites reorder if only a reduced front reaches the sprint. It remains a sprint branch: there is no climb or late launchpad to justify an escape-family key.
Top 5 (blend): Brennan Matthew 50.1%; van Aert Wout 13.0%; Meeus Jordi 10.9%; Coquard Bryan 2.6%; De Schuyteneer Steffen 2.1%

Shortened drag race

Heat-shortened drag race — fresher legs, maximum speed
sprint0.90
mountain0.00
hilly0.00
rolling0.10
break0.00
TT0.00
keyed: bunch sprint (board order by rider-type retrieval; prices unchanged)
A route-change sensitivity, not a claim that shortening has occurred. Forecast heat has prompted discussion of cutting the stage toward roughly 100 km. If that happens, the family is still bunch but accumulated fatigue falls and the board should tilt as far toward raw speed as the model permits.
Top 5 (blend): Brennan Matthew 52.8%; Meeus Jordi 7.7%; van Aert Wout 6.0%; Coquard Bryan 2.2%; De Schuyteneer Steffen 2.1%

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 Pure speed 84%, Wind-strung sprint 95%, Shortened drag race 83% — 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.

RiderTeamPure speedWind-strung sprintShortened drag raceBook oddsBook devigMax edge
Brennan MatthewTeam Visma | Lease a Bike52.2%50.1%52.8%1.5045.0%+7.9pp
van Aert WoutTeam Visma | Lease a Bike6.1%13.0%6.0%12.005.6%+7.4pp
Meeus JordiRed Bull-BORA-hansgrohe9.0%10.9%7.7%7.009.6%+1.3pp
Coquard BryanCofidis2.0%2.6%2.2%8.008.4%-5.8pp
De Schuyteneer SteffenLotto-Intermarché2.1%2.1%2.1%81.000.8%+1.3pp
Dainese AlbertoSoudal Quick-Step1.2%0.6%0.9%34.002.0%-0.7pp
Hofstetter HugoNSN Cycling Team0.9%1.2%0.9%81.000.8%+0.3pp
Romele AlessandroXDS Astana Team0.7%1.1%0.7%41.001.6%-0.5pp
Cort MagnusUno-X Mobility0.5%1.1%0.5%19.003.5%-2.5pp
The final gallop — the sprinters' last clean road — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Brennan Matthew52.2%40.1%65.3%65.4%85.8%1.50
2Meeus Jordi9.0%9.6%10.6%36.3%79.3%7.00
3van Aert Wout6.1%5.7%7.4%27.4%66.6%12.00
4De Schuyteneer Steffen2.1%1.9%2.6%8.1%62.9%81.00
5Coquard Bryan2.0%3.3%2.0%9.2%81.8%8.00
6Dainese Alberto1.2%1.4%1.5%8.6%50.3%34.00
7Hofstetter Hugo0.9%1.2%1.1%8.3%79.9%81.00
8Brustenga Marc0.9%0.9%1.0%6.1%48.2%151.00
9Aular Orluis0.8%0.6%1.1%5.7%67.7%81.00
10Nys Thibau0.8%2.8%0.5%9.0%35.1%81.00
11Laurance Axel0.8%2.4%0.5%7.2%48.1%101.00
12Romele Alessandro0.7%1.6%0.6%7.9%60.5%41.00
13Tronchon Bastien0.6%1.5%0.5%6.9%61.5%67.00
14Braet Vito0.6%1.0%0.6%8.1%62.2%41.00
15Govekar Matevz0.6%1.3%0.5%7.3%50.3%151.00
16Miquel Delgado Pau0.6%1.3%0.5%4.6%50.8%151.00
17Macias Cesar0.5%0.9%0.5%7.2%65.9%201.00
18Cort Magnus0.5%1.4%0.3%7.5%55.3%19.00
19Renard Alexis0.3%1.0%0.2%4.4%46.2%151.00
20Albanese Vincenzo0.3%0.2%0.4%3.2%53.5%126.00
21Canal Carlos0.2%0.2%0.3%2.4%20.0%401.00
22Oliveira Ivo0.2%0.2%0.2%2.5%25.7%151.00
23Camprubí Marcel0.1%0.1%0.1%2.3%38.8%301.00
24Mulubrhan Henok0.1%0.1%0.1%1.2%17.5%251.00
25Hayter Ethan0.1%0.3%0.0%1.5%15.7%301.00
26Debruyne Ramses0.1%0.1%0.1%1.0%11.8%201.00
27Garofoli Gianmarco0.1%0.1%0.1%0.9%9.5%501.00
28Brenner Marco0.1%0.2%0.1%1.4%9.0%501.00
29Vader Milan0.1%0.1%0.1%0.7%18.8%601.00
30Fedorov Yevgeniy0.1%0.2%0.0%0.6%21.0%301.00
Wind strings the bunch — still a sprint, but from a thinner front — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Brennan Matthew50.1%37.4%55.9%63.1%84.2%1.50
2van Aert Wout13.0%10.4%14.4%42.9%72.6%12.00
3Meeus Jordi10.9%11.1%11.5%36.6%75.2%7.00
4Coquard Bryan2.6%4.8%2.2%12.3%77.7%8.00
5De Schuyteneer Steffen2.1%2.1%2.3%7.8%60.7%81.00
6Hofstetter Hugo1.2%1.6%1.1%8.1%71.6%81.00
7Romele Alessandro1.1%2.9%0.7%11.1%56.9%41.00
8Cort Magnus1.1%2.2%0.8%15.9%57.4%19.00
9Laurance Axel1.0%2.3%0.7%8.7%49.2%101.00
10Aular Orluis1.0%0.6%1.1%6.8%61.5%81.00
11Albanese Vincenzo1.0%1.5%0.9%8.9%62.2%126.00
12Nys Thibau0.9%2.5%0.6%8.8%47.3%81.00
13Govekar Matevz0.9%1.8%0.7%8.7%44.8%151.00
14Braet Vito0.8%1.4%0.7%9.9%59.0%41.00
15Tronchon Bastien0.8%1.9%0.5%7.6%54.5%67.00
16Dainese Alberto0.6%1.3%0.5%6.8%46.8%34.00
17Renard Alexis0.6%1.5%0.4%4.9%48.3%151.00
18Miquel Delgado Pau0.5%0.9%0.5%4.1%41.3%151.00
19Canal Carlos0.4%0.3%0.5%3.4%21.9%401.00
20Debruyne Ramses0.4%0.2%0.4%4.8%21.1%201.00
21Hayter Ethan0.3%1.1%0.1%2.3%12.2%301.00
22Brustenga Marc0.2%0.2%0.2%4.8%51.3%151.00
23Mulubrhan Henok0.2%0.2%0.2%1.8%20.6%251.00
24Fisher-Black Finn0.2%0.3%0.2%2.6%13.9%251.00
25Camprubí Marcel0.2%0.2%0.2%2.9%29.2%301.00
26Brenner Marco0.2%0.3%0.1%2.6%15.2%501.00
27Macias Cesar0.2%0.1%0.2%2.4%52.3%201.00
28Oliveira Ivo0.1%0.2%0.1%2.7%21.3%151.00
29Cobo Ivan0.1%0.2%0.1%1.6%12.6%501.00
30Garofoli Gianmarco0.1%0.1%0.1%1.1%16.2%501.00
Heat-shortened drag race — fresher legs, maximum speed — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Brennan Matthew52.8%38.9%67.0%65.1%86.1%1.50
2Meeus Jordi7.7%9.4%8.8%36.3%79.1%7.00
3van Aert Wout6.0%5.6%7.3%27.3%65.7%12.00
4Coquard Bryan2.2%3.5%2.3%9.9%78.9%8.00
5De Schuyteneer Steffen2.1%1.8%2.6%7.9%64.9%81.00
6Dainese Alberto0.9%1.4%1.0%8.7%50.1%34.00
7Hofstetter Hugo0.9%1.3%1.0%8.6%77.6%81.00
8Laurance Axel0.9%2.6%0.6%8.1%48.4%101.00
9Aular Orluis0.9%0.6%1.1%6.0%64.7%81.00
10Nys Thibau0.8%2.4%0.5%8.6%48.3%81.00
11Romele Alessandro0.7%1.8%0.5%7.3%57.9%41.00
12Govekar Matevz0.7%1.6%0.6%8.5%52.4%151.00
13Miquel Delgado Pau0.6%1.5%0.6%5.1%52.7%151.00
14Tronchon Bastien0.6%1.5%0.5%6.9%60.3%67.00
15Braet Vito0.6%1.0%0.6%8.3%61.2%41.00
16Cort Magnus0.5%1.4%0.4%8.2%54.7%19.00
17Macias Cesar0.5%0.9%0.5%6.8%66.4%201.00
18Brustenga Marc0.4%0.2%0.6%4.9%73.0%151.00
19Albanese Vincenzo0.4%0.3%0.5%3.4%50.7%126.00
20Renard Alexis0.3%1.1%0.2%4.3%46.5%151.00
21Canal Carlos0.2%0.2%0.3%2.4%17.3%401.00
22Oliveira Ivo0.2%0.3%0.2%2.7%23.0%151.00
23Camprubí Marcel0.1%0.2%0.2%2.3%36.0%301.00
24Mulubrhan Henok0.1%0.1%0.1%1.4%16.6%251.00
25Debruyne Ramses0.1%0.1%0.1%1.4%13.8%201.00
26Brenner Marco0.1%0.2%0.1%1.6%9.5%501.00
27Hayter Ethan0.1%0.3%0.1%1.5%15.6%301.00
28Garofoli Gianmarco0.1%0.1%0.1%0.9%8.8%501.00
29Küng Stefan0.1%0.2%0.1%0.6%7.9%301.00
30Vader Milan0.1%0.1%0.1%0.7%17.7%601.00

After the stage

Results — won by Brennan Matthew

PosRiderTeamPure speed win pWind-strung sprint win pShortened drag race win p
1Brennan MatthewTeam Visma | Lease a Bike52.2%50.1%52.8%
2Meeus JordiRed Bull-BORA-hansgrohe9.0%10.9%7.7%
3Cort MagnusUno-X Mobility0.5%1.1%0.5%
4Romele AlessandroXDS Astana Team0.7%1.1%0.7%
5De Schuyteneer SteffenLotto-Intermarché2.1%2.1%2.1%
6Laurance AxelNetcompany INEOS Cycling Team0.8%1.0%0.9%
7Miquel Delgado PauBahrain Victorious0.6%0.5%0.6%
8Macias CesarBurgos Burpellet BH0.5%0.2%0.5%
9Hofstetter HugoNSN Cycling Team0.9%1.2%0.9%
10Coquard BryanCofidis2.0%2.6%2.2%

Scenario scoring — probability given to the actual winner

ScenarioBlend win pBook devig
Pure speed52.16%44.96%
Wind-strung sprint50.11%44.96%
Shortened drag race52.82%44.96%