Cycling race predictor · one-day race

Trofeo Matteotti (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 134 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.66
mountain0.00
hilly0.33
rolling0.00
break0.00
TT0.00
References: Coppa Bernocchi (2022); Druivenkoers Overijse (2019); Paris - Camembert - Paris - Camembert (2017); Coppa Agostoni (2016); Coppa Sabatini (2016)
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): Leitao Iuri 10.3%; Gaviria Fernando 8.0%; Colnaghi Luca 7.7%; Cavia Daniel 4.1%; Oldani Stefano 2.9%

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 66% — 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
Leitao IuriCAJA RURAL-SEGUROS RGA10.3%13.5%14.8%n/a––
Gaviria FernandoCAJA RURAL-SEGUROS RGA8.0%4.3%13.1%n/a––
Colnaghi LucaBARDIANI CSF 7 SABER7.7%5.0%12.3%n/a––
Cavia DanielBURGOS-BURPELLET-BH4.1%3.6%6.4%n/a––
Oldani StefanoCAJA RURAL-SEGUROS RGA2.9%2.1%4.6%n/a––
Kubis LukasUNIBET ROSE ROCKETS2.4%3.3%3.4%n/a––
Adrià RogerMOVISTAR TEAM1.9%1.5%3.0%n/a––
Morgado AntónioUAE TEAM EMIRATES XRG1.8%3.9%2.3%n/a––
Darder SergiCAJA RURAL-SEGUROS RGA1.8%1.3%2.8%n/a––
Grégoire RomainGROUPAMA-FDJ UNITED1.8%3.3%2.3%n/a––
Barrenetxea JonMOVISTAR TEAM1.6%1.3%2.5%n/a––
Kopecky MatyasUNIBET ROSE ROCKETS1.5%1.5%2.3%n/a––
Berasategi XabierEUSKALTEL-EUSKADI1.5%0.5%2.6%n/a––
Cosnefroy BenoîtUAE TEAM EMIRATES XRG1.4%5.1%1.2%n/a––
Tesfazion NatnaelMOVISTAR TEAM1.3%0.5%2.2%n/a––
Magli FilippoBARDIANI CSF 7 SABER1.1%0.5%1.9%n/a––
Hindsight (post-hoc) — oracle-matched references — top 30, all heads
#RiderBlendCascade LambdaRankPodiumTop 15 Market odds
1Leitao Iuri10.3%13.5%14.8%31.8%63.6%n/a
2Gaviria Fernando8.0%4.3%13.1%16.1%44.5%n/a
3Colnaghi Luca7.7%5.0%12.3%16.7%55.0%n/a
4Cavia Daniel4.1%3.6%6.4%15.7%51.1%n/a
5Oldani Stefano2.9%2.1%4.6%13.4%52.6%n/a
6Kubis Lukas2.4%3.3%3.4%13.1%54.2%n/a
7Adrià Roger1.9%1.5%3.0%7.9%41.5%n/a
8Morgado António1.8%3.9%2.3%12.2%39.4%n/a
9Darder Sergi1.8%1.3%2.8%10.7%51.5%n/a
10Grégoire Romain1.8%3.3%2.3%9.8%40.4%n/a
11Barrenetxea Jon1.6%1.3%2.5%7.9%45.5%n/a
12Kopecky Matyas1.5%1.5%2.3%8.0%46.6%n/a
13Berasategi Xabier1.5%0.5%2.6%5.0%45.4%n/a
14Cosnefroy Benoît1.4%5.1%1.2%16.4%47.1%n/a
15Tesfazion Natnael1.3%0.5%2.2%2.4%27.9%n/a
16Magli Filippo1.1%0.5%1.9%6.9%45.9%n/a
17Molenaar Alex1.0%1.4%1.4%5.6%34.9%n/a
18Vendrame Andrea1.0%2.0%1.2%8.8%45.7%n/a
19Ballerini Davide0.8%1.7%0.9%8.9%36.1%n/a
20Martín Gotzon0.7%0.1%1.1%1.3%34.8%n/a
21Christen Jan0.6%0.8%0.9%1.6%17.1%n/a
22Boichis Adrien0.6%0.6%0.9%5.0%21.2%n/a
23Crescioli Ludovico0.6%0.4%0.9%1.2%21.3%n/a
24Loulergue Victor0.6%0.6%0.9%2.6%27.4%n/a
25Vlasov Aleksandr0.6%1.2%0.7%2.2%11.6%n/a
26Fagundez Eric0.5%0.4%0.8%1.7%19.2%n/a
27Delettre Alexandre0.4%0.1%0.7%0.8%12.7%n/a
28Bloem Joren0.4%0.1%0.6%1.4%25.4%n/a
29Løland Sakarias Koller0.3%0.2%0.6%1.1%18.2%n/a
30Velasco Simone0.3%0.1%0.6%0.5%13.4%n/a

After the race

Result — won by Løland Sakarias Koller

PosRiderTeamHindsight (post-hoc) win p
1Løland Sakarias KollerUNO-X MOBILITY0.3%
2Crescioli LudovicoTEAM POLTI VISITMALTA0.6%
3Cosnefroy BenoîtUAE TEAM EMIRATES XRG1.4%
4Tesfazion NatnaelMOVISTAR TEAM1.3%
5Vendrame AndreaTEAM JAYCO ALULA1.0%
6Velasco SimoneXDS ASTANA TEAM0.3%
7Molenaar AlexCAJA RURAL-SEGUROS RGA1.0%
8Oldani StefanoCAJA RURAL-SEGUROS RGA2.9%
9Vlasov AleksandrRED BULL - BORA - HANSGROHE0.6%
10Kubis LukasUNIBET ROSE ROCKETS2.4%

1 rider in the top 15 is shown under a provisional identity pending reconciliation: SEVILLA LOPEZ Diego Pablo.

Scoring — probability given to the actual winner

ReadingBlendCascade LambdaRankMarket devig
Hindsight (post-hoc)0.35%0.19%0.56%–

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.