Cycling race predictor · Vuelta a España 2026

Stage 3 — 2026-08-24

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 183 riders priced models retrained 2026-08-09 book snapshot markets_1222.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.

GC summit

The GC group settles it — a reduced bunch up a shallow summit
sprint0.00
mountain0.37
hilly0.00
rolling0.61
break0.02
TT0.00
keyed: GC day 0.8 / mountain escape 0.2 (board order by rider-type retrieval; prices unchanged)
The base case, and the book's card at 1.67. Gruissan to Font-Romeu, 174 km and 2,676 m, and the roadbook's whole story is in the last 35 km: flat and fast across the wetlands and the vineyards past Perpignan, up the Tet valley to the intermediate sprint at km 129, then the Col de Mont-Louis (cat 1, 19.4 km at 4.8%) straight into the Font-Romeu summit finish (cat 2, 9.8 km at 5%) at 1,936 m. Those are drag gradients, not wall gradients — 4.8% and 5% for half an hour each select on sustained power and altitude tolerance, and they let a sizeable group stay together to the line. References are exactly that shape: mid-mountain summit finishes in model space (mountain 0.30-0.42 over a rolling base, no hilly or breakaway component) where a reduced GC group of 9 to 16 riders arrived to contest the win — Roglic's Vuelta 2022 stage 4 (wg 12), Roglic at Orcieres-Merlette in the 2020 Tour (wg 16), Roglic's Tirreno 2023 stage 4 (wg 16), Bilbao's Itzulia 2022 stage 3 (wg 14), Roglic's UAE 2019 stage 6 on Jebel Hafeet (wg 9). Deliberately NOT the shattering-summit archetype: this profile is the one where the strong survive together and a kick decides. Inherits the config-root day key.
Top 5 (blend): Pogacar Tadej 36.8%; Onley Oscar 6.6%; Carapaz Richard 3.7%; Roglic Primoz 3.7%; Gall Felix 3.1%

Mountain break

The escape stays — somebody spends the day up the road and survives
sprint0.00
mountain0.50
hilly0.00
rolling0.49
break0.01
TT0.00
keyed: mountain escape 0.8 / GC day 0.1 (board order by rider-type retrieval; prices unchanged)
The alternative branch. First real climbing day of the race, twenty teams with no GC to defend and three weeks of ambition, and a summit finish is the most valuable prize a non-contender can win. References are the canonical mountain-escape days (mountain 0.47-0.52 over rolling, winner groups of 1 to 4 — solo or tiny-group wins): 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. Its own day key leans res_2, so the pool it surfaces should be visibly a climbing-escape pool rather than the GC pool. NOTE: no exclude_top_gc cut is applied and that is deliberate — with 50th place 59 seconds down there is no standings cliff to cut at, and dropping 'the top 8' would remove Vine and Fisher-Black, who are precisely the riders a stage-3 escape would be built around. On this race, this early, the conditional 'if a non-GC rider wins' pool is not yet a well-defined object; it becomes one after the first high-mountain day.
Top 5 (blend): Pogacar Tadej 46.0%; Gall Felix 4.4%; Onley Oscar 3.9%; Carapaz Richard 3.4%; Roglic Primoz 2.4%

Hard selection

It shatters anyway — the tail branch where Pogacar rides away
sprint0.00
mountain0.51
hilly0.00
rolling0.49
break0.00
TT0.00
keyed: GC day (board order by rider-type retrieval; prices unchanged)
The tail, priced so we can see its shape rather than because we expect it. The read where 4.8% and 5% turn out to be plenty because the pace on Mont-Louis is a UAE-driven grind and Font-Romeu at 1,936 m does the rest — the group bleeds all the way up and one or two riders arrive alone. References are the shattering-summit archetype (mountain 0.45-0.55, winner group 1): Pogacar's TdF 2026 stages 10, 14 and 3, Vingegaard's Vuelta 2025 stage 20 and Catalunya 2026 stage 6. This board is also the measuring stick for the base read: the ratio of a rider's probability here to his probability under 'GC summit' is how much of his case rests on surviving in a group versus climbing with the very best, and on a day the road is expected NOT to shatter, riders who only score under this scenario are the ones to fade.
Top 5 (blend): Pogacar Tadej 64.5%; Onley Oscar 3.9%; Gall Felix 3.5%; Carapaz Richard 2.1%; Mas Enric 1.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 GC summit 105%, Mountain break 105%, Hard selection 100% — 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.

RiderTeamGC summitMountain breakHard selectionBook oddsBook devigMax edge
Pogacar TadejUAE Team Emirates-XRG36.8%46.0%64.5%1.6737.7%+26.9pp
Onley OscarNetcompany INEOS6.6%3.9%3.9%21.003.0%+3.6pp
Gall FelixDecathlon CMA CGM Team3.1%4.4%3.5%101.000.6%+3.7pp
Carapaz RichardEF Education-EasyPost3.7%3.4%2.1%34.001.8%+1.8pp
Roglic PrimozRed Bull-BORA-hansgrohe3.7%2.4%1.6%67.000.9%+2.7pp
van Aert WoutTeam Visma | Lease a Bike2.6%0.8%0.3%26.002.4%+0.2pp
Mas EnricMovistar Team2.1%2.3%1.9%201.000.3%+2.0pp
Kuss SeppTeam Visma | Lease a Bike1.1%2.3%1.3%201.000.3%+2.0pp
Johannessen Tobias HallandUno-X Mobility2.1%1.7%1.0%67.000.9%+1.1pp
Vine JayUAE Team Emirates-XRG2.0%2.0%1.1%23.002.7%-0.7pp
Fisher-Black FinnRed Bull-BORA-hansgrohe2.0%0.9%0.6%19.003.3%-1.4pp
Romeo IvanMovistar Team1.9%2.0%0.9%29.002.2%-0.2pp
Laporte ChristopheTeam Visma | Lease a Bike1.8%0.7%0.2%301.000.2%+1.6pp
Uijtdebroeks CianMovistar Team1.0%1.8%1.6%601.000.1%+1.7pp
Skjelmose MattiasLidl-Trek1.6%1.4%1.2%81.000.8%+0.8pp
Riccitello MatthewDecathlon CMA CGM Team0.9%1.4%1.0%601.000.1%+1.3pp
Tejada HaroldXDS Astana Team1.3%1.1%0.5%41.001.5%-0.2pp
Almeida JoaoUAE Team Emirates-XRG1.2%0.9%0.5%126.000.5%+0.7pp
Berthet ClémentGroupama-FDJ United1.2%0.7%0.4%301.000.2%+1.0pp
Widar JarnoLotto-Intermarché1.2%1.0%0.5%126.000.5%+0.7pp
Nordhagen JørgenTeam Visma | Lease a Bike0.9%1.2%1.0%501.000.1%+1.1pp
Castrillo PabloMovistar Team1.1%1.0%0.5%41.001.5%-0.4pp
Bisiaux LéoDecathlon CMA CGM Team1.0%1.1%0.6%34.001.8%-0.7pp
Tulett BenTeam Visma | Lease a Bike1.0%1.1%0.7%29.002.2%-1.0pp
The GC group settles it — a reduced bunch up a shallow summit — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Pogacar Tadej36.8%48.3%32.1%69.6%85.7%1.67
2Onley Oscar6.6%4.2%6.9%16.4%64.8%21.00
3Carapaz Richard3.7%2.1%3.9%10.7%56.5%34.00
4Roglic Primoz3.7%2.0%3.9%7.8%58.2%67.00
5Gall Felix3.1%2.2%3.2%8.9%45.5%101.00
6van Aert Wout2.6%2.2%2.5%10.6%24.1%26.00
7Mas Enric2.1%1.2%2.3%5.9%42.2%201.00
8Johannessen Tobias Halland2.1%1.2%2.2%5.1%47.4%67.00
9Vine Jay2.0%1.8%1.9%6.1%40.7%23.00
10Fisher-Black Finn2.0%2.6%1.7%9.3%36.5%19.00
11Romeo Ivan1.9%2.5%1.6%8.3%35.0%29.00
12Laporte Christophe1.8%2.3%1.6%5.8%17.4%301.00
13Skjelmose Mattias1.6%1.6%1.5%5.2%42.1%81.00
14Tejada Harold1.3%1.0%1.3%4.5%33.9%41.00
15Almeida Joao1.2%1.0%1.2%4.1%20.6%126.00
16Berthet Clément1.2%0.5%1.3%2.6%35.5%301.00
17Widar Jarno1.2%0.9%1.2%4.4%31.7%126.00
18Kuss Sepp1.1%0.7%1.2%3.6%36.8%201.00
19Castrillo Pablo1.1%1.0%1.1%2.2%8.6%41.00
20Pedersen Mads1.1%2.2%0.8%5.0%15.3%41.00
21Laurance Axel1.0%1.0%1.0%3.0%17.2%34.00
22Uijtdebroeks Cian1.0%1.0%1.0%4.7%34.3%601.00
23Bisiaux Léo1.0%1.2%0.9%4.7%42.2%34.00
24Tulett Ben1.0%1.2%0.9%4.1%32.3%29.00
25Vansevenant Mauri1.0%0.2%1.1%1.0%12.3%201.00
26Nordhagen Jørgen0.9%2.1%0.6%3.7%26.2%501.00
27Buitrago Santiago0.9%0.5%1.0%2.1%33.0%101.00
28Bilbao Pello0.9%0.5%1.0%1.9%14.3%126.00
29Rodriguez Carlos0.9%1.5%0.7%2.7%43.9%401.00
30Riccitello Matthew0.9%0.4%0.9%1.9%26.6%601.00
The escape stays — somebody spends the day up the road and survives — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Pogacar Tadej46.0%53.7%42.1%68.8%83.5%1.67
2Gall Felix4.4%2.9%4.5%10.7%45.9%101.00
3Onley Oscar3.9%2.5%4.1%9.7%44.3%21.00
4Carapaz Richard3.4%1.6%3.6%7.8%44.4%34.00
5Roglic Primoz2.4%1.5%2.6%5.1%45.0%67.00
6Mas Enric2.3%1.1%2.5%5.3%38.3%201.00
7Kuss Sepp2.3%2.9%2.0%8.5%37.2%201.00
8Vine Jay2.0%1.9%1.9%5.6%33.5%23.00
9Romeo Ivan2.0%2.5%1.7%8.0%30.2%29.00
10Uijtdebroeks Cian1.8%1.8%1.7%6.2%35.6%601.00
11Johannessen Tobias Halland1.7%1.1%1.7%4.5%41.7%67.00
12Riccitello Matthew1.4%0.4%1.6%2.8%36.0%601.00
13Skjelmose Mattias1.4%1.2%1.4%4.6%38.6%81.00
14Nordhagen Jørgen1.2%2.6%0.8%4.5%30.1%501.00
15Bisiaux Léo1.1%1.6%0.9%5.5%38.5%34.00
16Tulett Ben1.1%0.8%1.2%3.4%35.9%29.00
17Tejada Harold1.1%1.1%1.0%4.4%34.1%41.00
18Rodriguez Carlos1.1%1.1%1.0%4.2%35.4%401.00
19Widar Jarno1.0%0.9%1.0%4.0%25.6%126.00
20Castrillo Pablo1.0%1.0%0.9%3.6%17.8%41.00
21Almeida Joao0.9%1.3%0.8%5.5%27.1%126.00
22Buitrago Santiago0.9%0.4%1.0%2.1%31.6%101.00
23Fisher-Black Finn0.9%0.7%0.9%3.0%40.6%19.00
24van Aert Wout0.8%1.2%0.6%10.3%28.6%26.00
25Fortunato Lorenzo0.7%0.1%0.8%1.9%12.8%51.00
26Berthet Clément0.7%0.4%0.8%2.0%30.4%301.00
27Beloki Markel0.7%1.2%0.5%4.0%21.6%67.00
28Paret-Peintre Valentin0.7%0.8%0.6%3.4%17.5%34.00
29Laporte Christophe0.7%1.5%0.5%2.7%6.6%301.00
30Bilbao Pello0.6%0.3%0.7%1.6%13.6%126.00
It shatters anyway — the tail branch where Pogacar rides away — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Pogacar Tadej64.5%58.5%65.7%77.2%89.7%1.67
2Onley Oscar3.9%2.7%4.1%12.5%54.1%21.00
3Gall Felix3.5%2.9%3.6%11.0%51.6%101.00
4Carapaz Richard2.1%1.6%2.2%7.9%49.4%34.00
5Mas Enric1.9%1.2%2.0%7.1%46.6%201.00
6Roglic Primoz1.6%1.5%1.6%6.0%49.6%67.00
7Uijtdebroeks Cian1.6%1.9%1.5%6.5%40.2%601.00
8Kuss Sepp1.3%1.6%1.2%6.8%36.1%201.00
9Skjelmose Mattias1.2%1.5%1.2%6.1%45.8%81.00
10Vine Jay1.1%1.3%1.0%5.0%36.9%23.00
11Riccitello Matthew1.0%1.0%1.0%4.9%39.8%601.00
12Nordhagen Jørgen1.0%2.5%0.6%4.5%32.7%501.00
13Johannessen Tobias Halland1.0%1.0%1.0%4.6%45.8%67.00
14Romeo Ivan0.9%1.0%0.9%5.4%25.9%29.00
15Rodriguez Carlos0.7%1.4%0.5%3.1%46.0%401.00
16Tulett Ben0.7%1.3%0.6%5.4%29.2%29.00
17Fisher-Black Finn0.6%1.2%0.4%5.1%32.8%19.00
18Bisiaux Léo0.6%1.0%0.5%5.8%43.4%34.00
19Tejada Harold0.5%0.8%0.5%4.6%35.5%41.00
20Castrillo Pablo0.5%0.6%0.5%1.8%6.8%41.00
21Almeida Joao0.5%0.9%0.4%13.4%37.4%126.00
22Widar Jarno0.5%0.4%0.5%3.2%24.6%126.00
23Buitrago Santiago0.5%0.3%0.5%1.9%31.7%101.00
24Berthet Clément0.4%0.4%0.4%2.1%31.1%301.00
25Fortunato Lorenzo0.3%0.1%0.4%2.4%14.5%51.00
26van Aert Wout0.3%1.2%0.1%10.4%23.3%26.00
27Omrzel Jakob0.3%0.6%0.3%3.6%34.6%201.00
28Bilbao Pello0.3%0.3%0.3%1.5%12.9%126.00
29Landa Mikel0.3%0.1%0.4%0.9%14.5%151.00
30Svestad-Bårdseng Embret0.3%0.3%0.3%1.4%13.9%401.00

After the stage

Results

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

Reflection

What we make of it

STAGE CANCELLED — no result, and no verdict on this read. Riders were stopped by a heavy downpour and then a hailstorm on the Col de Mont-Louis with roughly 15 km left, took shelter, and the stage was abandoned on safety grounds before anyone reached Font-Romeu. The general classification stands exactly as it did in Manosque: Pogacar in red, van Aert +9s, Brennan +10s. The race resumes with stage 4 around Andorra la Vella.

The boards below were run and logged before the start and are preserved unchanged, but they are a prediction that never got tested — nothing here should be read as a hit or a miss. `score_day_keys.py` correctly declines to score a result-less stage, so the day key `{gc_day: 0.75, res_2: 0.25}` is NOT counted against the tier-3 record; the campaign scorecard stays at 1/2 exact over stages 1 and 2. That is the right behaviour and needed no intervention: the oracle labeller is driven off archived results, and there are none.

One thing the cancellation does carry forward. The reasoning that set this key — GC so compressed that no break is genuinely free — was written on standings that are now three days old and still unchanged, because no climbing has been raced. It therefore applies with MORE force to stage 4, not less: the field arrives in Andorra having done two flat-ish days, a 4-hour cancelled effort in the legs, and still no separation whatsoever between the GC men. Stage 4 inherits both the argument and the compressed standings intact.