Cycling race predictor · Vuelta a España 2026

Stage 12 — 2026-09-03

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 166 riders priced models retrained 8e63bf1bbe book snapshot markets_1748.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.

Mountain break

The break survives — 4,568 m of launchpad and a finish that punishes chasing
sprint0.00
mountain0.50
hilly0.00
rolling0.49
break0.01
TT0.00
keyed: mountain escape 0.6 / GC day 0.5 (board order by rider-type retrieval; prices unchanged)
The base case and the market's card. Climbing from km 7.7 on the biggest vertical day left in the race is the ideal shape for a large, strong escape to take a lead nobody can be bothered to close, and the last climb's irregular upper half is a poor tool for closing one. References are the canonical mountain-escape days (mountain 0.47-0.52 over rolling, winner groups of 1 to 4): Carapaz's TdF 2026 stage 18, Soler's Vuelta 2025 stage 14, Barre's Pologne 2026 stage 6, van der Poel's TdF 2026 stage 9, Narvaez's Giro 2026 stage 11. The conditional pool cuts the GC top 10 — everyone inside 8:05, through Omrzel — which is the oracle's own frame and frees the entire book card: Johannessen (24th, +32:14), Buitrago (26th), Sivakov (28th), Dunbar (46th), Paret-Peintre (49th), Fortunato (83rd) and Vine (95th), plus Debruyne (18th), Zana (19th), Widar (12th) and Cristian Rodriguez (13th).
Top 5 if the break wins (top 10 on GC removed): Vine Jay 7.3%; Johannessen Tobias Halland 7.3%; Romeo Ivan 4.2%; Rodriguez Carlos 3.9%; Bisiaux Léo 3.8%

GC battle

The GC group settles it — four teams with a claim and one obliged to defend
sprint0.00
mountain0.44
hilly0.00
rolling0.55
break0.01
TT0.00
keyed: GC day 0.9 / mountain escape 0.1 (board order by rider-type retrieval; prices unchanged)
The counter-read, and stronger than it has been at any point of this race. Velefique at 7.2% with double-digit ramps at its base comes immediately before the finale, so riders can arrive at the foot of Calar Alto already isolated; with Mas only 1:18 up on Roglic and 2:20 on Onley, Red Bull, Decathlon, INEOS and EF all have reason to make that happen rather than wait. References are hard Grand Tour and WT mountain days won by a GC leader from a group of two (mountain 0.41-0.49 over rolling): Pogacar's Peyragudes 2022, Vingegaard's TdF 2024 stage 11, Roglic's Angliru 2023, Almeida's Vuelta 2025 stage 13, Roglic's Dauphine 2024 stage 7. Note the oracle's second route to a gc_day label — the front-5 median — fires here even if a breakaway rider takes the win, provided the GC men fill the places behind him.
Top 5 (blend): Roglic Primoz 13.2%; Gall Felix 13.1%; Onley Oscar 9.6%; Mas Enric 7.5%; Carapaz Richard 4.7%

Irregular top

No explosion — the false flats bring a group to the line together
sprint0.00
mountain0.49
hilly0.00
rolling0.51
break0.01
TT0.00
keyed: GC day 0.4 / mountain escape 0.4 / rouleur power group 0.2 (board order by rider-type retrieval; prices unchanged)
The specific mechanism the parcours suggests and neither other board draws. A climb that is brutal for six kilometres and then irregular for ten is the classic shape for a selection that forms early and then STOPS selecting: attacks get reeled in on the false flats, descents let dropped riders return, and four or five arrive together rather than one alone. References are hard mountain days that finished with a group of four or five rather than a solo: Bilbao's TdF 2023 stage 10, Roglic's Tirreno 2023 stage 6, Pogacar's TdF 2020 stage 9, Pogacar's TdF 2023 stage 20, van der Poel's TdF 2026 stage 9. Its key carries a res_6 component — the rouleur-power item whose modal winners are time-trial-shaped engines — because a finish with flat and descending sections rewards the biggest engine among the survivors rather than the purest climber.
Top 5 (blend): Gall Felix 8.7%; Roglic Primoz 7.2%; Onley Oscar 6.1%; Mas Enric 4.0%; Carapaz Richard 3.2%

Hindsight (post-hoc)

Hindsight (post-hoc) — the day as raced: a solo from the escape, the GC group three minutes back
sprint0.00
mountain0.46
hilly0.00
rolling0.53
break0.01
TT0.00
keyed: mountain escape (board order by rider-type retrieval; prices unchanged)
Post-race reconstruction, NOT a prediction — run with --no-log. Omrzel won alone with Berrade at 1:56 and Buitrago at 2:13, and the first GC rider, Mas, was 6th at 2:56. References are WT mountain days won SOLO with second place 92-130 seconds back (mountain 0.44-0.48 over rolling): Adam Yates' Vuelta 2024 stage 9, Padun's Dauphine 2021 stage 8, Evenepoel's Pologne 2020 stage 4, Harper's Giro 2025 stage 20, Poels' TdF 2023 stage 15 — a set chosen to be disjoint from the stage-7 hindsight. The question: the pre-race boards had Omrzel at #23-25 and Berrade at #57-62, so does a profile built from days the escape actually won recover either of them, or is this the same break-membership wall as Valdelinares?
Top 5 (blend): Roglic Primoz 11.6%; Gall Felix 10.6%; Onley Oscar 8.7%; Mas Enric 7.0%; Skjelmose Mattias 3.2%

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 GC battle 95%, Irregular top 68%, Hindsight (post-hoc) 81% — 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.

RiderTeamMountain breakGC battleIrregular topHindsight (post-hoc)Book oddsBook devigMax edge
Roglic PrimozRed Bull-BORA-hansgrohe–13.2%7.2%11.6%19.003.4%+9.7pp
Gall FelixDecathlon CMA CGM Team–13.1%8.7%10.6%6.5010.1%+3.0pp
Onley OscarNetcompany INEOS–9.6%6.1%8.7%11.006.0%+3.7pp
Mas EnricMovistar Team–7.5%4.0%7.0%6.5010.1%-2.6pp
Carapaz RichardEF Education-EasyPost–4.7%3.2%3.1%23.002.8%+1.8pp
Skjelmose MattiasLidl-Trek–3.4%1.8%3.2%34.001.9%+1.4pp
Vine JayUAE Team Emirates-XRG7.3%2.9%2.3%2.5%12.005.5%-2.5pp
Almeida JoaoUAE Team Emirates-XRG3.3%2.8%1.1%1.2%81.000.8%+2.0pp
Romeo IvanMovistar Team4.2%2.6%1.4%2.1%501.000.1%+2.5pp
Johannessen Tobias HallandUno-X Mobility7.3%2.5%2.2%2.4%8.008.2%-5.7pp
Kuss SeppTeam Visma | Lease a Bike–2.2%1.4%1.7%41.001.6%+0.6pp
Riccitello MatthewDecathlon CMA CGM Team3.8%1.7%1.2%1.4%81.000.8%+0.9pp
Nordhagen JørgenTeam Visma | Lease a Bike3.8%1.6%1.4%1.6%151.000.4%+1.2pp
Widar JarnoLotto-Intermarché3.5%1.4%1.3%1.6%19.003.4%-1.9pp
Tejada HaroldXDS Astana Team–1.5%1.5%1.2%51.001.3%+0.3pp
Bisiaux LéoDecathlon CMA CGM Team3.8%1.4%1.4%1.2%67.001.0%+0.4pp
Rodriguez CarlosNetcompany INEOS3.9%1.3%1.1%1.1%81.000.8%+0.5pp
Bilbao PelloBahrain Victorious3.6%1.1%1.0%1.1%126.000.5%+0.6pp
Buitrago SantiagoBahrain Victorious3.0%1.1%1.0%1.0%11.006.0%-4.9pp
Berthet ClémentGroupama-FDJ United3.0%1.1%1.0%1.0%81.000.8%+0.3pp
Tulett BenTeam Visma | Lease a Bike2.6%1.0%1.0%1.0%251.000.3%+0.7pp
Fortunato LorenzoXDS Astana Team2.6%1.0%0.9%0.8%21.003.1%-2.1pp
Rodriguez CristianXDS Astana Team1.3%0.3%0.4%0.3%21.003.1%-2.7pp
Debruyne RamsesAlpecin-Premier Tech0.8%0.2%0.2%0.2%17.003.9%-3.6pp
Mountain break is shown conditional on the break winning — the top 10 riders on actual GC are removed and the remaining probabilities renormalize within the break pool. That column isn't comparable with the book line or the other readings, so it's left out of Max edge; a "–" means a GC captain we assume won't be up the road.
The break survives — 4,568 m of launchpad and a finish that punishes chasing — top 30, all heads · top 10 on GC removed
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Vine Jay2.5%3.4%3.8%6.4%14.2%12.00
2Johannessen Tobias Halland2.5%1.6%4.2%7.2%30.8%8.00
3Romeo Ivan1.4%2.3%2.1%5.0%15.6%501.00
4Rodriguez Carlos1.3%0.9%2.3%4.3%16.5%81.00
5Bisiaux Léo1.3%2.5%1.8%5.7%29.4%67.00
6Riccitello Matthew1.3%1.5%2.0%4.7%30.9%81.00
7Nordhagen Jørgen1.3%1.7%2.0%5.0%17.9%151.00
8Bilbao Pello1.2%1.7%1.9%6.1%23.7%126.00
9Widar Jarno1.2%1.2%1.9%4.8%36.6%19.00
10van Aert Wout1.1%1.2%1.8%4.0%12.6%81.00
11Almeida Joao1.1%1.0%1.9%4.9%17.6%81.00
12Buitrago Santiago1.0%1.1%1.6%3.1%17.1%11.00
13Berthet Clément1.0%0.8%1.7%2.9%34.3%81.00
14Fortunato Lorenzo0.9%1.0%1.4%6.6%22.1%21.00
15Tulett Ben0.9%0.8%1.4%3.7%14.7%251.00
16Castrillo Pablo0.8%0.6%1.4%1.5%5.4%151.00
17Paret-Peintre Valentin0.7%1.1%1.0%5.0%15.8%41.00
18Svestad-Bårdseng Embret0.6%1.1%0.9%2.5%21.1%251.00
19Fisher-Black Finn0.6%0.9%0.9%4.1%13.9%601.00
20Laurance Axel0.5%0.9%0.7%2.5%12.8%801.00
21Vansevenant Mauri0.5%0.6%0.7%1.5%7.8%1001.00
22Vermaerke Kevin0.4%0.3%0.8%1.4%12.8%251.00
23Rodriguez Cristian0.4%0.5%0.7%1.6%20.9%21.00
24Zana Filippo0.4%0.2%0.8%1.0%18.1%51.00
25Kron Andreas0.4%0.3%0.7%1.4%13.0%201.00
26Landa Mikel0.4%0.2%0.6%1.7%11.2%151.00
27Leknessund Andreas0.3%0.4%0.5%1.1%6.6%101.00
28Martin Guillaume0.3%0.1%0.6%0.7%12.6%201.00
29Sosa Ivan0.3%0.3%0.5%2.0%10.3%67.00
30García Raúl0.3%0.3%0.5%0.9%6.6%301.00
The GC group settles it — four teams with a claim and one obliged to defend — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Roglic Primoz13.2%8.8%14.9%28.0%75.4%19.00
2Gall Felix13.1%10.0%14.5%36.1%84.9%6.50
3Onley Oscar9.6%7.2%10.7%32.3%80.8%11.00
4Mas Enric7.5%4.3%8.7%28.1%80.9%6.50
5Carapaz Richard4.7%3.5%5.2%17.0%76.9%23.00
6Skjelmose Mattias3.4%2.6%3.7%10.8%68.7%34.00
7Vine Jay2.9%3.3%3.0%6.7%15.4%12.00
8Almeida Joao2.8%9.2%1.4%11.9%22.5%81.00
9Romeo Ivan2.6%5.7%2.0%8.7%22.4%501.00
10Johannessen Tobias Halland2.5%1.6%2.9%7.2%29.6%8.00
11Kuss Sepp2.2%2.4%2.3%12.6%58.2%41.00
12Riccitello Matthew1.7%1.4%1.9%4.4%32.2%81.00
13Nordhagen Jørgen1.6%1.6%1.6%5.4%18.5%151.00
14Tejada Harold1.5%1.9%1.5%9.2%55.0%51.00
15Widar Jarno1.4%1.2%1.6%5.7%44.7%19.00
16Bisiaux Léo1.4%1.6%1.4%4.5%30.8%67.00
17Rodriguez Carlos1.3%1.0%1.4%2.8%15.7%81.00
18Bilbao Pello1.1%0.9%1.2%4.4%19.1%126.00
19Buitrago Santiago1.1%0.9%1.2%3.5%19.8%11.00
20Berthet Clément1.1%0.8%1.2%3.6%37.6%81.00
21Tulett Ben1.0%0.9%1.1%5.8%16.0%251.00
22Fortunato Lorenzo1.0%1.0%1.1%7.7%25.1%21.00
23Omrzel Jakob0.9%0.9%1.0%4.3%45.5%81.00
24van Aert Wout0.8%2.6%0.4%5.6%13.3%81.00
25Castrillo Pablo0.8%0.6%0.9%1.4%7.0%151.00
26Svestad-Bårdseng Embret0.8%1.0%0.7%2.3%21.6%251.00
27Fisher-Black Finn0.7%1.3%0.6%3.4%12.8%601.00
28Vansevenant Mauri0.7%1.1%0.6%2.7%12.1%1001.00
29Landa Mikel0.5%0.4%0.6%1.8%14.9%151.00
30Vermaerke Kevin0.5%0.5%0.5%1.9%14.3%251.00
No explosion — the false flats bring a group to the line together — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Gall Felix8.7%6.5%13.3%26.0%69.1%6.50
2Roglic Primoz7.2%4.4%11.3%18.7%58.3%19.00
3Onley Oscar6.1%5.5%9.1%20.1%67.5%11.00
4Mas Enric4.0%1.8%6.3%17.5%63.4%6.50
5Carapaz Richard3.2%1.7%5.0%10.1%60.4%23.00
6Vine Jay2.3%2.5%3.2%5.5%13.3%12.00
7Johannessen Tobias Halland2.2%1.6%3.4%7.4%31.5%8.00
8Skjelmose Mattias1.8%2.0%2.5%8.6%53.4%34.00
9Tejada Harold1.5%2.0%2.1%8.3%50.4%51.00
10Kuss Sepp1.4%1.8%2.0%8.3%44.6%41.00
11Nordhagen Jørgen1.4%2.1%1.9%5.5%18.7%151.00
12Romeo Ivan1.4%2.4%1.8%4.9%16.7%501.00
13Bisiaux Léo1.4%2.2%1.8%5.2%31.3%67.00
14Widar Jarno1.3%1.2%1.9%5.1%41.6%19.00
15Riccitello Matthew1.2%1.5%1.8%4.4%32.4%81.00
16Almeida Joao1.1%1.0%1.7%4.4%16.7%81.00
17Rodriguez Carlos1.1%0.9%1.6%3.2%13.9%81.00
18Bilbao Pello1.0%1.3%1.5%5.8%22.8%126.00
19Tulett Ben1.0%0.9%1.5%5.3%15.1%251.00
20Buitrago Santiago1.0%0.8%1.5%3.0%18.8%11.00
21Berthet Clément1.0%0.7%1.5%3.6%36.5%81.00
22Fortunato Lorenzo0.9%1.1%1.2%7.3%24.6%21.00
23Castrillo Pablo0.8%0.6%1.3%1.4%6.5%151.00
24van Aert Wout0.8%2.5%0.8%5.7%13.5%81.00
25Omrzel Jakob0.8%0.9%1.1%4.7%40.7%81.00
26Svestad-Bårdseng Embret0.7%0.9%0.9%2.6%21.7%251.00
27Vansevenant Mauri0.6%1.3%0.8%2.5%10.9%1001.00
28Paret-Peintre Valentin0.6%1.0%0.8%5.1%17.6%41.00
29Vermaerke Kevin0.5%0.4%0.8%2.1%12.7%251.00
30Fisher-Black Finn0.5%0.9%0.7%3.5%12.0%601.00
Hindsight (post-hoc) — the day as raced: a solo from the escape, the GC group three minutes back — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Roglic Primoz11.6%7.0%15.3%24.1%66.0%19.00
2Gall Felix10.6%8.7%13.5%29.6%76.7%6.50
3Onley Oscar8.7%6.9%11.2%28.5%74.3%11.00
4Mas Enric7.0%4.0%9.3%22.4%72.7%6.50
5Skjelmose Mattias3.2%2.0%4.2%8.9%56.5%34.00
6Carapaz Richard3.1%1.8%4.2%10.3%59.6%23.00
7Vine Jay2.5%3.0%3.0%7.0%15.4%12.00
8Johannessen Tobias Halland2.4%1.6%3.1%7.8%32.6%8.00
9Romeo Ivan2.1%5.5%1.8%8.6%19.4%501.00
10Kuss Sepp1.7%1.8%2.0%9.0%47.3%41.00
11Nordhagen Jørgen1.6%1.9%1.9%5.6%18.5%151.00
12Widar Jarno1.6%1.4%2.0%5.8%42.9%19.00
13Riccitello Matthew1.4%1.4%1.7%4.4%32.5%81.00
14Almeida Joao1.2%1.0%1.6%4.7%17.1%81.00
15Bisiaux Léo1.2%2.1%1.3%5.1%29.2%67.00
16Tejada Harold1.2%1.4%1.4%7.0%43.7%51.00
17Rodriguez Carlos1.1%1.1%1.4%3.3%16.4%81.00
18Bilbao Pello1.1%1.1%1.3%5.4%22.4%126.00
19Buitrago Santiago1.0%1.1%1.2%3.8%19.6%11.00
20Berthet Clément1.0%0.7%1.3%3.1%37.5%81.00
21Tulett Ben1.0%1.0%1.2%4.2%15.3%251.00
22Omrzel Jakob0.9%1.0%1.1%5.0%49.4%81.00
23van Aert Wout0.8%2.5%0.6%5.9%13.7%81.00
24Fortunato Lorenzo0.8%1.0%1.0%7.5%24.0%21.00
25Castrillo Pablo0.7%1.1%0.8%1.9%7.2%151.00
26Svestad-Bårdseng Embret0.7%1.1%0.8%2.7%23.7%251.00
27Fisher-Black Finn0.6%1.4%0.5%3.6%13.5%601.00
28Vansevenant Mauri0.5%0.7%0.6%2.2%12.5%1001.00
29Landa Mikel0.5%0.4%0.6%1.6%15.4%151.00
30Paret-Peintre Valentin0.5%0.9%0.5%4.4%17.1%41.00

After the stage

Results — won by Omrzel Jakob

PosRiderTeamMountain break win pGC battle win pIrregular top win pHindsight (post-hoc) win p
1Omrzel JakobBahrain Victorious0.6%0.9%0.8%0.9%
2Berrade UrkoEquipo Kern Pharma0.1%0.1%0.1%0.1%
3Buitrago SantiagoBahrain Victorious1.0%1.1%1.0%1.0%
4Lutsenko AlexeyNSN Cycling Team0.2%0.1%0.2%0.1%
5Vansevenant MauriSoudal Quick-Step0.5%0.7%0.6%0.5%
6Mas EnricMovistar Team2.3%7.5%4.0%7.0%
7Gall FelixDecathlon CMA CGM Team5.3%13.1%8.7%10.6%
8Roglic PrimozRed Bull-BORA-hansgrohe5.9%13.2%7.2%11.6%
9Carapaz RichardEF Education-EasyPost2.8%4.7%3.2%3.1%
10Mühlberger GregorDecathlon CMA CGM Team0.3%0.3%0.3%0.2%

Scenario scoring — probability given to the actual winner

ScenarioBlend win pBook devig
Mountain break0.61%0.81%
GC battle0.93%0.81%
Irregular top0.78%0.81%
Hindsight (post-hoc)0.90%0.81%

Reflection

What we make of it

The break won and the model missed the winner, but this was a far better day than Valdelinares. Jakob Omrzel — twenty years old — went clear and held 1:56 on Berrade and 2:13 on Buitrago, with Mas the first GC man home in 6th at 2:56, taking 27 seconds out of Roglic, Gall and Carapaz. The boards had Omrzel at #23-25 (1.0-1.1%) and Berrade at #57-62, so the podium of the stage was not found. What the model DID get right was everything behind it: on 'mountain break' Roglic was #1, Gall #2, Carapaz #4 and Mas #6, and they finished 8th, 7th, 9th and 6th. Pool retrieval was level with production on all three boards (6/6, 7/7, 6/6), which is the honest verdict — the key neither helped nor hurt on a day whose front was half escape and half GC.

The key scored covered at 0.45, and the reason it was not exact is a labelling artifact worth recording. By any human reading this was a mountain escape: a breakaway rider soloed, the GC group conceded three minutes, and the realized top-15 composition came back mountain .47 / rolling .40 / time_trial .13 — a pure climbers' front that sits close to res_2's canonical mountain .42 / tt .24 / rolling .20. But Omrzel happened to sit 10th on GC overnight at +8:05, so the oracle's 'winner inside morning GC top-10' clause fired and stamped the day gc_day. This is the inverse of the stage 2-4 problem: back then the GC top-10 was contaminated by sprinters who would never contest a mountain; now it is contaminated by a breakaway rider who banked time earlier in the race and is, functionally, still a break rider. The composition half of our read (res_2 at 0.55) was correct and the score does not credit it.

The chase-incentive test was right that the GC teams would race, and wrong about what that would buy them. Going in, the argument for holding gc_day at 0.45 was that four teams had a live claim on the win and Movistar were obliged to defend — the most incentive this Vuelta has had. They did race: Mas attacked and took 27 seconds on his three nearest rivals, which is a real GC day inside the stage. But the escape had gone up the road on the early slopes and the racing behind never threatened it. The refinement the day suggests: chase incentive predicts whether the GC group RACES, not whether the break is CAUGHT. Those are different questions, and on a 4,568 m day with the climbing starting at km 7.7, the second one is mostly settled before the first one starts.

The parcours read held up in its specifics. The final climb's irregular upper half did limit the damage — the GC selection was 27 seconds, not minutes, exactly the 'less room for a big explosion' the pre-race note argued for, and much less than Aitana produced. Mas is now 1:45 clear of Roglic with Gall at 2:06 and Carapaz 3:53; the state-aware GC outlook head has him at 47.0% against Roglic 27.0%, essentially unchanged from before the stage despite the day going his way.