Cycling race predictor · Tour de France 2026

Stage 21 — 2026-07-26

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 157 riders priced models retrained 2026-06-28 book snapshot markets_1311.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 circuit regroups — a full bunch sprint on the Champs-Élysées
sprint1.00
mountain0.00
hilly0.00
rolling0.00
break0.00
TT0.00
132.5 km from Thoiry, with about 1,000 m of climbing and none of it anywhere until Paris. The race reaches the city inside fifty kilometres, runs past the Eiffel Tower and through the courtyard of the Louvre, crosses the line for the first time at 58 km, then does four laps of the 6.8 km Champs-Élysées circuit before three laps of the longer 16.7 km loop that takes in the cobbled Côte de la Butte Montmartre — 1.1 km at 5.9%, climbed three times. The decisive number is the run-in: the top of the last ascent is 10.3 km from the finish, four kilometres further out than in the 2025 finale. That is a long time to hold a lead into a headwind-prone boulevard with five sprint teams organising behind. This read is also, quietly, what the model would say if we let it score the day itself: its profile scoring of last year's Montmartre stage comes out at sprint 1.00, because a 1.1 km cobbled ramp does not register in gradient features built for cols. So the references here are the pure flat archetype — Cavendish's 2021 stages 4 and 6, Cavendish at Saint-Vulbas and Philipsen at Saint-Amand in 2024, Merlier in Dunkirk last year — and this scenario doubles as the sprint anchor for the punchy filter below. The book is not on it: Philipsen is 13.0 and Kooij 26.0, and Merlier abandoned on stage 14. Read the numbers honestly — this board's blend mass sums to 1.311, so Kooij's 52.4% is 40.0% renormalised over the field (LambdaRank, which is book-preserving, says 41.0%) against a devigged book of 2.4%. That is still the largest single disagreement with the market anywhere on this page, and it is a disagreement about the race's shape, not about who is fastest: if the regroup happens, the model and the book would not be far apart at all.
Top 5 (blend): Kooij Olav 52.4%; Philipsen Jasper 34.9%; Kanter Max 6.3%; Girmay Biniam 6.2%; Pedersen Mads 3.9%

Reduced sprint

Montmartre thins it — a reduced gallop from a hard-man group
sprint0.08
mountain0.06
hilly0.83
rolling0.02
break0.01
TT0.00
Three ascents of a cobbled 5.9% wall in the last fifty kilometres, ridden flat out by teams trying to shed the fastest men, and then a sprint anyway — from perhaps thirty riders instead of a hundred and forty. In model space this is the high-hilly signature, which is not a puncheur read: it means a classics-flavoured day that still ends in a bunch gallop, with the pure fast men held and the hard-men fast men lifted. References are the days that shape: Pedersen's Vuelta 2022 stages 13 and 19, Colbrelli at the 2021 Dauphiné, Cort at the 2024 Dauphiné, Matthews on the opening stage of Catalunya 2022 — hilly ~0.83 across the set. This is the branch the book is closest to overall: Mathieu van der Poel is favourite at 2.25 (27.7% devigged) and Mads Pedersen third at 5.5 (11.3%), with Quinn Simmons 26, Jasper Stuyven 34, Biniam Girmay 41 and Michael Matthews 67 all priced as if they expect to be there. The question this read asks is whether Philipsen, twenty-two days deep, can hold the wheels over the cobbles three times, and the model answers it emphatically: it makes him the winner of this branch at 31.0% raw — 21.8% once the board's 1.420 blend mass is renormalised — ahead of Kooij at 13.3%, with Pedersen 7.8%, van der Poel 7.7% and Pogačar 7.0% behind them. So the model reads Montmartre as thinning the bunch without changing who wins the gallop, where the book reads it as changing the winner. That is the cleanest disagreement of the day, and the finish will settle it: if the day ends in any kind of sprint and Philipsen is not in the first three, the market's view of a cobbled wall's selectivity beats ours.
Top 5 (blend): Philipsen Jasper 31.0%; Kooij Olav 18.8%; Pedersen Mads 11.1%; van der Poel Mathieu 10.9%; Pogacar Tadej 9.9%

Montmartre move

A move over Montmartre holds the last 10 km
sprint0.02
mountain0.14
hilly0.24
rolling0.51
break0.09
TT0.00
The version that won last year: an attack over the top of the final Montmartre ascent that survives the run back to the Champs. It is a harder ask this time — 10.3 km of chase rather than six. Reference selection took two passes and the first one is worth recording. Milano-Sanremo is the obvious archetype for the mechanism (short climb, fast descent, flat closing stretch, sprinters chasing a man who went at the top), but a pure-Sanremo set scores rolling 0.85 / mountain 0.14 in model space — the same signature as the Ronde and Amstel — and it imported a monument's climbing load onto a 132 km flat circuit: the board came back with Paul Seixas third at 12.9% and van der Poel seventh at 4.0%, which is not a reading of this day. The kept set mixes the two Sanremos that resolved as a move (van der Poel 2023, Mohorič 2022) with three flat races decided over a short repeated wall — Pedersen at Hamburg in 2023, Kragh Andersen soloing Eschborn-Frankfurt in 2023, Matthews winning it from a reduced group in 2025 — for an average of rolling 0.51 / hilly 0.24 / mountain 0.14. Because the men this move has to beat home are the sprinters and not the GC group, this read carries `exclude_sprinters` rather than a GC cut: the conditional column drops every rider the model classifies as a pure sprinter (real speed on today's flat anchor, collapsing when the road turns selective) and renormalises the rest into 'if the move sticks' odds. There is no GC exclusion at all today — the yellow jersey is settled at 6:26 and the podium at 2:14, so for the first time in three weeks nobody is imprisoned by the classification. The book's shape says it takes this branch seriously: van der Poel 2.25, Pogačar 4.5 and Evenepoel 9.0 are the first, second and fourth prices, and none of the three is a sprinter. This board is the only one of the three that is honest at face value — its blend mass is 1.002, so the printed numbers need no renormalising — and it puts Pogačar at 41.3% against a devigged 13.8%, Evenepoel at 8.4% against 6.9%, and van der Poel at 6.4% against 27.7%. The model and the market agree on the branch and disagree completely on who takes it: we say the strongest rider in the race is the most likely man in any move that goes, the book says the best bike-handler over cobbles at the end of three weeks is. Note also what the model cannot represent — a 132 km parade with the jersey settled is the one day of the year where the peloton's willingness to chase is a social fact rather than a physical one.
Top 5 if the break wins (the sprinters removed): Pogacar Tadej 42.7%; Evenepoel Remco 8.7%; Seixas Paul 7.7%; van der Poel Mathieu 6.6%; del Toro Isaac 3.9%

Hindsight (post-hoc)

Hindsight: what the day actually was
sprint0.76
mountain0.01
hilly0.16
rolling0.00
break0.07
TT0.00
Post-race reconstruction, not a prediction — never logged, never settled. The usual gap-curve match degenerates today: all 158 classified finishers were given the same time, so the finish curve is a single point (158 within 0s) and carries no information about how hard the day was. Matching on that curve returns, first and by a distance, Tour de France 2025 stage 21 — the same Montmartre finale, also scored as one same-time bunch — followed by a run of flat sprint stages. That is itself the finding: the timing convention on this stage makes a selective circuit race indistinguishable from a parade sprint in the training data. Last year's edition is stored with race_sprint_score 1.0 despite being won by a solo move over the top. The refs kept here are the curve matches whose winner was a classics fast-man rather than a pure sprinter — TdF 2025 st21 (van Aert), TdF 2024 st3 (Girmay), Paris-Nice 2023 st2 and Dauphiné 2024 st1 (Pedersen), Dauphiné 2022 st5 (van Aert) — which is the closest the reference machinery can come to 'a bunch finish that the pure sprinters do not win'.
Top 5 (blend): Kooij Olav 41.7%; Philipsen Jasper 31.4%; Girmay Biniam 11.5%; Kanter Max 8.1%; van der Poel Mathieu 5.5%

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 131%, Reduced sprint 142%, Hindsight (post-hoc) 132% — 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 sprintMontmartre moveHindsight (post-hoc)Book oddsBook devigMax edge
Kooij OlavDecathlon CMA CGM Team52.4%18.8%–41.7%26.002.4%+50.0pp
Philipsen JasperAlpecin-Premier Tech34.9%31.0%–31.4%13.004.8%+30.1pp
Girmay BiniamNSN Cycling Team6.2%7.7%1.0%11.5%41.001.5%+10.0pp
Pedersen MadsLidl-Trek3.9%11.1%1.5%4.0%5.5011.3%-0.2pp
van der Poel MathieuAlpecin-Premier Tech2.0%10.9%6.6%5.5%2.2527.7%-16.7pp
Pogacar TadejUAE Team Emirates-XRG3.1%9.9%42.7%3.0%4.5013.8%-3.9pp
Kanter MaxXDS Astana Team6.3%4.2%–8.1%151.000.4%+7.7pp
Wærenskjold SørenUno-X Mobility3.2%3.8%0.8%4.3%81.000.8%+3.5pp
Pidcock TomPinarello-Q36.5 Pro Cycling Team0.2%3.3%3.7%0.4%29.002.1%+1.2pp
Fretin MilanCofidis2.8%1.7%–3.1%251.000.2%+2.9pp
Bauhaus PhilBahrain Victorious2.7%0.7%–2.5%801.000.1%+2.7pp
Oldani StefanoCaja Rural-Seguros RGA0.4%2.7%0.3%0.5%801.000.1%+2.6pp
Askey LewisNSN Cycling Team0.8%2.6%0.2%0.9%151.000.4%+2.1pp
Matthews MichaelTeam Jayco-AlUla1.9%2.4%0.8%2.3%67.000.9%+1.5pp
Ballerini DavideXDS Astana Team1.7%0.7%–2.1%151.000.4%+1.7pp
Evenepoel RemcoRed Bull-BORA-hansgrohe0.1%2.0%8.7%0.1%9.006.9%-4.9pp
Vacek MathiasLidl-Trek0.5%1.9%0.6%0.8%126.000.5%+1.4pp
Bittner PavelTeam Picnic PostNL1.6%0.8%–1.5%301.000.2%+1.4pp
Van Gils MaximRed Bull-BORA-hansgrohe0.1%1.6%0.6%0.1%81.000.8%+0.8pp
Aranburu AlexCofidis0.2%1.5%0.6%0.3%251.000.2%+1.2pp
Wright FredPinarello-Q36.5 Pro Cycling Team0.7%1.3%0.2%0.6%151.000.4%+0.9pp
Grégoire RomainGroupama-FDJ United0.0%1.2%1.2%0.1%81.000.8%+0.4pp
Vauquelin KévinNetcompany INEOS0.1%1.0%0.8%0.1%251.000.2%+0.8pp
Simmons QuinnLidl-Trek0.0%0.2%0.1%0.1%26.002.4%-2.2pp
Montmartre move is shown conditional on the break winning — every pure sprinter 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 or a pure sprinter we assume won't be up the road.
The circuit regroups — a full bunch sprint on the Champs-Élysées — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Kooij Olav52.4%48.3%41.0%71.7%88.1%26.00
2Philipsen Jasper34.9%39.7%25.4%62.0%87.0%13.00
3Kanter Max6.3%4.5%5.3%18.0%81.7%151.00
4Girmay Biniam6.2%4.1%5.2%15.4%81.9%41.00
5Pedersen Mads3.9%3.2%3.1%14.5%61.8%5.50
6Wærenskjold Søren3.2%3.3%2.5%9.4%75.1%81.00
7Pogacar Tadej3.1%7.0%1.4%10.6%30.8%4.50
8Fretin Milan2.8%2.3%2.3%10.1%76.6%251.00
9Bauhaus Phil2.7%1.4%2.4%11.1%61.9%801.00
10van der Poel Mathieu2.0%2.5%1.4%10.3%49.8%2.25
11Matthews Michael1.9%1.9%1.4%7.6%66.3%67.00
12Ballerini Davide1.7%1.0%1.5%8.0%49.5%151.00
13Bittner Pavel1.6%1.9%1.1%7.4%75.5%301.00
14Askey Lewis0.8%1.3%0.5%5.6%45.3%151.00
15Wright Fred0.7%0.8%0.5%3.4%32.8%151.00
16van Dijke Tim0.6%0.7%0.5%2.6%37.1%501.00
17Vacek Mathias0.5%0.5%0.3%2.1%14.6%126.00
18Oldani Stefano0.4%0.1%0.4%5.5%46.9%801.00
19Bol Cees0.3%0.3%0.2%1.7%21.7%801.00
20Stuyven Jasper0.3%0.1%0.3%1.3%31.4%34.00
21del Toro Isaac0.3%0.2%0.2%0.9%4.8%67.00
22Cort Magnus0.2%0.2%0.2%1.3%30.0%201.00
23Pidcock Tom0.2%0.2%0.2%3.0%9.1%29.00
24Artz Huub0.2%0.3%0.2%2.4%29.8%126.00
25Godon Dorian0.2%0.2%0.2%1.7%22.0%81.00
26Teunissen Mike0.2%0.1%0.2%1.5%34.9%301.00
27Asgreen Kasper0.2%0.5%0.0%1.0%7.6%81.00
28Aranburu Alex0.2%0.2%0.1%3.0%12.2%251.00
29Russo Clément0.2%0.2%0.1%0.6%39.3%401.00
30Pluimers Rick0.1%0.1%0.1%1.1%22.2%151.00
Montmartre thins it — a reduced gallop from a hard-man group — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Philipsen Jasper31.0%30.4%22.0%47.7%67.0%13.00
2Kooij Olav18.8%20.1%12.9%32.1%44.4%26.00
3Pedersen Mads11.1%13.3%7.3%28.9%60.3%5.50
4van der Poel Mathieu10.9%15.6%6.5%38.7%65.8%2.25
5Pogacar Tadej9.9%6.8%7.8%21.0%50.6%4.50
6Girmay Biniam7.7%7.4%5.5%19.3%52.9%41.00
7Kanter Max4.2%5.6%2.6%17.9%45.6%151.00
8Wærenskjold Søren3.8%4.7%2.5%11.5%37.8%81.00
9Pidcock Tom3.3%0.7%3.0%13.5%50.3%29.00
10Oldani Stefano2.7%0.7%2.4%3.4%40.1%801.00
11Askey Lewis2.6%2.9%1.7%11.0%35.0%151.00
12Matthews Michael2.4%2.8%1.6%9.6%49.6%67.00
13Evenepoel Remco2.0%2.4%1.3%6.7%24.4%9.00
14Vacek Mathias1.9%1.9%1.4%7.8%37.9%126.00
15Fretin Milan1.7%4.9%0.4%8.3%32.5%251.00
16Van Gils Maxim1.6%1.1%1.2%6.6%25.7%81.00
17Aranburu Alex1.5%0.2%1.3%5.7%27.1%251.00
18Wright Fred1.3%1.1%1.0%5.2%27.9%151.00
19Grégoire Romain1.2%0.5%1.0%4.3%18.9%81.00
20Vauquelin Kévin1.0%0.2%0.9%2.6%11.2%251.00
21Godon Dorian0.9%1.3%0.5%5.2%29.2%81.00
22Bittner Pavel0.8%2.1%0.3%6.5%27.2%301.00
23Johannessen Tobias Halland0.8%0.7%0.6%2.7%18.9%501.00
24Stuyven Jasper0.8%0.3%0.7%1.7%29.2%34.00
25Ballerini Davide0.7%1.1%0.4%4.6%17.3%151.00
26Seixas Paul0.7%0.7%0.5%4.9%25.2%401.00
27Ayuso Juan0.7%0.3%0.6%3.5%12.8%801.00
28Skjelmose Mattias0.7%0.8%0.5%2.4%15.2%101.00
29Bauhaus Phil0.7%0.4%0.6%4.0%15.7%801.00
30Pluimers Rick0.7%0.2%0.6%4.4%40.9%151.00
A move over Montmartre holds the last 10 km — top 30, all heads · the sprinters removed
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Pogacar Tadej41.3%32.1%43.6%53.1%77.0%4.50
2Evenepoel Remco8.4%5.5%9.1%16.9%50.3%9.00
3Seixas Paul7.5%3.1%8.5%9.1%49.4%401.00
4van der Poel Mathieu6.4%13.2%4.7%29.3%62.9%2.25
5del Toro Isaac3.7%1.2%4.4%6.4%36.1%67.00
6Pidcock Tom3.6%1.1%4.2%5.1%47.2%29.00
7Ayuso Juan2.7%0.9%3.1%4.8%31.2%801.00
8Pedersen Mads1.4%2.6%1.1%9.2%35.1%5.50
9Martinez Lenny1.4%2.2%1.2%4.6%35.1%601.00
10Grégoire Romain1.2%1.4%1.2%5.4%34.1%81.00
11Girmay Biniam1.0%1.7%0.8%6.6%46.5%41.00
12Skjelmose Mattias0.9%0.7%0.9%3.2%25.6%101.00
13Vauquelin Kévin0.8%0.5%0.9%2.9%18.9%251.00
14Johannessen Tobias Halland0.8%0.6%0.8%5.1%31.2%501.00
15Matthews Michael0.8%1.6%0.6%6.3%40.7%67.00
16Wærenskjold Søren0.8%2.1%0.4%6.3%28.7%81.00
17Jorgenson Matteo0.7%1.0%0.6%4.2%18.2%151.00
18Van Gils Maxim0.6%0.9%0.6%2.9%16.0%81.00
19Aranburu Alex0.6%0.4%0.7%4.4%35.8%251.00
20Vacek Mathias0.6%1.1%0.5%5.6%32.0%126.00
21Piganzoli Davide0.5%0.6%0.5%4.2%34.1%n/a
22Gee Derek0.5%0.6%0.5%4.1%15.9%801.00
23Bernal Egan0.4%0.6%0.4%4.4%18.1%801.00
24Hindley Jai0.4%0.3%0.4%2.4%11.7%n/a
25Carapaz Richard0.4%0.2%0.4%3.4%29.1%251.00
26Higuita Sergio0.4%0.2%0.4%2.5%20.3%1001.00
27Alaphilippe Julian0.3%0.5%0.3%1.1%10.0%301.00
28Riccitello Matthew0.3%1.0%0.2%3.2%13.4%n/a
29Oldani Stefano0.3%0.2%0.3%2.1%28.7%801.00
30Benoot Tiesj0.3%0.3%0.3%1.7%19.3%501.00
Hindsight: what the day actually was — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Kooij Olav41.7%45.9%30.5%65.2%78.1%26.00
2Philipsen Jasper31.4%29.3%24.2%47.1%72.8%13.00
3Girmay Biniam11.5%9.8%9.1%23.0%68.4%41.00
4Kanter Max8.1%5.6%6.8%20.5%70.3%151.00
5van der Poel Mathieu5.5%7.5%3.6%19.0%48.9%2.25
6Wærenskjold Søren4.3%3.4%3.5%10.0%52.4%81.00
7Pedersen Mads4.0%3.5%3.2%15.3%49.0%5.50
8Fretin Milan3.1%2.9%2.4%10.5%56.4%251.00
9Pogacar Tadej3.0%5.1%1.7%8.8%29.5%4.50
10Bauhaus Phil2.5%1.2%2.2%9.4%45.2%801.00
11Matthews Michael2.3%2.4%1.7%8.1%51.1%67.00
12Ballerini Davide2.1%1.3%1.8%7.7%35.0%151.00
13Bittner Pavel1.5%2.5%0.9%8.1%52.8%301.00
14Askey Lewis0.9%1.3%0.6%6.1%31.9%151.00
15Vacek Mathias0.8%0.5%0.7%2.6%14.5%126.00
16van Dijke Tim0.8%0.6%0.6%3.1%34.3%501.00
17Godon Dorian0.6%1.4%0.3%5.3%35.7%81.00
18Wright Fred0.6%0.9%0.4%10.5%34.6%151.00
19Oldani Stefano0.5%0.1%0.5%3.5%46.0%801.00
20Pidcock Tom0.4%0.4%0.3%4.2%17.6%29.00
21Stuyven Jasper0.4%0.2%0.3%1.2%22.3%34.00
22del Toro Isaac0.3%0.3%0.2%1.0%9.8%67.00
23Vermeersch Florian0.3%0.6%0.1%1.9%17.3%301.00
24Bol Cees0.3%0.2%0.3%1.2%21.6%801.00
25Aranburu Alex0.3%0.2%0.2%4.6%19.1%251.00
26Teunissen Mike0.3%0.1%0.3%1.5%32.0%301.00
27Pluimers Rick0.2%0.1%0.2%1.7%21.8%151.00
28Cort Magnus0.2%0.2%0.2%1.0%26.9%201.00
29Artz Huub0.2%0.3%0.1%2.9%24.3%126.00
30Asgreen Kasper0.2%0.5%0.1%1.1%7.8%81.00

Angle

If the move sticks — the field with the pure sprinters removed

On a flat finale the escape has to beat the fast men home, so the pool that can win from a move is the field minus every pure sprinter. There is no GC cut today: the yellow jersey is settled at 6:26 and the podium at 2:14, so for the first time in three weeks nobody is imprisoned by the classification and the leader himself is the book's second favourite. Pure sprinter is the model's own verdict, not a hand list: real speed on today's flat-sprint anchor (blend >= 1%) but retaining under 8% of it once the road turns selective — that collapse is what separates a Merlier from a Pedersen, and the split here is clean, with Philipsen last on the sprinter side at 0.06 retention and Girmay first on the other at 0.16. Classified out: Ballerini, Bauhaus, Bittner, Fretin, Kanter, Kooij, Philipsen. The conditional column renormalizes the survivors' win probability under the 'Montmartre move' read over this pool (P(win | a move wins); the pool holds 97% of that read's unconditional book, which is itself the tell that this reading already buries the sprinters). The model cannot see who actually goes clear — read it as a fitness-for-the-day ranking, not move-formation odds.

RiderTeamMontmartre move win pP(win | a move wins)Book oddsBook devig
Pogacar TadejUAE Team Emirates-XRG41.3%42.7%413.8%
Evenepoel RemcoRed Bull-BORA-hansgrohe8.4%8.7%96.9%
Seixas PaulDecathlon CMA CGM Team7.5%7.7%4010.2%
van der Poel MathieuAlpecin-Premier Tech6.4%6.6%227.7%
del Toro IsaacUAE Team Emirates-XRG3.7%3.9%670.9%
Pidcock TomPinarello-Q36.5 Pro Cycling Team3.6%3.7%292.1%
Ayuso JuanLidl-Trek2.7%2.8%8010.1%
Pedersen MadsLidl-Trek1.4%1.5%611.3%
Martinez LennyBahrain Victorious1.4%1.4%6010.1%
Grégoire RomainGroupama-FDJ United1.2%1.2%810.8%
Girmay BiniamNSN Cycling Team1.0%1.0%411.5%
Skjelmose MattiasLidl-Trek0.9%0.9%1010.6%
Vauquelin KévinNetcompany INEOS0.8%0.8%2510.2%
Johannessen Tobias HallandUno-X Mobility0.8%0.8%5010.1%

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. No GC pool is excluded today — the classification is settled, so every rider is free and the 'GC status' column reads free for all of them.

RiderBook oddsDevigBunch sprintReduced sprintMontmartre moveGC status
van der Poel Mathieu2.2527.7%2.0% (#10)10.9% (#4)6.4% (#4)free
Pogacar Tadej4.5013.8%3.1% (#7)9.9% (#5)41.3% (#1)free
Pedersen Mads5.5011.3%3.9% (#5)11.1% (#3)1.4% (#9)free
Evenepoel Remco9.006.9%0.1% (#45)2.0% (#13)8.4% (#2)free
Philipsen Jasper13.004.8%34.9% (#2)31.0% (#1)2.0% (#8)free
Kooij Olav26.002.4%52.4% (#1)18.8% (#2)0.9% (#14)free
Simmons Quinn26.002.4%0.0% (#49)0.2% (#54)0.1% (#66)free
Pidcock Tom29.002.1%0.2% (#23)3.3% (#9)3.6% (#6)free
Stuyven Jasper34.001.8%0.3% (#20)0.8% (#24)0.1% (#54)free
Ganna Filippo34.001.8%0.1% (#38)0.1% (#71)0.1% (#57)free

After the stage

Results — won by van der Poel Mathieu

PosRiderTeamBunch sprint win pReduced sprint win pMontmartre move win pHindsight (post-hoc) win p
1van der Poel MathieuAlpecin-Premier Tech2.0%10.9%6.4%5.5%
2Philipsen JasperAlpecin-Premier Tech34.9%31.0%2.0%31.4%
3Pedersen MadsLidl-Trek3.9%11.1%1.4%4.0%
4Kanter MaxXDS Astana Team6.3%4.2%0.3%8.1%
5Kooij OlavDecathlon CMA CGM Team52.4%18.8%0.9%41.7%
6Mohoric MatejBahrain Victorious0.0%0.1%0.0%0.1%
7Pluimers RickTudor Pro Cycling Team0.1%0.7%0.1%0.2%
8Turgis AnthonyTeam TotalEnergies0.1%0.2%0.1%0.1%
9Fretin MilanCofidis2.8%1.7%0.1%3.1%
10Russo ClémentGroupama-FDJ United0.2%0.2%0.0%0.1%

Scenario scoring — probability given to the actual winner

ScenarioBlend win pBook devig
Bunch sprint1.99%27.65%
Reduced sprint10.93%27.65%
Montmartre move6.37%27.65%
Hindsight (post-hoc)5.45%27.65%

Reflection

What we make of it

The road took the sprint branch, and took it in the shape the middle read described. Mathieu van der Poel won from Jasper Philipsen, Mads Pedersen, Max Kanter, Olav Kooij and Matej Mohorič — a front group that mixes pure sprinters (Kooij 5th, Kanter 4th, Milan Fretin 9th) with punchy fast men (Pedersen, Mohorič, Turgis, Russo, Pluimers), which is the reduced-sprint reading almost exactly. The move-over-Montmartre branch did not happen: Pogačar finished 30th, Evenepoel 32nd, Seixas 47th, and the GC group rode in as passengers. That read had put Pogačar at 41.3% on a board whose mass was an honest 1.002, so it was a real opinion honestly stated, and it was wrong by the widest margin of the three.

Scoring the winner: the reduced-sprint read gave van der Poel 7.70% renormalised over the field (4th on its board) against a devigged book price of 27.65%. The Montmartre-move read gave him 6.36% (also 4th), and the bunch-sprint read 1.51% (10th). So every branch we published underpriced the winner by a factor of three or more, and the book — which made him the outright favourite at 2.25 — had the single clearest call of the day. Choosing the branch correctly bought us a factor of five over the flat read and still left most of the distance to the market unclosed.

The hindsight run says course knowledge was not the constraint, and it says so in an unusually blunt way. All 158 classified finishers were given the same time, so the gap curve is a single point and the retrospective match has nothing to bite on. Matched anyway, it returns Tour de France 2025 stage 21 first by a distance — the same Montmartre finale, also scored as one same-time bunch — and then a run of flat sprint stages. Built from the curve matches whose winner was a classics fast-man rather than a pure sprinter, the hindsight board gives van der Poel 4.12% and 5th place, which is *worse* than the reduced-sprint read we published before the start. Knowing exactly how the day finished would have moved us away from the winner, not toward him.

That is worth recording as a data fact and not just a stage note: the same-time convention on this stage makes a selective circuit race indistinguishable from a parade sprint in the training data. Last year's edition — won by a solo move over the top of Montmartre — is stored with race_sprint_score 1.0. Any reference-based reading of this stage type inherits that mislabelling, which is why the profile scorer put today's hindsight set at sprint 0.76 / hilly 0.16 and produced a Kooij-Philipsen board. Two circuits over a 7% cobbled wall inside the last 20 km leave no trace in the feature that is supposed to describe the day.

The residual gap on van der Poel is the rider-specific version of the standing hole rather than a terrain one. The model can see that he is a fast finisher who survives short walls — that is why he is 4th on the selective read rather than 30th — but it cannot see that this particular finale, at the end of three weeks, with a team-mate who will lead him out and no reason for anyone to save anything, is his single best day of the year. That is the same class of missing signal as the shattered non-mountain stages flagged on stages 4 and 9: rider-and-occasion, not rider-and-gradient. Carry both into the post-Paris retrospective, and add the labelling item — final-stage and circuit finishes need a character source that is not the finishing-time spread.