Cycling race predictor · Vuelta a España 2026

Stage 11 — 2026-09-02

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 167 riders priced models retrained 8e63bf1bbe book snapshot markets_1711.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 — 4.2% is tempo, and Lorca is flat
sprint1.00
mountain0.00
hilly0.00
rolling0.00
break0.00
TT0.00
keyed: bunch sprint 0.7 / survivor gallop 0.2 / fast-finisher power day 0.1 (board order by rider-type retrieval; prices unchanged)
The base case and the book's card. 1,331 m over 151.3 km with one classified drag at 4.2% is the softest parcours of the race after Xeraco, and Xeraco produced 148 riders on the winning time. References are the flat-sprint archetype at race_sprint_score 1.00 with winner groups of 127 to 181: Merlier TdF 2025 stage 3, Groves Giro 2025 stage 6, Philipsen TdF 2024 stage 10, Cavendish TdF 2024 stage 5, Bennett Vuelta 2022 stage 3. Inherits the config-root day key.
Top 5 (blend): Brennan Matthew 53.1%; Meeus Jordi 7.9%; van Aert Wout 5.3%; De Schuyteneer Steffen 2.8%; Pedersen Mads 2.7%

Aledo thins it

Aledo thins it — a reduced but still-sprinting bunch
sprint0.52
mountain0.01
hilly0.46
rolling0.01
break0.00
TT0.00
keyed: survivor gallop 0.5 / bunch sprint 0.3 / split sprint 0.1 (board order by rider-type retrieval; prices unchanged)
The middle case. Nine and a half kilometres is twenty minutes of climbing even at 4.2%, and in 35°C on the eleventh day of a Grand Tour that is enough to shed the weakest pure speed and break up the lead-out trains without genuinely selecting the race. References are the lumpy-finale reduced-sprint archetype (sprint ~0.51, hilly ~0.46): Philipsen TdF 2023 stage 7, Merlier Giro 2024 stage 3, Coquard Suisse 2024 stage 2, Milan Renewi 2024 stage 1, Merlier UAE 2025 stage 5. This is the board that called Brennan and Meeus one-two before Roquetes.
Top 5 (blend): Brennan Matthew 57.2%; van Aert Wout 7.6%; Meeus Jordi 7.1%; Pedersen Mads 4.3%; Laporte Christophe 2.6%

Sprinters ground out

Stage 10 again — a big group arrives and the fast men are not in it
sprint0.07
mountain0.05
hilly0.82
rolling0.03
break0.03
TT0.00
keyed: fast-finisher power day 0.5 / bunch sprint 0.3 / survivor gallop 0.2 (board order by rider-type retrieval; prices unchanged)
Yesterday's failure mode, drawn explicitly so it is priced rather than assumed away. Stage 10 was `bunch` by shape and a rout of the sprinters by composition, and nothing about Aledo guarantees that will not repeat — a twenty-minute drag in extreme heat is exactly the kind of effort that grinds fast men out of contention without ever looking like a selection. References are hilly days that finished with a LARGE group (winner groups 32-71) won by a puncheur or rouleur rather than a sprinter: Gaudu's Vuelta 2025 stage 3, Zimmermann's Eschborn-Frankfurt 2026, Godon's Romandie 2026 stage 3, Godon's Catalunya 2026 opener, Pogacar's Romandie 2026 stage 2. The gap between this board and the flat anchor is the retention statistic — and on stage 10 the equivalent selective board was the best retriever of the three, 5 of the actual top 15 against production's 3, which is the reason it is worth running rather than dismissing.
Top 5 (blend): Brennan Matthew 46.3%; van Aert Wout 11.7%; Pedersen Mads 6.6%; Laporte Christophe 6.1%; Meeus Jordi 3.2%

Hindsight (post-hoc)

Hindsight (post-hoc) — the day as raced: a 96-rider gallop, sprinters intact
sprint0.78
mountain0.01
hilly0.20
rolling0.01
break0.00
TT0.00
keyed: bunch sprint (board order by rider-type retrieval; prices unchanged)
Post-race reconstruction, NOT a prediction — run with --no-log. Ninety-six riders finished on Brennan's time, 57% of a 167-strong field, and the realized top-15 composition came back sprint .60 / mountain .13 / hilly .13 / time_trial .13 — a genuine sprinters' group, the res_3 signature rather than stage 10's res_1 one. References are WT days with a matching winner-group proportion (55-60%) on a sprint-dominant profile: Merlier's TdF 2026 stage 7, Kooij's Giro 2025 finale, van Uden's Giro 2025 stage 4, Godon's Catalunya 2026 stage 3, Kooij's Renewi 2025 stage 2. The question is whether a purer sprint profile would have found Coquard (2nd at 12.0, #12 on the base board) and Cort (4th at 17.0, #25) — the two names the board placed outside its top ten.
Top 5 (blend): Brennan Matthew 57.3%; Meeus Jordi 7.5%; van Aert Wout 7.4%; Pedersen Mads 4.5%; De Schuyteneer Steffen 2.4%

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%, Aledo thins it 95%, Sprinters ground out 100%, Hindsight (post-hoc) 96% — 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 sprintAledo thins itSprinters ground outHindsight (post-hoc)Book oddsBook devigMax edge
Brennan MatthewTeam Visma | Lease a Bike53.1%57.2%46.3%57.3%1.9034.2%+23.1pp
van Aert WoutTeam Visma | Lease a Bike5.3%7.6%11.7%7.4%9.007.2%+4.5pp
Meeus JordiRed Bull-BORA-hansgrohe7.9%7.1%3.2%7.5%6.0010.8%-2.9pp
Pedersen MadsLidl-Trek2.7%4.3%6.6%4.5%12.005.4%+1.2pp
Laporte ChristopheTeam Visma | Lease a Bike1.6%2.6%6.1%2.3%34.001.9%+4.2pp
De Schuyteneer SteffenLotto-Intermarché2.8%1.9%0.8%2.4%126.000.5%+2.3pp
Laurance AxelNetcompany INEOS1.0%1.7%2.7%1.5%51.001.3%+1.5pp
Fisher-Black FinnRed Bull-BORA-hansgrohe0.0%0.2%1.8%0.1%126.000.5%+1.3pp
Dainese AlbertoSoudal Quick-Step1.5%1.4%0.3%1.8%51.001.3%+0.5pp
Hofstetter HugoNSN Cycling Team0.8%1.1%0.7%1.1%41.001.6%-0.5pp
Canal CarlosMovistar Team0.3%0.4%1.0%0.4%401.000.2%+0.9pp
Coquard BryanCofidis0.6%0.7%0.4%0.9%12.005.4%-4.5pp
Cort MagnusUno-X Mobility0.5%0.3%0.4%0.3%17.003.8%-3.3pp
Tronchon BastienGroupama-FDJ United0.1%0.1%0.1%0.1%26.002.5%-2.4pp
Romele AlessandroXDS Astana Team0.0%0.0%0.0%0.0%23.002.8%-2.8pp
The gallop — 4.2% is tempo, and Lorca is flat — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Brennan Matthew53.1%42.4%65.7%64.9%87.2%1.90
2Meeus Jordi7.9%10.3%8.8%36.0%78.4%6.00
3van Aert Wout5.3%4.4%6.6%19.0%57.4%9.00
4De Schuyteneer Steffen2.8%1.9%3.5%9.6%66.3%126.00
5Pedersen Mads2.7%3.7%2.9%14.2%65.0%12.00
6Laporte Christophe1.6%3.5%1.4%12.6%54.0%34.00
7Dainese Alberto1.5%1.6%1.7%8.9%56.7%51.00
8Laurance Axel1.0%1.5%1.1%8.8%55.6%51.00
9Macias Cesar0.9%1.0%1.0%6.1%58.5%301.00
10Hofstetter Hugo0.8%1.0%0.8%7.1%77.7%41.00
11Brustenga Marc0.7%0.8%0.8%5.3%56.2%251.00
12Coquard Bryan0.6%0.8%0.7%6.4%58.1%12.00
13Cort Magnus0.5%2.7%0.1%3.7%22.4%17.00
14Govekar Matevz0.5%0.9%0.5%6.1%51.3%151.00
15Miquel Delgado Pau0.5%0.7%0.5%5.3%56.3%67.00
16Aular Orluis0.4%0.4%0.5%2.9%56.8%81.00
17González David0.3%0.7%0.3%4.3%44.3%201.00
18Oliveira Ivo0.3%0.5%0.3%4.1%21.6%126.00
19Renard Alexis0.3%0.6%0.2%4.0%45.9%251.00
20Canal Carlos0.3%0.4%0.3%1.8%21.7%401.00
21Braet Vito0.2%0.5%0.2%4.6%57.1%151.00
22Tronchon Bastien0.1%0.5%0.1%1.6%15.9%26.00
23Nys Thibau0.1%0.4%0.1%1.1%18.1%81.00
24Sentjens Sente0.1%0.0%0.1%1.2%25.9%126.00
25Camprubí Marcel0.1%0.1%0.1%1.3%11.4%151.00
26Hayter Ethan0.1%0.2%0.1%2.4%16.5%251.00
27Albanese Vincenzo0.1%0.1%0.1%1.0%26.9%126.00
28Garofoli Gianmarco0.1%0.1%0.1%0.9%10.9%401.00
29Brenner Marco0.1%0.1%0.1%1.3%8.0%501.00
30Mulubrhan Henok0.1%0.1%0.1%0.4%8.0%201.00
Aledo thins it — a reduced but still-sprinting bunch — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Brennan Matthew57.2%45.2%63.2%63.5%83.2%1.90
2van Aert Wout7.6%5.6%8.4%22.7%54.4%9.00
3Meeus Jordi7.1%9.4%6.9%33.8%77.5%6.00
4Pedersen Mads4.3%7.0%3.9%19.1%65.2%12.00
5Laporte Christophe2.6%4.1%2.3%13.0%51.8%34.00
6De Schuyteneer Steffen1.9%1.8%2.0%7.6%52.4%126.00
7Laurance Axel1.7%2.6%1.6%11.2%56.4%51.00
8Dainese Alberto1.4%1.3%1.4%7.9%48.0%51.00
9Hofstetter Hugo1.1%1.5%1.1%8.4%67.9%41.00
10Govekar Matevz0.8%1.2%0.7%7.2%51.7%151.00
11Coquard Bryan0.7%0.8%0.8%5.8%53.3%12.00
12Miquel Delgado Pau0.6%1.0%0.6%7.4%52.1%67.00
13Renard Alexis0.5%1.1%0.4%4.3%45.0%251.00
14Macias Cesar0.5%1.2%0.4%6.3%40.9%301.00
15González David0.5%1.0%0.4%4.6%37.7%201.00
16Aular Orluis0.5%0.3%0.6%4.3%58.4%81.00
17Canal Carlos0.4%0.5%0.4%2.7%28.2%401.00
18Brustenga Marc0.4%1.0%0.3%4.8%42.2%251.00
19Oliveira Ivo0.3%0.6%0.3%5.8%23.9%126.00
20Braet Vito0.3%0.6%0.2%5.2%58.5%151.00
21Cort Magnus0.3%1.0%0.1%1.7%20.4%17.00
22Tulett Ben0.2%0.6%0.1%2.7%12.6%501.00
23Fisher-Black Finn0.2%0.4%0.2%4.3%14.0%126.00
24Mulubrhan Henok0.2%0.2%0.2%1.0%14.0%201.00
25Garofoli Gianmarco0.2%0.1%0.2%1.1%18.9%401.00
26Brenner Marco0.2%0.2%0.1%1.0%13.9%501.00
27Nys Thibau0.1%0.3%0.1%2.1%20.2%81.00
28Hayter Ethan0.1%0.4%0.1%3.7%17.1%251.00
29Cobo Ivan0.1%0.2%0.1%1.1%17.1%601.00
30Albanese Vincenzo0.1%0.1%0.1%1.7%43.9%126.00
Stage 10 again — a big group arrives and the fast men are not in it — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Brennan Matthew46.3%38.5%48.2%53.5%66.8%1.90
2van Aert Wout11.7%8.6%12.5%30.1%53.8%9.00
3Pedersen Mads6.6%9.3%5.9%23.9%54.9%12.00
4Laporte Christophe6.1%8.5%5.5%25.1%56.9%34.00
5Meeus Jordi3.2%5.0%2.7%22.6%45.7%6.00
6Laurance Axel2.7%3.3%2.6%13.4%55.6%51.00
7Fisher-Black Finn1.8%2.8%1.5%10.1%32.0%126.00
8Canal Carlos1.0%0.6%1.1%3.0%25.8%401.00
9Onley Oscar0.9%0.2%1.1%1.2%21.4%501.00
10Renard Alexis0.8%1.2%0.7%4.8%28.8%251.00
11De Schuyteneer Steffen0.8%0.9%0.7%5.2%26.8%126.00
12Aular Orluis0.7%1.1%0.6%6.4%33.3%81.00
13Johannessen Tobias Halland0.7%0.7%0.7%2.2%15.8%126.00
14Brenner Marco0.7%0.9%0.7%2.5%20.3%501.00
15Tulett Ben0.7%0.8%0.7%4.7%21.4%501.00
16Miquel Delgado Pau0.7%1.4%0.5%7.3%40.4%67.00
17Hofstetter Hugo0.7%1.3%0.5%7.1%38.8%41.00
18Cobo Ivan0.6%0.5%0.6%2.8%27.2%601.00
19Debruyne Ramses0.5%0.9%0.5%6.2%28.2%401.00
20Garofoli Gianmarco0.5%0.8%0.4%3.7%35.8%401.00
21Skjelmose Mattias0.5%0.4%0.5%0.9%13.4%751.00
22Roglic Primoz0.4%0.4%0.4%1.0%11.9%601.00
23Albanese Vincenzo0.4%1.1%0.2%5.7%40.1%126.00
24González David0.4%0.7%0.3%4.2%26.2%201.00
25Carapaz Richard0.4%0.1%0.5%0.8%13.1%601.00
26Coquard Bryan0.4%0.4%0.4%3.0%35.5%12.00
27Cort Magnus0.4%1.5%0.1%5.8%23.2%17.00
28Govekar Matevz0.4%0.8%0.3%4.2%22.9%151.00
29Mulubrhan Henok0.4%0.3%0.4%1.5%17.8%201.00
30Berthet Clément0.3%0.1%0.4%1.1%11.8%n/a
Hindsight (post-hoc) — the day as raced: a 96-rider gallop, sprinters intact — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Brennan Matthew57.3%45.2%62.8%63.7%84.1%1.90
2Meeus Jordi7.5%10.0%7.2%34.9%77.8%6.00
3van Aert Wout7.4%5.5%8.2%22.9%57.7%9.00
4Pedersen Mads4.5%7.6%3.9%20.2%67.1%12.00
5De Schuyteneer Steffen2.4%2.1%2.5%8.8%54.6%126.00
6Laporte Christophe2.3%4.1%1.9%13.0%53.2%34.00
7Dainese Alberto1.8%1.5%1.9%8.7%51.0%51.00
8Laurance Axel1.5%2.5%1.3%10.9%58.7%51.00
9Hofstetter Hugo1.1%1.4%1.0%8.1%72.2%41.00
10Coquard Bryan0.9%0.9%0.9%6.5%54.0%12.00
11Govekar Matevz0.8%1.3%0.7%7.0%51.0%151.00
12Macias Cesar0.7%1.4%0.5%6.5%45.8%301.00
13Miquel Delgado Pau0.6%1.0%0.6%7.5%54.7%67.00
14Aular Orluis0.6%0.4%0.6%4.7%54.5%81.00
15Renard Alexis0.5%1.1%0.4%4.4%46.8%251.00
16Brustenga Marc0.5%0.8%0.5%5.3%45.6%251.00
17González David0.5%1.0%0.4%4.9%40.9%201.00
18Oliveira Ivo0.5%0.9%0.4%5.1%24.4%126.00
19Canal Carlos0.4%0.5%0.4%2.3%27.7%401.00
20Braet Vito0.3%0.6%0.3%5.5%60.1%151.00
21Cort Magnus0.3%1.1%0.1%2.0%22.1%17.00
22Nys Thibau0.2%0.4%0.1%1.9%22.1%81.00
23Camprubí Marcel0.1%0.2%0.1%1.6%17.0%151.00
24Mulubrhan Henok0.1%0.1%0.1%0.8%13.6%201.00
25Tronchon Bastien0.1%0.3%0.1%2.0%18.5%26.00
26Hayter Ethan0.1%0.2%0.1%2.8%15.2%251.00
27Brenner Marco0.1%0.2%0.1%0.8%12.7%501.00
28Garofoli Gianmarco0.1%0.1%0.1%1.1%17.2%401.00
29Albanese Vincenzo0.1%0.1%0.1%1.6%40.8%126.00
30Tulett Ben0.1%0.3%0.1%1.5%8.3%501.00

After the stage

Results — won by Brennan Matthew

PosRiderTeamBunch sprint win pAledo thins it win pSprinters ground out win pHindsight (post-hoc) win p
1Brennan MatthewTeam Visma | Lease a Bike53.1%57.2%46.3%57.3%
2Coquard BryanCofidis0.6%0.7%0.4%0.9%
3Meeus JordiRed Bull-BORA-hansgrohe7.9%7.1%3.2%7.5%
4Cort MagnusUno-X Mobility0.5%0.3%0.4%0.3%
5van Aert WoutTeam Visma | Lease a Bike5.3%7.6%11.7%7.4%
6Hofstetter HugoNSN Cycling Team0.8%1.1%0.7%1.1%
7Tronchon BastienGroupama-FDJ United0.1%0.1%0.1%0.1%
8Romele AlessandroXDS Astana Team0.0%0.0%0.0%0.0%
9Govekar MatevzBahrain Victorious0.5%0.8%0.4%0.8%
10Aular OrluisMovistar Team0.4%0.5%0.7%0.6%

Scenario scoring — probability given to the actual winner

ScenarioBlend win pBook devig
Bunch sprint53.12%34.17%
Aledo thins it57.24%34.17%
Sprinters ground out46.35%34.17%
Hindsight (post-hoc)57.27%34.17%

Reflection

What we make of it

Brennan won again from a 96-rider bunch, 57% of the field, and the base board called it cleanly: he was #1 at 65.7% against a 34.2% book, Meeus #2 finished 3rd, van Aert #3 finished 5th. The key scored EXACT at weight 0.65 — the highest weight-on-truth of the campaign after stage 1 — and the campaign record moves to 6/10 exact, 9/10 covered, mean 0.55.

The stage-10 lesson was applied and it worked in both directions. Yesterday's failure was a correct SHAPE key with a wrong composition: a big group arrived and the sprinters were not in it, realized shares sprint .40 / mountain .20 / time_trial .27. So this key kept bunch as a clear majority but moved the residual weight to res_3 (survivor gallop) and res_1 (the stage-10 repeat) rather than res_7, explicitly pricing the possibility that Aledo's twenty-minute drag in 35°C would grind the fast men out again. It did not: realized shares came back sprint .60 / mountain .13 / hilly .13 / tt .13, a textbook res_3 composition, and the sprinters were all present. Getting the composition question right mattered as much as the shape one — the same 0.65 bunch weight with res_7 filling the remainder would have produced a materially different board.

The retrieval channel again ordered the scenarios correctly, which is now a repeatable observation rather than a one-off. `sprinters_ground_out` — the most selective board, built from hilly days won by puncheurs from large groups — retrieved 8 of the actual top 15 against production's 5, while the two sprint-flavoured boards tied production at 7/15. On stage 10 the same pattern held (selective board 5/15 vs production 3/15) and the day went the selective way; here it held and the day went the sprinters' way. So the signal is not 'the selective board wins' but 'the selective board's key surfaces riders production's ranking systematically under-rates', which pays off on retrieval regardless of which branch the road takes. Ledger: st2 −1, st4 level, st5 +1, st6 −1, st7 +3, st10 level/+2, st11 level/+3.

Where the board still missed: Coquard finished 2nd at 12.0 and sat #12 at 0.7%, Cort 4th at 17.0 and #25, Tronchon 7th and #29, Romele 8th and #42. Those are four of the top eight the model had essentially nowhere, and three of them (Cort, Tronchon, Romele) were the same names that filled the front of stage 10. There is a small group of riders on this Vuelta who keep finishing in the front of reduced-to-large groups and whom the model does not rate; with Pogacar, Groves and Turner gone and seventeen abandons, the field's effective depth has changed faster than the rider-quality features can track.

Race context going into the mountains. Mas holds red from Roglic at 1:18, Gall 1:39, Onley 2:20, Carapaz 3:26, Skjelmose 3:55, Kuss 4:09, Tejada 4:39 — four teams with a genuine claim on the podium and one, Movistar, obliged to defend. Pedersen abandoned during stage 11, taking another of the fast men out.