Pre-race predictions
The hard part of any "my model predicts X" claim is proving you didn't tune it after the fact. So every stage below is timestamp-signed with OpenTimestamps before the race. Each stamp anchors in a Bitcoin block: once the proof confirms on-chain, the card shows when the prediction was signed and how far that predates the start gun, and you can check the timing without taking my word for it.
OTS-stamped races
Predictions are timestamp-signed via OpenTimestamps before the race; each stage lists its full field, fastest-first. Intent is expressed by effort alone — each rider does their best (1.00) or eases off — so the rider suited to the day comes out fastest. The postmark is the verifiable timestamp: the mined time of the Bitcoin block the proof is anchored in, which proves the prediction existed before then. Verify proof opens the full proof (hash, block, download, how to check it). Scheduled start is the départ fictif — km 0 is typically 15–30 min later.
The Tour de France 2026 is signed batch by batch as each stage's weather window firms up, so more stages land here through July. Predicted times show now; actual times and error fill in as results come in.
On a confirmed row, verify proof opens the full proof: hash, Bitcoin block, download, how to check it. To re-derive it yourself, the signed predictions_signed_*.json and its .ots proof sit in the repo: ots verify re-computes the same block from the file hash. The spring-classics stamps ran against an earlier model revision; their proofs stay verifiable forever.
How the numbers are built: Methodology.