How accurate are our cricket predictions?

81.5% across 19,340 predictions on 2,546 matches the model had never seen. Below is the method, the per-stage breakdown, and the calibration table — the part that cannot be faked.

The test

Accuracy claims are easy to inflate. The usual trick is to score a model on matches it was trained on, which measures memory rather than prediction. So the split here is by date, not at random:

Trained on: T20 matches up to 2024
Tested on: 2025-2026 matches, never seen during training
Sample: 2,546 matches, 19,340 predictions

Reproduce it: python backtest_comprehensive.py --holdout

A prediction counts as correct if the side the model favoured went on to win. Win probability is scored at fixed points in every innings, not cherry-picked moments.

Accuracy by stage of the match

Predicting a finished match is trivial, so the number that matters is how early the model is useful. It is already close to its ceiling by the sixth over:

Point in the inningsAccuracyPredictions
After Over 679.2%5,036
After Over 1082.1%4,926
After Over 1282.6%4,820
After Over 1582.2%4,558

Does “70%” actually mean 70%?

This is the question a hit-rate cannot answer. A model that simply backs whichever side is obviously ahead will score well on direction and still be useless, because its numbers mean nothing in between. Calibration checks the numbers themselves: group every prediction by what the model said, then look at how often those situations really ended in a win.

Model saidPredictionsActually wonGap
0-10%4,5293.8%1.2
10-20%1,56415.3%0.3
20-30%1,18825.4%0.4
30-40%1,07434.5%0.5
40-50%1,17543.9%1.1
50-60%1,12250.4%4.6
60-70%1,35062.1%2.9
70-80%1,56872.5%2.5
80-90%1,70881.1%3.9
90-100%4,06296.1%1.1

The curve climbs monotonically and the worst band is off by 4.6 percentage points. That is the evidence behind the headline figure, and it is published here rather than described, because a claim without a table under it is only a claim.

What the model cannot do

Two honest limits, stated because they change how the number should be read:

Live accuracy, separately

The figures above come from historical ball-by-ball files. Live matches run on a different data feed with its own quirks, so live predictions are recorded at overs 6, 10 and 15 before the result is known and scored afterwards. That record is kept separate from this one on purpose — a backtest and a live record are different claims, and merging them would flatter both.