Cycling race predictor · one-day race

GP de Fourmies (no prediction made) settled

One day, one result: the production stack priced the whole field under 1 course reading, against the market's line where one was captured. A one-day race is its own best reference — the main reading is built from this race's own recent editions.

Raced 13 September 2026 1 reading 127 riders priced models retrained d911de60f7 market snapshot no capture

The fork

1 reading of the same road

Course profile is an input the model cannot see from a map — it is set from reference races. The main reading averages this race's own last editions, so the terrain and the kind of rider it selects come from the race's own history; any alternate reading swaps in an archetype set to ask what a different day would do to the same field.

Hindsight (post-hoc)

Hindsight (post-hoc) — oracle-matched references
sprint0.27
mountain0.01
hilly0.44
rolling0.03
break0.25
TT0.00
References: GP de Fourmies (2025); GP de Fourmies (2024); GP de Fourmies (2023); GP de Fourmies (2022); GP de Fourmies (2021)
RETROSPECTIVE ONLY — no pre-race prediction was made. This board uses the settled result as the oracle and the nearest historical realized race shapes. It is corpus completion, not evidence of forecasting skill.
Top 5 (blend): Kooij Olav 47.2%; Magnier Paul 45.0%; Lonardi Giovanni 10.3%; Fretin Milan 9.8%; Vernon Ethan 4.4%

The board

Win probabilities across the heads

Blend is the production price (cascade × LambdaRank, DNF-adjusted at the pricing layer); Cascade and LambdaRank are the two underlying heads shown for the main reading. The market columns are the devigged win line, present as the information benchmark the model is scored against.

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 hindsight 141% — while the devigged market column sums to exactly 100%. Putting the two side by side flatters the model, and Max edge is inflated by about that factor. Of our heads only the LambdaRank one is natively book-preserving.

RiderTeamBlendCascadeLambdaRankMarket oddsMarket devigMax edge
Kooij OlavDECATHLON CMA CGM TEAM47.2%45.3%33.8%n/a––
Magnier PaulSoudal Quick-Step45.0%47.6%31.1%n/a––
Lonardi GiovanniTeam Polti VisitMalta10.3%8.4%7.7%n/a––
Fretin MilanCofidis9.8%9.7%6.9%n/a––
Vernon EthanNSN Cycling Team4.4%3.5%3.3%n/a––
Wærenskjold SørenUno-X Mobility3.7%3.2%2.7%n/a––
Bittner PavelTeam Picnic PostNL2.9%2.9%2.1%n/a––
Penhoët PaulGroupama-FDJ United2.0%2.0%1.4%n/a––
Bol CeesDecathlon CMA CGM Team1.7%1.2%1.3%n/a––
de Kleijn ArvidTudor Pro Cycling Team1.6%1.3%1.2%n/a––
Bennett SamPinarello-Q36.5 Pro Cycling Team1.5%3.9%0.5%n/a––
Moschetti MatteoPinarello-Q36.5 Pro Cycling Team1.3%1.3%1.0%n/a––
Mozzato LucaTudor Pro Cycling Team1.2%0.8%0.9%n/a––
Hindsight (post-hoc) — oracle-matched references — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Market odds
1Kooij Olav47.2%45.3%33.8%68.7%85.3%n/a
2Magnier Paul45.0%47.6%31.1%67.3%84.2%n/a
3Lonardi Giovanni10.3%8.4%7.7%29.2%71.8%n/a
4Fretin Milan9.8%9.7%6.9%25.4%68.7%n/a
5Vernon Ethan4.4%3.5%3.3%12.6%46.8%n/a
6Wærenskjold Søren3.7%3.2%2.7%11.5%52.2%n/a
7Bittner Pavel2.9%2.9%2.1%14.9%65.2%n/a
8Penhoët Paul2.0%2.0%1.4%10.2%56.9%n/a
9Bol Cees1.7%1.2%1.3%5.6%30.8%n/a
10de Kleijn Arvid1.6%1.3%1.2%6.2%34.4%n/a
11Bennett Sam1.5%3.9%0.5%7.8%35.2%n/a
12Moschetti Matteo1.3%1.3%1.0%7.4%46.8%n/a
13Mozzato Luca1.2%0.8%0.9%4.1%37.8%n/a
14Thijssen Gerben1.0%1.3%0.6%7.5%56.0%n/a
15Tesson Jason1.0%1.1%0.7%5.8%43.6%n/a
16Gudmestad Tord0.9%0.9%0.7%5.2%34.8%n/a
17Blikra Erlend0.7%0.9%0.4%5.7%34.5%n/a
18Grisel Matys0.7%0.9%0.4%5.4%43.1%n/a
19Aniolkowski Stanislaw0.4%0.5%0.2%6.1%39.8%n/a
20Taminiaux Lionel0.4%0.1%0.3%1.2%22.8%n/a
21Kockelmann Mathieu0.4%0.3%0.3%2.5%39.4%n/a
22Huens Axel0.2%0.2%0.2%1.4%23.9%n/a
23Belletta Dario0.2%0.2%0.2%1.4%35.9%n/a
24Stewart Jake0.2%0.3%0.1%2.3%22.3%n/a
25Müller Tobias0.2%0.1%0.1%1.9%29.9%n/a
26Peñalver Manuel0.2%0.1%0.1%1.2%25.0%n/a
27Serrano Javier0.1%0.1%0.1%1.5%34.2%n/a
28Degenkolb John0.1%0.2%0.1%0.7%17.0%n/a
29Milan Matteo0.1%0.1%0.1%1.4%25.3%n/a
30Heremans Joppe0.1%0.1%0.1%1.0%22.5%n/a

After the race

Result — won by de Kleijn Arvid

PosRiderTeamHindsight (post-hoc) win p
1de Kleijn ArvidTudor Pro Cycling Team1.6%
2Müller TobiasUnibet Rose Rockets0.2%
3Vernon EthanNSN Cycling Team4.4%
4Bittner PavelTeam Picnic PostNL2.9%
5Moschetti MatteoPinarello-Q36.5 Pro Cycling Team1.3%
6Lonardi GiovanniTeam Polti VisitMalta10.3%
7Konijn AlexanderNice Métropole Côte d'Azur0.0%
8Thijssen GerbenAlpecin-Premier Tech1.0%
9Ghys RobbeDecathlon CMA CGM Team0.0%
10Marsman TimAlpecin-Premier Tech0.0%

Scoring — probability given to the actual winner

ReadingBlendCascade LambdaRankMarket devig
Hindsight (post-hoc)1.56%1.33%1.16%–

Result rows are joined to the boards by FirstCycling rider id through the riders table. 0 row(s) needed the normalised-name fallback; 1 finisher(s) could not be matched at all.