Cycling race predictor · Tour de France 2026

Stage 5 — 2026-07-08

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 184 riders priced models retrained 2026-06-28 book snapshot markets_1242.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.

Full sprint

Full bunch sprint — flat GT gallop
sprint1.00
mountain0.00
hilly0.00
rolling0.00
break0.00
TT0.00
Flat Grand Tour bunch sprints won from a full-field gallop (race_sprint_score 1.00, 150+ riders together at the line): Merlier TdF'25 s3, Philipsen TdF'24 s10, Cavendish TdF'24 s5, Jakobsen TdF'22 s2, Bennett Vuelta'22 s3, Groves Giro'25 s6. The pure-sprint read: the peloton controls all day, the field arrives intact into a straightforward finale, and the fastest man off the best lead-out train wins. Favours the top of the book — Merlier, Philipsen, Kooij, Girmay.
Top 5 (blend): Merlier Tim 44.3%; Kooij Olav 26.7%; Philipsen Jasper 20.5%; De Lie Arnaud 4.5%; Gaviria Fernando 4.3%

Reduced sprint

Slightly reduced group sprint — lumpy finale
sprint0.52
mountain0.01
hilly0.46
rolling0.01
break0.00
TT0.00
Flat stages with a lumpy finale that thinned the bunch to a reduced-but-still-sprint gallop (avg sprint ~0.51, hilly ~0.46, breakaway ~0): Philipsen TdF'23 s7, Merlier Giro'24 s3, Coquard Suisse'24 s2, Milan Renewi'24 s1, Merlier UAE'25 s5. In model space a lifted hilly-score over a retained sprint = a reduced bunch sprint — durable fast-men up, the weakest pure sprinters and fractured lead-out trains shed, but no true selection. The read where a late rise strings the finale out and a hard-man sprinter takes the smaller kick: Pedersen, Girmay, van der Poel, a surviving Philipsen over the leggier pure speed.
Top 5 (blend): Merlier Tim 33.3%; Kooij Olav 27.3%; Philipsen Jasper 19.9%; Girmay Biniam 8.2%; De Lie Arnaud 5.9%

Hindsight (post-hoc)

Hindsight (post-hoc) — stages that finished like this one
sprint0.03
mountain0.12
hilly0.08
rolling0.53
break0.24
TT0.00
Post-race reconstruction, NOT a prediction (never logged). The five DB stages whose finish structure most resembled stage 5's — a sprint that strung out to a ~19-rider front group (19 same-time, 79 within 30s, 104 within 60s, 118 within 2min, field spread to 11 min): Merlier TdF'21 s3, Molano Vuelta'22 s21, Philipsen TdF'23 s11, Cort Vuelta'21 s19, Benjamin Thomas Giro'24 s5 — flat/fast-finish days won by a pure sprinter or a reduced-group fast-man where the bunch fragmented rather than arriving whole. Answers: if we had known it would be a gallop that thinned to a ~19-rider front group, what would the model have said?
Top 5 (blend): Pogacar Tadej 17.5%; van der Poel Mathieu 5.1%; Seixas Paul 4.7%; De Lie Arnaud 3.8%; Philipsen Jasper 3.3%

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.

RiderTeamFull sprintReduced sprintHindsight (post-hoc)Book oddsBook devigMax edge
Merlier TimSoudal Quick-Step44.3%33.3%1.2%2.7026.3%+18.0pp
Kooij OlavDecathlon CMA CGM Team26.7%27.3%1.2%5.0014.2%+13.1pp
Philipsen JasperAlpecin-Premier Tech20.5%19.9%3.3%4.0017.8%+2.7pp
Pogacar TadejUAE Team Emirates-XRG0.9%1.4%17.5%151.000.5%+17.1pp
Girmay BiniamNSN Cycling Team3.5%8.2%1.7%4.5015.8%-7.7pp
De Lie ArnaudLotto-Intermarché4.5%5.9%3.8%n/a––
van der Poel MathieuAlpecin-Premier Tech1.2%3.0%5.1%51.001.4%+3.7pp
Seixas PaulDecathlon CMA CGM Team0.0%0.1%4.7%1001.000.1%+4.7pp
Gaviria FernandoCaja Rural-Seguros RGA4.3%3.4%0.4%67.001.1%+3.2pp
de Kleijn ArvidTudor Pro Cycling Team3.8%1.8%0.2%67.001.1%+2.7pp
Kanter MaxXDS Astana Team3.6%3.7%1.2%81.000.9%+2.8pp
del Toro IsaacUAE Team Emirates-XRG0.2%0.2%3.0%151.000.5%+2.5pp
Ackermann PascalTeam Jayco-AlUla2.9%2.4%0.2%201.000.4%+2.5pp
Pedersen MadsLidl-Trek1.8%2.4%2.5%15.004.7%-2.3pp
Bittner PavelTeam Picnic PostNL2.0%2.0%0.1%101.000.7%+1.3pp
Fretin MilanCofidis1.8%1.6%0.1%41.001.7%+0.1pp
Wærenskjold SørenUno-X Mobility1.7%1.7%1.5%67.001.1%+0.7pp
Pidcock TomPinarello-Q36.5 Pro Cycling Team0.1%0.3%1.6%201.000.4%+1.3pp
Bauhaus PhilBahrain Victorious1.5%1.2%0.1%201.000.4%+1.1pp
Evenepoel RemcoRed Bull-BORA-hansgrohe0.0%0.1%1.3%251.000.3%+1.0pp
Ballerini DavideXDS Astana Team1.2%1.2%0.2%301.000.2%+1.0pp
Martinez LennyBahrain Victorious0.0%0.0%1.1%n/a––
Grégoire RomainGroupama-FDJ United0.0%0.1%1.1%501.000.1%+0.9pp
Matthews MichaelTeam Jayco-AlUla0.9%1.1%0.6%201.000.4%+0.7pp
Full bunch sprint — flat GT gallop — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Merlier Tim44.3%55.5%30.7%72.3%89.5%2.70
2Kooij Olav26.7%29.5%19.4%60.4%84.7%5.00
3Philipsen Jasper20.5%17.4%16.2%46.8%82.3%4.00
4De Lie Arnaud4.5%1.9%4.0%12.2%64.4%n/a
5Gaviria Fernando4.3%1.3%4.0%10.4%70.5%67.00
6de Kleijn Arvid3.8%1.9%3.3%10.5%75.5%67.00
7Kanter Max3.6%3.0%2.8%15.3%80.8%81.00
8Girmay Biniam3.5%2.5%2.9%12.6%80.2%4.50
9Ackermann Pascal2.9%1.4%2.5%8.7%74.1%201.00
10Bittner Pavel2.0%1.7%1.5%9.8%72.8%101.00
11Fretin Milan1.8%1.8%1.4%8.2%70.9%41.00
12Pedersen Mads1.8%1.2%1.5%7.0%41.9%15.00
13Wærenskjold Søren1.7%1.8%1.3%7.3%65.3%67.00
14Bauhaus Phil1.5%0.7%1.3%9.4%53.9%201.00
15van der Poel Mathieu1.2%2.2%0.7%11.3%37.7%51.00
16Ballerini Davide1.2%1.0%0.9%9.5%50.7%301.00
17Matthews Michael0.9%0.6%0.8%6.3%58.3%201.00
18Pogacar Tadej0.9%1.0%0.7%4.4%18.7%151.00
19Wright Fred0.4%0.2%0.3%2.1%22.4%501.00
20van Dijke Tim0.4%0.6%0.2%3.6%24.5%n/a
21Askey Lewis0.4%0.4%0.3%3.0%19.6%601.00
22Biesterbos Frits0.3%0.3%0.2%1.7%37.2%n/a
23Oldani Stefano0.2%0.1%0.2%1.1%33.3%501.00
24Vacek Mathias0.2%0.1%0.2%2.0%13.6%101.00
25del Toro Isaac0.2%0.3%0.1%1.0%7.0%151.00
26Bol Cees0.2%0.2%0.1%2.0%15.4%801.00
27Cort Magnus0.2%0.2%0.1%0.8%25.9%201.00
28Stuyven Jasper0.2%0.1%0.1%1.1%24.7%201.00
29Trentin Matteo0.1%0.1%0.1%1.6%45.7%301.00
30Godon Dorian0.1%0.1%0.1%0.8%11.7%101.00
Slightly reduced group sprint — lumpy finale — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Merlier Tim33.3%50.4%21.5%66.4%82.9%2.70
2Kooij Olav27.3%25.7%21.5%51.9%73.8%5.00
3Philipsen Jasper19.9%16.2%16.3%41.9%73.1%4.00
4Girmay Biniam8.2%5.5%7.0%22.9%74.5%4.50
5De Lie Arnaud5.9%2.7%5.3%14.1%61.0%n/a
6Kanter Max3.7%3.4%2.9%16.9%74.0%81.00
7Gaviria Fernando3.4%1.0%3.2%9.0%54.6%67.00
8van der Poel Mathieu3.0%2.6%2.4%10.2%42.7%51.00
9Ackermann Pascal2.4%1.1%2.2%7.7%59.4%201.00
10Pedersen Mads2.4%1.5%2.1%8.7%42.1%15.00
11Bittner Pavel2.0%2.2%1.5%11.4%58.8%101.00
12de Kleijn Arvid1.8%1.3%1.5%8.2%44.0%67.00
13Wærenskjold Søren1.7%1.8%1.3%7.9%46.8%67.00
14Fretin Milan1.6%2.0%1.2%9.1%55.2%41.00
15Pogacar Tadej1.4%2.2%0.9%8.2%27.8%151.00
16Ballerini Davide1.2%0.9%1.0%10.6%39.9%301.00
17Bauhaus Phil1.2%0.6%1.0%8.4%47.9%201.00
18Matthews Michael1.1%0.9%0.9%9.8%57.6%201.00
19Askey Lewis0.6%0.3%0.5%5.3%36.6%601.00
20Oldani Stefano0.4%0.1%0.4%1.2%45.7%501.00
21Vacek Mathias0.4%0.2%0.3%2.2%16.6%101.00
22Wright Fred0.4%0.3%0.3%2.6%28.8%501.00
23Pidcock Tom0.3%0.2%0.3%2.0%13.2%201.00
24Biesterbos Frits0.3%0.3%0.2%2.1%38.1%n/a
25van Dijke Tim0.3%0.3%0.2%2.6%19.2%n/a
26Van Gils Maxim0.3%0.4%0.2%1.3%8.9%301.00
27Aranburu Alex0.2%0.1%0.2%1.2%23.2%401.00
28Stuyven Jasper0.2%0.2%0.2%1.8%23.8%201.00
29Bol Cees0.2%0.1%0.2%1.3%15.2%801.00
30Godon Dorian0.2%0.2%0.1%1.1%16.3%101.00
Hindsight (post-hoc) — stages that finished like this one — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Book odds
1Pogacar Tadej17.5%16.7%23.4%31.9%59.8%151.00
2van der Poel Mathieu5.1%6.6%6.3%24.1%54.3%51.00
3Seixas Paul4.7%4.0%6.4%8.3%36.0%1001.00
4De Lie Arnaud3.8%2.2%5.4%13.1%47.4%n/a
5Philipsen Jasper3.3%3.1%4.4%10.8%32.2%4.00
6del Toro Isaac3.0%1.1%4.4%4.7%26.3%151.00
7Pedersen Mads2.5%1.6%3.5%7.0%29.7%15.00
8Girmay Biniam1.7%2.3%2.1%8.2%43.1%4.50
9Pidcock Tom1.6%0.3%2.5%5.2%29.9%201.00
10Wærenskjold Søren1.5%2.8%1.6%7.9%28.6%67.00
11Evenepoel Remco1.3%1.3%1.7%17.2%34.4%251.00
12Kanter Max1.2%2.8%1.3%10.3%41.1%81.00
13Kooij Olav1.2%2.4%1.2%7.5%20.9%5.00
14Merlier Tim1.2%2.1%1.3%8.7%24.4%2.70
15Martinez Lenny1.1%3.8%0.9%6.1%18.7%n/a
16Grégoire Romain1.1%1.0%1.5%4.1%28.9%501.00
17Vacek Mathias1.1%0.2%1.6%2.3%18.7%101.00
18Aranburu Alex0.9%1.0%1.2%4.1%37.6%401.00
19Johannessen Tobias Halland0.7%0.4%1.0%2.7%18.0%n/a
20Vauquelin Kévin0.7%1.1%0.8%3.0%25.1%1001.00
21Van Gils Maxim0.7%0.7%0.9%1.9%11.2%301.00
22Lipowitz Florian0.6%0.6%0.9%3.4%16.4%n/a
23Matthews Michael0.6%0.7%0.8%4.6%26.6%201.00
24Oldani Stefano0.6%0.2%0.9%1.4%23.0%501.00
25Berckmoes Jenno0.6%0.4%0.9%2.5%24.6%151.00
26Yates Adam0.5%0.2%0.7%2.1%9.5%n/a
27Jorgenson Matteo0.5%1.1%0.5%2.3%11.0%n/a
28Van Wilder Ilan0.5%0.3%0.6%1.2%13.1%n/a
29Vingegaard Jonas0.4%0.3%0.6%5.5%19.7%501.00
30Riccitello Matthew0.4%0.5%0.5%1.3%9.0%n/a

After the stage

Results — won by Kooij Olav

PosRiderTeamFull sprint win pReduced sprint win pHindsight (post-hoc) win p
1Kooij OlavDecathlon CMA CGM Team26.7%27.3%1.2%
2Kanter MaxXDS Astana Team3.6%3.7%1.2%
3Merlier TimSoudal Quick-Step44.3%33.3%1.2%
4Artz HuubLotto-Intermarché0.1%0.1%0.1%
5Philipsen JasperAlpecin-Premier Tech20.5%19.9%3.3%
6Girmay BiniamNSN Cycling Team3.5%8.2%1.7%
7Pedersen MadsLidl-Trek1.8%2.4%2.5%
8Fretin MilanCofidis1.8%1.6%0.1%
9Turgis AnthonyTeam TotalEnergies0.0%0.0%0.1%
10Wærenskjold SørenUno-X Mobility1.7%1.7%1.5%

Scenario scoring — probability given to the actual winner

ScenarioBlend win pBook devig
Full sprint26.66%14.22%
Reduced sprint27.29%14.22%
Hindsight (post-hoc)1.17%14.22%

Reflection

What we make of it

Stage 5 was a flat sprint, full stop — and it should be read as one, despite a classification that looks fragmented. Everyone came to the final flat 5 km together; a late crash in that run-in, not any selection on the road, is what strung the bunch out. So the shape in the results — 19 on the winner's time, 79 within 30s, 104 within a minute, the tail to eleven minutes — is a crash artifact, not the reduced_sprint's genuinely shed field it first looked like. The full_sprint read had the day right. Olav Kooij (Decathlon) beat Max Kanter to the line, Merlier 3rd, the 22-year-old Huub Artz a surprise 4th, Philipsen 5th, Girmay 6th — a bunch-sprint result, the placings behind the leaders scrambled by who was ahead of the crash rather than who got dropped.

The model out-priced the market on the winner — and on a non-favourite, which is the harder version. Both reads put Kooij second on their board, at 26.7% (full sprint) and 27.3% (reduced), against a book that had him only fourth at 14.2% devig, behind Merlier, Philipsen and Girmay. The model promoted him over Philipsen and Girmay and was right. Its top three — Merlier (its 44%/33% favourite), Kooij, Philipsen — took 3rd, 1st and 5th on the road: three of the top five straight off the front of the board. The two it 'missed' are the two the crash handed their placings — Kanter (2nd, 3.6%), a lead-out man who found himself in front and finished it off, and Artz (4th, 0.1%), a neo-pro it has no basis to rate who was simply on the right side of the split. Neither is a signal the model can be faulted for.

Hindsight cut against the winner again, as on stage 4 — and the crash makes the reason cleaner. The five DB stages that finished like this one — a fast day shattered to ~19 same-time — average to a rolling 0.53 / breakaway 0.24 profile, not a sprint, because in the record a bunch that fragments usually means the terrain shed it. Fed that, the model returned a GC-puncheur board (Pogacar 17.5%, van der Poel 5.1%, Seixas 4.7%) with Kooij down at 1.2%, eighth. But here nothing shed the bunch — a crash split it in the final kilometres — so matching on finish structure imported a selection that never happened. That is the stage-4 lesson sharpened: reference by winner archetype, not by finish structure, because the structure itself can be pure noise. The pre-race sprint read was right, and out-pricing the book came from trusting clean-sprint references over the rolling profile the fragmentation would have implied. And the tweak an earlier draft of these notes floated — nudging 'thinned-gallop overperformers' up in the sprint scenarios — is withdrawn: there was no thinned gallop to learn from, just a crash, and Kanter and Artz landing 2nd and 4th is positioning luck on the day, not a structural edge the model should price.