Cycling race predictor · Vuelta a España 2026

Stage 10 — 2026-09-01

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

4 scenarios 170 riders priced models retrained 8e63bf1bbe book snapshot markets_2104.json

The fork

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

Bunch sprint

The gallop — the hills are tempo and it comes back together
sprint1.00
mountain0.00
hilly0.00
rolling0.00
break0.00
TT0.00
keyed: bunch sprint 0.5 / survivor gallop 0.3 / split sprint 0.2 (board order by rider-type retrieval; prices unchanged)
The base case and the book's card, on the campaign's pure-speed anchor references. The sprinters have had two clean chances in nine days (Manosque went to a 41-man drag, Roquetes to an 89-rider bunch, Xeraco to a 148-rider mass sprint), and after a rest day the teams that brought Brennan, Pedersen, Meeus and Coquard have both the legs and the reason to control. The GC is 1:18 tight but that argues for a calm day, not a hard one.
Top 5 (blend): Brennan Matthew 51.6%; Meeus Jordi 8.2%; van Aert Wout 5.6%; De Schuyteneer Steffen 3.0%; Pedersen Mads 2.7%

Reduced sprint

The hills thin it — a reduced but still-sprinting bunch
sprint0.52
mountain0.01
hilly0.46
rolling0.01
break0.00
TT0.00
keyed: bunch sprint 0.5 / survivor gallop 0.3 / split sprint 0.2 (board order by rider-type retrieval; prices unchanged)
The middle case and the operator's read drawn properly. References are the campaign's lumpy-finale reduced-sprint archetype (sprint ~0.51, hilly ~0.46, breakaway ~0) — flat stages whose late lump thinned the bunch without truly selecting it. This is the branch that matches 'hilly sprint' in the menu's own vocabulary: the group comes under the 20% bar but the fastest man present still wins, which favours Brennan and Pedersen over the pure-speed specialists behind them.
Top 5 (blend): Brennan Matthew 55.6%; van Aert Wout 7.7%; Meeus Jordi 7.6%; Pedersen Mads 4.5%; Laporte Christophe 2.6%

Hills stick

The hills stick — the hard men get away and van Aert wins it
sprint0.06
mountain0.07
hilly0.83
rolling0.02
break0.01
TT0.00
keyed: bunch sprint 0.5 / survivor gallop 0.3 / split sprint 0.2 (board order by rider-type retrieval; prices unchanged)
The selective branch, drawn so it can be judged rather than dismissed. If Visma or Lidl-Trek ride the hills hard rather than tempo them, ten days into a Grand Tour and one day off the Aitana summit finish, the pure sprinters lose contact and the finish is contested by fast men who climb. Van Aert at 4.00 is the rider this branch is about — he was third at Aitana from the move, which is real form on a hard day.
Top 5 (blend): Brennan Matthew 40.0%; van Aert Wout 14.5%; Pedersen Mads 11.4%; Laporte Christophe 8.4%; Turner Ben 4.5%

Hindsight (post-hoc)

Hindsight (post-hoc) — the day as raced: a 68-rider group with the sprinters gone
sprint0.16
mountain0.04
hilly0.76
rolling0.03
break0.02
TT0.00
keyed: bunch sprint 0.6 / fast-finisher power day 0.4 (board order by rider-type retrieval; prices unchanged)
Post-race reconstruction, NOT a prediction — run with --no-log. Sixty-eight riders finished on Tronchon's time, 40% of the field, and yet the fastest men in the race were nowhere: Brennan 90th, Meeus 111th, Pedersen 163rd. References are WT days that finished with a comparable group (winner groups 58-67) on a hilly-over-sprint profile: Merlier's TdF 2025 stage 9, Philipsen's Vuelta 2025 stage 19, Meeus' Suisse 2025 stage 6, Pedersen's Giro 2025 stage 5, De Lie's Bretagne Classic 2025 — deliberately disjoint from every set used pre-race. The question is the one the day poses: with the SHAPE correctly identified as a big group, can any terrain reference recover the fact that the group would be made of Cort, Nys and Tronchon rather than Brennan, Meeus and Pedersen?
Top 5 (blend): Brennan Matthew 50.4%; van Aert Wout 10.4%; Pedersen Mads 7.1%; Meeus Jordi 5.6%; Laporte Christophe 4.9%

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 Bunch sprint 84%, Reduced sprint 96%, Hills stick 116%, Hindsight (post-hoc) 104% — 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.

RiderTeamBunch sprintReduced sprintHills stickHindsight (post-hoc)Book oddsBook devigMax edge
Brennan MatthewTeam Visma | Lease a Bike51.6%55.6%40.0%50.4%2.7524.7%+30.9pp
van Aert WoutTeam Visma | Lease a Bike5.6%7.7%14.5%10.4%4.0017.0%-2.5pp
Pedersen MadsLidl-Trek2.7%4.5%11.4%7.1%7.009.7%+1.7pp
Laporte ChristopheTeam Visma | Lease a Bike1.6%2.6%8.4%4.9%34.002.0%+6.4pp
Meeus JordiRed Bull-BORA-hansgrohe8.2%7.6%2.4%5.6%19.003.6%+4.6pp
Turner BenNetcompany INEOS1.3%2.2%4.5%3.0%34.002.0%+2.5pp
Laurance AxelNetcompany INEOS1.0%1.8%3.9%2.6%23.003.0%+0.9pp
De Schuyteneer SteffenLotto-Intermarché3.0%1.9%0.9%0.9%401.000.2%+2.8pp
Fisher-Black FinnRed Bull-BORA-hansgrohe0.0%0.2%2.6%1.3%67.001.0%+1.6pp
Dainese AlbertoSoudal Quick-Step1.5%1.4%0.3%0.5%301.000.2%+1.3pp
Canal CarlosMovistar Team0.3%0.4%1.5%0.9%401.000.2%+1.3pp
Onley OscarNetcompany INEOS0.0%0.1%1.2%0.6%301.000.2%+1.0pp
Hofstetter HugoNSN Cycling Team0.8%1.1%0.6%0.9%67.001.0%+0.1pp
Tulett BenTeam Visma | Lease a Bike0.1%0.2%1.1%0.5%201.000.3%+0.8pp
Aular OrluisMovistar Team0.4%0.5%1.0%0.5%81.000.8%+0.2pp
Miquel Delgado PauBahrain Victorious0.5%0.6%0.9%0.6%26.002.6%-1.8pp
Coquard BryanCofidis0.6%0.7%0.5%0.3%26.002.6%-1.9pp
Romele AlessandroXDS Astana Team0.0%0.0%0.1%0.0%26.002.6%-2.6pp
The gallop — the hills are tempo and it comes back together — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Brennan Matthew51.6%42.5%63.3%65.2%87.5%2.75
2Meeus Jordi8.2%10.9%9.1%36.6%78.2%19.00
3van Aert Wout5.6%5.1%6.7%20.8%58.8%4.00
4De Schuyteneer Steffen3.0%1.9%3.8%9.6%65.5%401.00
5Pedersen Mads2.7%3.4%3.0%14.1%64.0%7.00
6Laporte Christophe1.6%3.4%1.5%12.3%54.6%34.00
7Dainese Alberto1.5%1.6%1.8%9.2%56.8%301.00
8Turner Ben1.3%1.9%1.5%10.2%53.1%34.00
9Laurance Axel1.0%1.3%1.1%8.1%55.1%23.00
10Macias Cesar0.8%1.0%1.0%6.4%58.8%501.00
11Hofstetter Hugo0.8%1.0%0.9%6.9%78.7%67.00
12Brustenga Marc0.7%0.9%0.8%6.0%56.8%401.00
13Coquard Bryan0.6%0.6%0.7%5.6%84.8%26.00
14Govekar Matevz0.5%0.9%0.5%6.0%52.5%301.00
15Miquel Delgado Pau0.5%0.7%0.5%5.1%59.1%26.00
16Aular Orluis0.4%0.3%0.5%2.5%52.5%81.00
17González David0.4%0.7%0.3%4.4%45.5%251.00
18Renard Alexis0.3%0.7%0.2%4.2%49.9%401.00
19Canal Carlos0.3%0.4%0.3%1.8%21.8%401.00
20Oliveira Ivo0.3%0.3%0.3%3.4%21.4%51.00
21Braet Vito0.2%0.4%0.2%4.5%57.2%151.00
22Tronchon Bastien0.2%0.8%0.1%2.0%17.8%101.00
23Sentjens Sente0.1%0.1%0.2%1.5%25.1%251.00
24Cort Magnus0.1%0.3%0.1%0.8%10.6%51.00
25Camprubí Marcel0.1%0.2%0.1%1.3%10.7%151.00
26Garofoli Gianmarco0.1%0.1%0.1%0.9%11.0%401.00
27Albanese Vincenzo0.1%0.1%0.1%1.1%27.5%67.00
28Hayter Ethan0.1%0.2%0.1%1.7%15.6%301.00
29Brenner Marco0.1%0.1%0.1%1.2%7.5%201.00
30Nys Thibau0.1%0.1%0.1%1.2%15.9%51.00
The hills thin it — a reduced but still-sprinting bunch — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Brennan Matthew55.6%45.4%60.2%64.2%83.8%2.75
2van Aert Wout7.7%5.8%8.5%22.8%54.9%4.00
3Meeus Jordi7.6%10.8%7.1%35.0%77.7%19.00
4Pedersen Mads4.5%6.9%4.1%19.4%64.8%7.00
5Laporte Christophe2.6%4.0%2.3%12.5%51.5%34.00
6Turner Ben2.2%2.6%2.1%12.1%51.4%34.00
7De Schuyteneer Steffen1.9%1.9%2.0%7.9%49.0%401.00
8Laurance Axel1.8%2.5%1.6%11.1%58.6%23.00
9Dainese Alberto1.4%1.3%1.5%8.1%49.2%301.00
10Hofstetter Hugo1.1%1.5%1.1%8.4%69.5%67.00
11Govekar Matevz0.8%1.2%0.8%7.4%51.6%301.00
12Coquard Bryan0.7%0.8%0.8%5.3%54.6%26.00
13Miquel Delgado Pau0.6%1.0%0.6%7.4%55.0%26.00
14González David0.6%1.0%0.5%4.8%39.2%251.00
15Renard Alexis0.5%1.0%0.4%4.3%49.5%401.00
16Aular Orluis0.5%0.2%0.6%3.4%55.0%81.00
17Canal Carlos0.4%0.5%0.5%2.6%27.8%401.00
18Macias Cesar0.3%0.2%0.4%3.8%40.7%501.00
19Oliveira Ivo0.3%0.4%0.3%5.1%21.3%51.00
20Braet Vito0.3%0.6%0.2%5.0%58.0%151.00
21Brustenga Marc0.2%0.2%0.3%2.2%49.0%401.00
22Fisher-Black Finn0.2%0.4%0.2%3.5%14.1%67.00
23Tulett Ben0.2%0.6%0.1%2.6%13.2%201.00
24Mulubrhan Henok0.2%0.2%0.2%1.1%14.4%151.00
25Cort Magnus0.2%0.5%0.1%0.9%9.5%51.00
26Brenner Marco0.2%0.2%0.2%1.0%13.4%201.00
27Garofoli Gianmarco0.2%0.1%0.2%1.2%19.4%401.00
28Tronchon Bastien0.1%0.3%0.1%1.7%18.6%101.00
29Hayter Ethan0.1%0.3%0.1%3.4%16.6%301.00
30Sentjens Sente0.1%0.1%0.1%1.4%28.1%251.00
The hills stick — the hard men get away and van Aert wins it — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Brennan Matthew40.0%39.9%34.5%55.5%68.6%2.75
2van Aert Wout14.5%10.1%13.5%32.1%54.0%4.00
3Pedersen Mads11.4%14.5%9.1%28.9%53.1%7.00
4Laporte Christophe8.4%10.3%6.8%25.8%55.2%34.00
5Turner Ben4.5%4.3%3.9%15.8%36.3%34.00
6Laurance Axel3.9%4.5%3.2%17.7%55.1%23.00
7Fisher-Black Finn2.6%3.3%2.1%10.3%31.6%67.00
8Meeus Jordi2.4%3.7%1.8%15.6%34.9%19.00
9Canal Carlos1.5%1.0%1.4%4.9%27.7%401.00
10Onley Oscar1.2%0.3%1.3%1.7%24.4%301.00
11Tulett Ben1.1%1.3%0.9%7.0%23.7%201.00
12Aular Orluis1.0%1.5%0.7%6.4%29.8%81.00
13Johannessen Tobias Halland1.0%0.9%0.9%3.0%18.3%101.00
14De Schuyteneer Steffen0.9%1.3%0.7%4.9%19.8%401.00
15Renard Alexis0.9%1.1%0.7%3.8%22.1%401.00
16Miquel Delgado Pau0.9%1.3%0.6%7.7%36.5%26.00
17Skjelmose Mattias0.8%0.6%0.8%1.3%19.0%801.00
18Garofoli Gianmarco0.8%1.1%0.6%4.1%31.2%401.00
19Cobo Ivan0.7%0.5%0.7%2.7%27.5%601.00
20Roglic Primoz0.7%0.6%0.6%1.3%13.6%501.00
21Debruyne Ramses0.7%0.8%0.5%3.2%33.4%301.00
22Brenner Marco0.6%0.7%0.5%2.0%21.1%201.00
23Hofstetter Hugo0.6%1.1%0.4%5.4%34.0%67.00
24Berthet Clément0.6%0.2%0.6%1.5%15.8%n/a
25Carapaz Richard0.6%0.2%0.6%1.2%15.7%401.00
26Albanese Vincenzo0.5%1.1%0.3%6.9%35.6%67.00
27Kron Andreas0.5%0.1%0.5%1.3%12.0%34.00
28Mulubrhan Henok0.5%0.4%0.4%1.6%20.2%151.00
29Coquard Bryan0.5%0.3%0.4%3.5%29.5%26.00
30González David0.4%0.6%0.3%4.1%20.6%251.00
Hindsight (post-hoc) — the day as raced: a 68-rider group with the sprinters gone — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Brennan Matthew50.4%44.8%50.0%60.1%74.9%2.75
2van Aert Wout10.4%6.8%10.9%22.4%50.5%4.00
3Pedersen Mads7.1%8.8%6.4%23.5%59.9%7.00
4Meeus Jordi5.6%9.0%4.6%27.8%53.9%19.00
5Laporte Christophe4.9%6.4%4.3%19.8%53.3%34.00
6Turner Ben3.0%2.9%3.0%12.0%37.1%34.00
7Laurance Axel2.6%2.9%2.4%11.6%56.3%23.00
8Fisher-Black Finn1.3%2.1%1.1%7.8%29.0%67.00
9De Schuyteneer Steffen0.9%1.2%0.8%5.3%29.0%401.00
10Canal Carlos0.9%0.4%1.0%2.5%28.7%401.00
11Hofstetter Hugo0.9%1.6%0.7%8.2%48.7%67.00
12Renard Alexis0.8%1.2%0.6%4.9%33.3%401.00
13Miquel Delgado Pau0.6%1.1%0.5%6.9%44.2%26.00
14Onley Oscar0.6%0.2%0.6%1.2%16.4%301.00
15Johannessen Tobias Halland0.5%0.6%0.5%1.7%11.8%101.00
16Govekar Matevz0.5%0.9%0.4%4.6%26.7%301.00
17Tulett Ben0.5%0.6%0.5%3.5%19.9%201.00
18Dainese Alberto0.5%0.8%0.4%4.7%26.6%301.00
19Aular Orluis0.5%0.3%0.5%2.8%53.0%81.00
20Brenner Marco0.5%0.7%0.4%1.8%17.8%201.00
21González David0.5%0.8%0.4%4.4%29.7%251.00
22Cobo Ivan0.4%0.3%0.5%1.9%32.3%601.00
23Skjelmose Mattias0.4%0.4%0.4%0.8%13.3%801.00
24Debruyne Ramses0.4%0.6%0.3%2.2%25.3%301.00
25Albanese Vincenzo0.4%1.0%0.2%5.5%41.0%67.00
26Coquard Bryan0.3%0.4%0.3%3.6%43.8%26.00
27Mulubrhan Henok0.3%0.2%0.3%1.1%18.4%151.00
28Garofoli Gianmarco0.3%0.1%0.4%1.4%26.9%401.00
29Cort Magnus0.3%1.1%0.1%4.8%28.8%51.00
30Carapaz Richard0.3%0.1%0.3%0.7%11.7%401.00

After the stage

Results — won by Tronchon Bastien

PosRiderTeamBunch sprint win pReduced sprint win pHills stick win pHindsight (post-hoc) win p
1Tronchon BastienGroupama-FDJ United0.2%0.1%0.2%0.1%
2Cort MagnusUno-X Mobility0.1%0.2%0.2%0.3%
3Nys ThibauLidl-Trek0.1%0.1%0.1%0.1%
4van Aert WoutTeam Visma | Lease a Bike5.6%7.7%14.5%10.4%
5Romele AlessandroXDS Astana Team0.0%0.0%0.1%0.0%
6Azparren XabierPinarello-Q36.5 Pro Cycling Team0.0%0.0%0.0%0.0%
7Fisher-Black FinnRed Bull-BORA-hansgrohe0.0%0.2%2.6%1.3%
8Aular OrluisMovistar Team0.4%0.5%1.0%0.5%
9Labrosse JordanDecathlon CMA CGM Team0.0%0.1%0.2%0.1%
10Hofstetter HugoNSN Cycling Team0.8%1.1%0.6%0.9%

Scenario scoring — probability given to the actual winner

ScenarioBlend win pBook devig
Bunch sprint0.19%0.67%
Reduced sprint0.14%0.67%
Hills stick0.15%0.67%
Hindsight (post-hoc)0.13%0.67%

Reflection

What we make of it

Bastien Tronchon won from a 68-rider group — 40% of the field on the same time — with Cort 2nd, Nys 3rd and van Aert 4th, while the three fastest men in the race finished 90th, 111th and 163rd. The day key scored EXACT: keyed bunch at 0.50 against an oracle of `bunch`, with the winner group comfortably over the macro bar. The board was another matter entirely. 'Bunch sprint' had Brennan #1 at 63.3% against a book price of 24.7% and he came 90th; Meeus #2 finished 111th, Pedersen #5 finished 163rd. Only van Aert, #3 at 6.7% against a 17.0% book, was anywhere near right at 4th.

This is the exact mirror image of stage 2, and putting the two side by side is the most useful thing this race has produced about the menu's two axes. At Manosque the composition read was near-exact — realized shares sprint .40 / rolling .27 / hilly .13 / tt .13 against res_7's canonical .37/.21/.16 — and the SHAPE was wrong by four riders over the 20% bar, so the key scored zero while the board went 1-3-4-8 through its top seven. Here the shape was right and the COMPOSITION was wrong: realized shares came back sprint .40, mountain .20, time_trial .27, hilly .07 — a fast-finisher-power signature much closer to res_1 (.24/.21/.17/.17) than to anything a `bunch` key surfaces — so the key scored exact and the board was a disaster. The two axes are genuinely independent, this race has now produced a clean error of each type, and the tier-3 number captures only one of them. A key can be exact and the board still worthless.

The retrieval channel said so at the time, and we did not listen to it. Of the three boards, the one that retrieved best was `hills_stick` — the most selective read, 5 of the actual top 15 against production's 3 — while the base `bunch_sprint` board managed 2/15 against production's 2. The channel's ordering across the three scenarios was a live signal that the front group would not be a sprinters' group, and it pointed the right way before the stage. Running ledger: st2 −1, st4 level, st5 +1, st6 −1, st7 +3, st10 base level / selective +2.

A process failure worth recording plainly. This config was written on the rest day and its own note called the key PROVISIONAL, to be confirmed on Tuesday morning against the road book and a fresh odds capture before standing as the tier-3 archive entry. That confirmation never happened — the odds attached are the rest-day snapshot from 30 August, and no capture was taken on the morning of the stage. The key scored exact anyway, which is luck rather than vindication: the boards were run against two-day-old prices on a day when the market had moved. Any key written before the road book is available must be re-run in the morning, or it should not be treated as the archive entry.

Race context. Pogacar abandoned on stage 8 while leading by 3:34, so the Vuelta now has a real GC: Mas leads, Roglic at 1:18, Gall 1:39, Onley 2:20, Carapaz 3:26. That changes the incentive landscape the chase-incentive test depends on — for the first time this race there are four teams with something to defend and something to gain, which should make transitional stages more controlled and breakaway days harder to come by than they were while one rider had the race in hand.