ODI Win Probability: From DLS to Data#

Ball-by-ball win probability for one-day cricket

Resource-based baselines and calibrated machine-learning models applied to ODI chases

Project Overview#

Live win-probability gauges have become a staple of cricket broadcasts — but how are those numbers computed? This project walks through the statistical machinery behind P(batting team wins | current state) in ODIs, from the resource logic underlying Duckworth–Lewis–Stern (DLS) rain rules to data-driven models trained on ball-by-ball history.

The analysis uses Cricsheet ODI data parsed into game-state features at every ball of the second innings. A simplified DLS-style resource table provides an interpretable baseline; logistic regression and LightGBM models are trained on historical chases and compared on calibration metrics. Interactive Plotly charts showcase famous World Cup matches.

Disclaimer: The DLS implementation here is an educational approximation — not the ICC-official calculator.

Project Structure#

Six notebooks build the analysis step by step:

1. Introduction & Data

Explore →

ODI scoring, win probability definition, Cricsheet JSON parsing

2. Game State Features

Explore →

RRR, wickets remaining, phase indicators, feature correlations

3. DLS & Resources

Explore →

Resource tables, par scores, DLS-style win probability baseline

4. Modelling

Explore →

Logistic regression, LightGBM, Brier score vs DLS

5. Live Charts

Explore →

Interactive Plotly win-probability lines for famous chases

6. Evaluation

Explore →

Calibration plots, ML–DLS disagreement, case-study summary

Key Questions#

  • When does a chase become statistically unlikely?

  • How well does a resource table approximate historical outcomes?

  • Does a machine-learning model improve on DLS-style probabilities?

  • Which famous chases had the steepest probability swings?

Preview Figures#

Cumulative runs — 2019 World Cup Final

Win probability — 2019 World Cup Final chase

Calibration diagram

Dataset#

  • Primary source: Cricsheet ODI ball-by-ball JSON

  • Bundled case studies: 2019 World Cup Final, 2011 WC QF (India vs Australia), 2011 WC upset (Ireland vs England)

  • Training sample: 400 ODIs, ~120,000 chase balls (see data/odi_training_sample.csv)

Technical Stack#

Python • Cricsheet • scikit-learn • LightGBM • Plotly • pandas • Sports Analytics • Calibration


Ready to explore?

Start with Introduction →