Amedspor has almost no record in this league yet — priced at league average, so treat this one as our weakest.
23 divisions · Dixon-Coles · 277 matches priced
Published before kickoff. Scored afterwards.
Every probability is sealed before the whistle. Where the market publishes a closing price, ours is graded against it; where it does not, the forecast is measured against guessing and labelled as such. The running score stays public whether it flatters the model or not.
Publish picks of your own? The same machinery seals your record: hashed before kickoff, timestamped in Bitcoin, impossible to edit, and scored against the closing line. Seal your own record.
ForecastModel probabilities are produced from past results only.
SealThe earliest publication is hashed into the public ledger.
ScoreThe same forecast is measured against the closing line.
Over 599 graded matches the gap is +0.0374 ± 0.0151 at 95% confidence, so this sample separates the model from the closing line. The number with a sample behind it is the walk-forward backtest: 2660 matches, +0.0188 per match, and the model loses. How this is computed.
Upcoming forecasts
Choose a matchday
From today through Sunday 18 October. Choose a date, then optionally narrow it by competition.
Showing 122 matches on Saturday 10 October
Saturday 10 October
122 matchesErzurumspor has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Cottbus has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Wolfsburg has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Arezzo has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Paderborn has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Elversberg has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Le Mans has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Sunday 11 October
54 matchesCorum has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Hull has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Verona has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Iraklis has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Monday 12 October
14 matchesParana has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Tuesday 13 October
9 matchesWednesday 14 October
4 matchesThursday 15 October
0 matchesFriday 16 October
7 matchesSaturday 17 October
38 matchesHull has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Elversberg has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Paderborn has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Parana has almost no record in this league yet — priced at league average, so treat this one as our weakest.
Sunday 18 October
29 matchesThe scorecard, once a week
Every Monday: how many matches we graded, our log loss, the closing line's, and the gap between them. Nothing else — no picks, no promotions. You are subscribing to a report card, and it arrives whether or not it flatters us.
Why you can check this
Separate evidence for content, order, time and scoring.
Sealed before kickoff
Each day's predictions are written to a JSON file and hashed. A file is never rewritten, and no prediction is issued for a match that has already started.
Chained
Every file carries the hash of the one before it. Alter a past prediction without rebuilding every later hash and verification fails, publicly, on the ledger. Rebuilding the whole chain instead means force-pushing over a public repository, which is visible to anyone who cloned it before. The ledger separately labels entries with no external proof, timestamp submissions still pending, and matching proofs that contain a Bitcoin block attestation.
Generator identified
New entries record the source commit that produced their probabilities, whether those files had local changes, and a hash of the exact generator source bytes.
Graded against the close
Not against our own opinion of a good result. Against the market's average closing price, the number left after all the informed money has moved it — and where no closing price exists, the market is tagged forecast only rather than quietly counted as a win.
The model is the demonstration, not the product
What was actually built here is the machinery underneath it, and it does not care whose numbers it measures.
Seal your own record
The same rules as ours, applied to your forecasts: hashed before kickoff, anchored to a Bitcoin block, measured by closing line value, published whichever way it goes and never editable afterwards. It works for every competition with a published closing price, well past the 23 divisions we price ourselves. If you would rather be measured than believed, that is the offer.
Use the numbers
Every probability on this site is already a public JSON file, served across origins, with no key and no account — the same bytes the ledger hashes. They are worth something for editorial context and for testing your own model against a forecast that provably was not written afterwards. They are not worth anything against a bookmaker, and the scorecard is where that is proven rather than asserted.