Cycling race predictor · Vuelta a España 2026

Stage 20 — 2026-09-12

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 144 riders priced models retrained d911de60f7 book snapshot markets_1915.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.

GC showdown

GC showdown — the classification men contest the wall
sprint0.00
mountain0.47
hilly0.00
rolling0.53
break0.00
TT0.00
keyed: mountain escape 0.5 / GC day 0.4 / hard puncheur day 0.1 (board order by rider-type retrieval; prices unchanged)
Five grand tour summit finishes where the general classification group was the front of the race and the win was settled among two or three of them: Tour 2022 stage 7 at the Super Planche des Belles Filles, Giro 2024 stage 8 at Prati di Tivo, Vuelta 2023 stage 8 at Xorret de Cati, Giro 2020 stage 18 at the Laghi di Cancano and Tour 2021 stage 18 at Luz Ardiden. Xorret de Cati is the closest gradient analogue in the set for a finish that holds double figures to the line. The read where Red Bull ride the two Purche ascents hard enough to burn the escape's leash, Roglic attacks the 1:37 from distance because there is no mountain left after today, and the win is decided between the men in the first ten of the classification.
Top 5 (blend): Gall Felix 10.4%; Mas Enric 8.0%; Roglic Primoz 7.2%; Onley Oscar 5.2%; Johannessen Tobias Halland 4.6%

Mountain break

Mountain break — the move goes on the flat 43 km and is never seen again
sprint0.00
mountain0.46
hilly0.00
rolling0.52
break0.01
TT0.00
keyed: mountain escape 0.5 / GC day 0.4 / hard puncheur day 0.1 (board order by rider-type retrieval; prices unchanged)
Five grand tour mountain days won from the escape by a rider the classification had no reason to chase: Tour 2021 stage 9 to Tignes (O'Connor by 5:07), Vuelta 2024 stage 6 (O'Connor by 4:33), Giro 2024 stage 17 to the Brocon (Steinhauser by 1:24), Vuelta 2021 stage 15 to El Barraco (Majka by 1:27) and Giro 2025 stage 19 (Prodhomme by 58 seconds). The read this race has returned four times in five mountain days. The board drops the top ten of the actual standings and renormalises the rest, so it prices the escape rather than the men who are marking each other several minutes behind. The model prices rider-course fit and not break formation, so its raw board is always the branch where the move is caught.
Top 5 if the break wins (top 10 on GC removed): Bisiaux Léo 7.5%; Johannessen Tobias Halland 6.8%; Debruyne Ramses 5.4%; Riccitello Matthew 5.1%; Buitrago Santiago 4.7%

Attrition

Attrition — the double Purche empties the race and a small mixed group is left
sprint0.00
mountain0.44
hilly0.00
rolling0.55
break0.01
TT0.00
keyed: mountain escape 0.5 / GC day 0.4 / hard puncheur day 0.1 (board order by rider-type retrieval; prices unchanged)
The middle branch, and the one neither of the other two reads prices. Five mountain days settled by a handful of survivors rather than by a clean escape or a clean classification sprint: Vuelta 2024 stage 4, Vuelta 2019 stage 7, Giro 2025 stage 16, Tour 2023 stage 14 to Morzine and Giro 2024 stage 16. Nearly 4,900 m with the last hundred kilometres climbing and El Purche ridden twice is an attrition course before it is a tactical one. The read where the move is whittled to a few free climbers, the classification group splinters behind rather than arriving together, and the two fronts converge into one small mixed group on the final wall.
Top 5 (blend): Gall Felix 8.6%; Mas Enric 7.3%; Roglic Primoz 5.9%; Onley Oscar 5.3%; Johannessen Tobias Halland 3.9%

Hindsight (post-hoc)

Hindsight (post-hoc) — the day as raced: a lone escapee 47 seconds clear, the race in pieces behind
sprint0.00
mountain0.43
hilly0.00
rolling0.57
break0.01
TT0.00
keyed: mountain escape 0.5 / GC day 0.4 / hard puncheur day 0.1 (board order by rider-type retrieval; prices unchanged)
Post-race reconstruction, NOT a prediction — run with --no-log and never written to prediction_log. Mikel Landa, 38th overall that morning, won alone in 4:58:01 from Tobias Halland Johannessen at 47 seconds and Ramses Debruyne at 1:27; only three riders finished within two minutes, ten within five and eighteen within ten, so the field was in pieces rather than in groups. Realised top-15 composition came back mountain .733 / rolling .133, a climbers' front, yet the oracle graded the day res_4 rather than res_2. References are WorldTour and Pro mountain days won solo off the escape by 30 to 80 seconds with the same shattered spread behind: Pidcock's Alpe d'Huez in 2022, Kwiatkowski on the Grand Colombier in 2023, Simon Carr at the Tour of the Alps in 2024, Arensman there in 2025 and Bagatin at the Tour of Turkiye in 2026. This board answers only what the model would have said given the day's actual shape; it is not evidence about the morning, because the scenario choice was made knowing the result.
Top 5 (blend): Gall Felix 7.5%; Mas Enric 5.5%; Onley Oscar 5.4%; Roglic Primoz 5.0%; Buitrago Santiago 4.0%

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 showdown 90%, Attrition 82%, Hindsight (post-hoc) 88% — 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 showdownMountain breakAttritionHindsight (post-hoc)Book oddsBook devigMax edge
Gall FelixDecathlon CMA CGM Team10.4%–8.6%7.5%5.0013.0%-2.6pp
Mas EnricMovistar Team8.0%–7.3%5.5%5.0013.0%-5.0pp
Roglic PrimozRed Bull-BORA-hansgrohe7.2%–5.9%5.0%15.004.3%+2.9pp
Onley OscarNetcompany INEOS5.2%–5.3%5.4%9.007.2%-1.8pp
Johannessen Tobias HallandUno-X Mobility4.6%6.8%3.9%3.9%51.001.3%+3.3pp
Buitrago SantiagoBahrain Victorious2.4%4.7%2.5%4.0%23.002.8%+1.2pp
Bisiaux LéoDecathlon CMA CGM Team3.7%7.5%3.6%3.5%67.001.0%+2.8pp
Riccitello MatthewDecathlon CMA CGM Team3.6%5.1%2.5%2.3%81.000.8%+2.8pp
Carapaz RichardEF Education-EasyPost2.8%–2.5%2.9%6.0010.8%-7.9pp
Omrzel JakobBahrain Victorious1.9%–2.0%2.7%41.001.6%+1.1pp
Skjelmose MattiasLidl-Trek2.2%–2.1%2.5%151.000.4%+2.1pp
Widar JarnoLotto-Intermarché2.5%4.2%2.4%1.8%34.001.9%+0.6pp
Kuss SeppTeam Visma | Lease a Bike2.3%3.7%2.2%2.5%6.0010.8%-8.3pp
Vermaerke KevinUAE Team Emirates-XRG1.2%2.7%1.1%2.4%151.000.4%+2.0pp
Romeo IvanMovistar Team1.5%2.9%1.2%2.2%801.000.1%+2.1pp
Tejada HaroldXDS Astana Team1.7%–1.8%1.6%51.001.3%+0.6pp
Debruyne RamsesAlpecin-Premier Tech1.8%5.4%1.8%1.5%101.000.6%+1.2pp
Castrillo PabloMovistar Team0.5%1.2%0.5%1.8%401.000.2%+1.6pp
van Aert WoutTeam Visma | Lease a Bike1.5%4.6%1.7%1.2%201.000.3%+1.4pp
Leknessund AndreasUno-X Mobility0.8%2.3%1.1%1.6%151.000.4%+1.2pp
Berthet ClémentGroupama-FDJ United1.3%–1.4%1.6%51.001.3%+0.3pp
Dunbar EdwardPinarello-Q36.5 Pro Cycling Team0.6%0.9%0.4%1.5%n/a––
Tuckwell LukeRed Bull-BORA-hansgrohe1.5%2.5%1.1%0.5%201.000.3%+1.2pp
Almeida JoaoUAE Team Emirates-XRG1.4%2.3%1.5%1.4%23.002.8%-1.3pp
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.
GC showdown — the classification men contest the wall — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Gall Felix10.4%9.4%11.9%31.7%82.6%5.00
2Mas Enric8.0%6.9%9.2%27.3%80.0%5.00
3Roglic Primoz7.2%7.0%8.1%23.8%71.9%15.00
4Onley Oscar5.2%4.0%6.0%14.7%74.2%9.00
5Johannessen Tobias Halland4.6%4.4%5.2%16.2%47.2%51.00
6Bisiaux Léo3.7%3.5%4.3%11.4%51.9%67.00
7Riccitello Matthew3.6%2.3%4.4%7.5%46.9%81.00
8Carapaz Richard2.8%2.2%3.2%9.1%72.3%6.00
9Widar Jarno2.5%2.6%2.8%8.8%41.9%34.00
10Buitrago Santiago2.4%2.0%2.8%5.8%32.5%23.00
11Kuss Sepp2.3%4.4%2.0%10.5%52.6%6.00
12Skjelmose Mattias2.2%1.6%2.6%6.2%61.8%151.00
13Omrzel Jakob1.9%1.7%2.1%6.8%61.1%41.00
14Debruyne Ramses1.8%4.2%1.4%10.6%34.0%101.00
15Tejada Harold1.7%2.8%1.6%8.8%58.5%51.00
16Tuckwell Luke1.5%0.5%1.9%2.8%13.2%201.00
17van Aert Wout1.5%4.0%1.0%10.4%17.7%201.00
18Romeo Ivan1.5%2.1%1.5%3.0%7.2%801.00
19Almeida Joao1.4%1.2%1.6%4.3%19.4%23.00
20Berthet Clément1.3%0.5%1.7%5.1%57.7%51.00
21Vermaerke Kevin1.2%1.2%1.4%3.6%20.4%151.00
22Paret-Peintre Valentin1.1%1.7%1.1%6.1%21.4%34.00
23Nordhagen Jørgen1.1%2.0%1.0%5.8%20.6%67.00
24Rodriguez Cristian1.0%0.3%1.3%3.3%49.9%51.00
25Rodriguez Carlos0.9%0.8%1.1%2.5%12.9%151.00
26Svestad-Bårdseng Embret0.9%0.5%1.1%1.9%12.8%301.00
27Zana Filippo0.9%0.7%1.0%2.0%15.2%67.00
28Berrade Urko0.9%2.0%0.7%6.6%29.9%81.00
29Leknessund Andreas0.8%0.7%1.0%4.0%15.6%151.00
30Brenner Marco0.7%0.5%0.8%2.5%9.3%34.00
Mountain break — the move goes on the flat 43 km and is never seen again — top 30, all heads · top 10 on GC removed
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Bisiaux Léo4.3%4.5%5.0%14.0%50.7%67.00
2Johannessen Tobias Halland4.0%4.4%4.5%16.4%49.3%51.00
3Debruyne Ramses3.2%7.8%2.5%16.9%44.8%101.00
4Riccitello Matthew3.0%2.3%3.6%6.9%39.4%81.00
5Buitrago Santiago2.7%2.3%3.3%6.4%30.2%23.00
6van Aert Wout2.7%5.9%2.3%13.3%23.3%201.00
7Widar Jarno2.4%2.5%2.8%9.0%42.3%34.00
8Kuss Sepp2.2%3.9%2.1%8.5%39.1%6.00
9Romeo Ivan1.7%2.6%1.7%3.5%7.6%801.00
10Vermaerke Kevin1.6%0.9%2.0%4.1%23.8%151.00
11Brenner Marco1.5%2.5%1.5%7.2%18.9%34.00
12Tuckwell Luke1.4%0.4%1.9%3.2%10.8%201.00
13Almeida Joao1.3%1.4%1.5%4.7%18.8%23.00
14Leknessund Andreas1.3%2.1%1.3%6.6%21.8%151.00
15Paret-Peintre Valentin1.2%1.6%1.3%6.2%21.3%34.00
16Zana Filippo1.2%0.5%1.5%2.5%16.9%67.00
17Pickering Finlay1.2%2.8%0.9%7.1%32.6%201.00
18Nordhagen Jørgen1.1%2.3%1.0%5.8%19.9%67.00
19Berrade Urko1.1%2.3%1.0%8.9%30.3%81.00
20Rodriguez Carlos1.0%0.9%1.3%2.9%12.5%151.00
21Svestad-Bårdseng Embret1.0%0.5%1.2%2.0%13.8%301.00
22Martin Guillaume0.8%0.4%1.1%1.6%16.0%126.00
23Fisher-Black Finn0.8%0.5%1.0%2.1%7.6%n/a
24Vansevenant Mauri0.7%0.6%0.9%2.0%11.3%501.00
25Castrillo Pablo0.7%0.5%0.9%1.1%5.6%401.00
26Fortunato Lorenzo0.7%0.3%0.9%1.5%10.7%101.00
27Kron Andreas0.6%0.4%0.8%1.5%10.5%501.00
28García Raúl0.6%0.5%0.7%1.9%9.5%401.00
29Sosa Ivan0.6%0.6%0.7%1.4%5.7%67.00
30Dunbar Edward0.5%0.5%0.6%1.2%11.8%n/a
Attrition — the double Purche empties the race and a small mixed group is left — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Gall Felix8.6%7.1%10.9%25.4%78.4%5.00
2Mas Enric7.3%6.2%9.1%24.8%76.7%5.00
3Roglic Primoz5.9%5.2%7.3%18.8%67.0%15.00
4Onley Oscar5.3%3.4%6.9%11.9%73.5%9.00
5Johannessen Tobias Halland3.9%3.8%4.7%15.4%46.2%51.00
6Bisiaux Léo3.6%2.1%4.7%7.2%33.9%67.00
7Carapaz Richard2.5%2.1%3.1%8.2%69.1%6.00
8Riccitello Matthew2.5%1.9%3.1%5.9%36.0%81.00
9Buitrago Santiago2.5%2.4%3.0%6.2%29.9%23.00
10Widar Jarno2.4%2.7%2.8%9.5%39.9%34.00
11Kuss Sepp2.2%4.3%2.2%10.5%48.8%6.00
12Skjelmose Mattias2.1%1.4%2.8%7.5%60.2%151.00
13Omrzel Jakob2.0%2.1%2.3%7.8%68.0%41.00
14Tejada Harold1.8%3.2%1.9%9.3%55.0%51.00
15Debruyne Ramses1.8%4.0%1.6%10.4%33.0%101.00
16van Aert Wout1.7%3.4%1.7%10.3%18.4%201.00
17Almeida Joao1.5%1.4%1.8%4.7%20.7%23.00
18Berthet Clément1.4%0.5%1.9%5.9%55.2%51.00
19Romeo Ivan1.2%2.0%1.3%2.8%7.2%801.00
20Tuckwell Luke1.1%0.4%1.5%2.9%11.2%201.00
21Vermaerke Kevin1.1%1.0%1.3%3.2%20.1%151.00
22Leknessund Andreas1.1%2.0%1.0%6.2%20.4%151.00
23Paret-Peintre Valentin1.0%1.9%1.0%6.1%21.5%34.00
24Nordhagen Jørgen1.0%2.0%1.0%5.9%20.9%67.00
25Rodriguez Cristian0.9%0.3%1.3%3.8%48.0%51.00
26Svestad-Bårdseng Embret0.9%0.4%1.2%1.7%12.7%301.00
27Zana Filippo0.9%0.7%1.1%1.9%14.8%67.00
28Berrade Urko0.9%2.0%0.7%4.0%19.5%81.00
29Rodriguez Carlos0.8%0.7%1.0%2.3%12.2%151.00
30Brenner Marco0.7%0.4%0.9%2.4%7.7%34.00
Hindsight (post-hoc) — the day as raced: a lone escapee 47 seconds clear, the race in pieces behind — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Gall Felix7.5%6.3%8.8%21.1%75.8%5.00
2Mas Enric5.5%4.7%6.4%21.4%73.7%5.00
3Onley Oscar5.4%3.3%6.6%11.4%69.7%9.00
4Roglic Primoz5.0%4.0%5.9%16.1%59.8%15.00
5Buitrago Santiago4.0%5.2%4.3%11.3%43.1%23.00
6Johannessen Tobias Halland3.9%3.8%4.5%13.5%46.1%51.00
7Bisiaux Léo3.5%3.8%3.8%10.6%45.6%67.00
8Carapaz Richard2.9%2.2%3.5%7.6%68.8%6.00
9Omrzel Jakob2.7%2.9%3.0%10.8%70.8%41.00
10Skjelmose Mattias2.5%2.5%2.9%9.3%57.9%151.00
11Kuss Sepp2.5%4.2%2.4%10.7%51.0%6.00
12Vermaerke Kevin2.4%2.0%2.9%6.9%30.9%151.00
13Riccitello Matthew2.3%1.8%2.8%5.5%42.3%81.00
14Romeo Ivan2.2%4.4%1.9%6.0%10.6%801.00
15Castrillo Pablo1.8%0.7%2.3%1.8%7.5%401.00
16Widar Jarno1.8%3.2%1.7%12.7%42.4%34.00
17Leknessund Andreas1.6%2.5%1.6%7.8%25.3%151.00
18Tejada Harold1.6%1.9%1.8%4.2%39.1%51.00
19Berthet Clément1.6%0.8%2.0%5.7%50.1%51.00
20Dunbar Edward1.5%0.5%2.0%1.7%16.5%n/a
21Debruyne Ramses1.5%3.8%1.2%10.2%37.0%101.00
22Almeida Joao1.4%1.6%1.6%5.4%20.2%23.00
23Brenner Marco1.4%4.0%0.9%9.0%22.0%34.00
24Martin Guillaume1.2%0.5%1.5%2.1%27.5%126.00
25van Aert Wout1.2%1.4%1.3%3.5%13.0%201.00
26Rodriguez Carlos0.9%0.6%1.1%3.5%13.1%151.00
27Mulubrhan Henok0.8%0.3%1.0%2.7%14.1%n/a
28Berrade Urko0.8%0.7%0.9%3.0%21.7%81.00
29Gloag Thomas0.7%0.6%0.8%1.8%9.9%81.00
30García Raúl0.6%0.8%0.7%1.7%7.8%401.00

Angle

If the break goes — competitive riders outside the GC pool

The top 10 on GC after stage 19 removed — everyone below that is far enough back to be given freedom. Remaining riders under the 'Mountain break' read; the conditional column renormalizes their win probability over this pool (P(win | a non-GC rider wins), pool holds 58% of the unconditional book). The model can't see who actually makes the break — read this as a fitness-for-the-day ranking, not break-formation odds.

RiderTeamMountain break win pP(win | break wins)Book oddsBook devig
Bisiaux LéoDecathlon CMA CGM Team4.3%7.5%671.0%
Johannessen Tobias HallandUno-X Mobility4.0%6.8%511.3%
Debruyne RamsesAlpecin-Premier Tech3.2%5.4%1010.6%
Riccitello MatthewDecathlon CMA CGM Team3.0%5.1%810.8%
Buitrago SantiagoBahrain Victorious2.7%4.7%232.8%
van Aert WoutTeam Visma | Lease a Bike2.7%4.6%2010.3%
Widar JarnoLotto-Intermarché2.4%4.2%341.9%
Kuss SeppTeam Visma | Lease a Bike2.2%3.7%610.8%
Romeo IvanMovistar Team1.7%2.9%8010.1%
Vermaerke KevinUAE Team Emirates-XRG1.6%2.7%1510.4%
Brenner MarcoTudor Pro Cycling Team1.5%2.5%341.9%
Tuckwell LukeRed Bull-BORA-hansgrohe1.4%2.5%2010.3%
Almeida JoaoUAE Team Emirates-XRG1.3%2.3%232.8%
Leknessund AndreasUno-X Mobility1.3%2.3%1510.4%

Angle

The book's card — its favourites under our readings

Shortest book prices for the stage, with our blend win probability (and rank) under each scenario. 'free' = outside the excluded GC pool (top 10 on GC after stage 19), i.e. the type the peloton might let up the road.

RiderBook oddsDevigGC showdownMountain breakAttritionGC status
Mas Enric5.0013.0%8.0% (#2)5.1% (#2)7.3% (#2)GC #1
Gall Felix5.0013.0%10.4% (#1)5.4% (#1)8.6% (#1)GC #3
Kuss Sepp6.0010.8%2.3% (#11)2.2% (#13)2.2% (#11)free
Carapaz Richard6.0010.8%2.8% (#8)2.1% (#14)2.5% (#7)GC #4
Onley Oscar9.007.2%5.2% (#4)3.8% (#6)5.3% (#4)GC #5
Roglic Primoz15.004.3%7.2% (#3)3.8% (#5)5.9% (#3)GC #2
Almeida Joao23.002.8%1.4% (#19)1.3% (#22)1.5% (#17)free
Buitrago Santiago23.002.8%2.4% (#10)2.7% (#10)2.5% (#9)free
Widar Jarno34.001.9%2.5% (#9)2.4% (#12)2.4% (#10)free
Paret-Peintre Valentin34.001.9%1.1% (#22)1.2% (#24)1.0% (#23)free

After the stage

Results — won by Landa Mikel

PosRiderTeamGC showdown win pMountain break win pAttrition win pHindsight (post-hoc) win p
1Landa MikelSoudal Quick-Step0.2%0.3%0.2%0.3%
2Johannessen Tobias HallandUno-X Mobility4.6%4.0%3.9%3.9%
3Debruyne RamsesAlpecin-Premier Tech1.8%3.2%1.8%1.5%
4Miquel Delgado PauBahrain Victorious0.0%0.1%0.0%0.1%
5Berrade UrkoEquipo Kern Pharma0.9%1.1%0.9%0.8%
6Hirt JanNSN Cycling Team0.2%0.2%0.1%0.2%
7Nordhagen JørgenTeam Visma | Lease a Bike1.1%1.1%1.0%0.6%
8Kuss SeppTeam Visma | Lease a Bike2.3%2.2%2.2%2.5%
9Calzoni WalterPinarello-Q36.5 Pro Cycling Team0.1%0.1%0.1%0.1%
10Fortunato LorenzoXDS Astana Team0.7%0.7%0.6%0.3%

Scenario scoring — probability given to the actual winner

ScenarioBlend win pBook devig
GC showdown0.24%0.80%
Mountain break0.30%0.80%
Attrition0.24%0.80%
Hindsight (post-hoc)0.26%0.80%

Reflection

What we make of it

The road picked the escape, which is what the key said, and then graded it the other way. Mikel Landa went clear and won alone in 4:58:01, 47 seconds ahead of Tobias Halland Johannessen and 1:27 ahead of Ramses Debruyne, with only three riders inside two minutes of him and eighteen inside ten. The classification men were nowhere near it. The key was res_2 .45 / gc_day .40 / res_4 .15 and the oracle returned res_4: covered, not exact, weight on true 0.15. The shadow agent, which had the same three items in the other order, scored better on weight at 0.23 while also missing the argmax.

The grade is the lesson, and it is now a pattern rather than an accident. This is the third consecutive break-won mountain finish at this Vuelta to come back res_4 rather than res_2, after stage 15 and stage 19. The morning note explicitly argued the other way, that a wall of 8.3 km at 9.8% would select pure climbers and so deserved res_2 with res_4 kept to a graded-neighbour weight. The realised top fifteen was in fact climber-heavy, mountain .733 against rolling .133, and the day was still labelled res_4. Whatever separates the two items at this race, it is not the archetype share of the front group, and three straight misses in the same direction say the prior on that pair should be flipped until a mountain escape here actually returns res_2.

Against the book the boards did well everywhere except on the winner. Renormalised, the three reads gave Landa 0.27%, 0.34% and 0.29% where the book had him at 0.80%. But they gave Johannessen 4.6% to 5.2% against a book price of 1.27%, and he finished second, and Debruyne 2.0% to 3.7% against 0.64%, and he finished third. On the two podium places the model was three to five times the book and right to be. The day-menu channel was neutral on retrieval: eight of the top fifteen surfaced with the key against seven or eight from the production board.

The hindsight run says course knowledge was not the constraint. Given the day's actual shape as references, the reconstruction still prices Landa at 0.29% and ranks him 52nd. The reason is visible in his record rather than in the parcours: his best result anywhere in 2026 before this stage was fourteenth, at Catalunya in March, and he had not won a bike race since the Vuelta a Burgos in August 2021. A feature set built on recent results has nothing to work with there, and the book, at 81.0, barely did either. Some winners are not mispriced so much as unpriceable in advance, and it is worth keeping that category separate from the days where we genuinely read the road wrong.

The classification moved more than the stage win did. Mas extended his lead over Roglic from 1:37 to 2:15 while Gall took seventeen seconds back to sit 2:44 down, so second and third are now 29 seconds apart going into a final stage that carries bonus seconds at both the intermediate sprint and the line. Sepp Kuss climbed from eleventh to fifth and Oscar Onley slipped to sixth. That is the watch item for stage 21: the race for the podium is live in a way the race for red is not, and the two GC heads disagree about it more sharply than at any point this race, with the outlook head giving Mas 77.9% against a book at 82.9% while the blend, which cannot see the standings, has him fourth at 9.3% behind Roglic on 29.8%.