Abandoned before the toss without a ball bowled; absent from the ball-by-ball archive.
Trust the work.
Inspect the work.
The claim is only as strong as the audit trail. Here is the complete route from 295,732 deliveries to 190,000 alternate seasons.
Rebuild the record first.
Cricsheet’s IPL JSON is the ball-level source. The parser normalises dates, teams, tosses, venues, innings, super-over outcomes and match stages into a stable season schema. The audit begins with 1,243 Cricsheet files and adds 12 configured no-ball supplements: 1,255 normalized records. One 2025 fixture was voided and replayed, leaving 1,254 official matches, of which 1,180 are league fixtures.
Delhi Daredevils/Capitals, Kings XI/Punjab Kings and Bangalore/Bengaluru are continuous identities. Deccan Chargers and Sunrisers Hyderabad remain separate because SRH was a replacement franchise. Rising Pune Supergiant and Gujarat Lions remain independent of the suspended CSK and RR.
The missing-match audit
Ball-by-ball archives naturally omit games where no ball was bowled. We compare each season’s parsed records with the published final table, then explicitly add or exclude only documented exceptions.
Abandoned before the toss without a ball bowled; absent from the ball-by-ball archive.
Abandoned before the toss without a ball bowled; absent from the ball-by-ball archive.
Abandoned before the toss without a ball bowled; absent from the ball-by-ball archive.
Abandoned before the toss without a ball bowled; absent from the ball-by-ball archive.
Toss completed, then abandoned without a ball bowled; absent from the ball-by-ball archive.
Abandoned before the toss without a ball bowled; absent from the ball-by-ball archive.
Abandoned before the toss without a ball bowled; absent from the ball-by-ball archive.
Abandoned before the toss without a ball bowled; absent from the ball-by-ball archive.
Abandoned before the toss without a ball bowled; absent from the ball-by-ball archive.
Toss completed and match reduced to seven overs, then abandoned without a ball bowled; absent from the ball-by-ball archive.
The abandoned Dharamsala fixture was voided and replayed later in the resumed competition.
Abandoned before the toss without a ball bowled; absent from the ball-by-ball archive.
Hard validation: every season must reconcile every team’s played, won, lost, no-result and points fields to an independently published final table. A mismatch stops the pipeline. Published ordering and NRR remain authoritative; calculated NRR is retained for audit.
One result model. No drift.
Each team starts around 1500 Elo. New franchises begin at 1465. After each eligible match, the winner gains and loser sheds K × margin multiplier × (actual − expected), with K=24. Win probability is 1 / (1 + 10^(−rating difference / 400)).
Margin of victory
Run wins use 1 + min(1.25, ln(1 + runs) / ln(51)). Wicket wins use 1 + min(1.25, 0.65 × wickets/10 + 0.60 × balls remaining/quota). No-results and abandoned games never update Elo.
Auction-cycle carryover
This is explicitly auction-aware. Mega-auction years 2011, 2014, 2018, 2022 and 2025 retain 10% of the prior rating edge; normal years retain 40%. The reset is 1500 + carryover × (prior rating − prior-season field mean).
Home and calibration
A venue-to-home map applies an edge only when that franchise is playing and the stage is not neutral. South Africa 2009 and neutral 2020–22 configurations receive no home term. A grid search across K, Elo scale and home edge selected scale 400, K 24 and a fitted home edge of 0. Zero is a result, not an omission.
Interpretation guardrail: calibration uses league-end Elo retrospectively against that season’s results. This measures season strength for counterfactual replay; it is not a pre-match forecasting claim.
Replay matches, not balls.
Each season replays its actual league fixture list 10,000 times with a fixed season seed. A Bernoulli draw uses the two teams’ league-end ratings. Observed no-results remain one point each. Points, wins and a sampled symmetric performance-margin proxy rank the table.
The top four enter the season’s real bracket: two semifinals plus final through 2010, then the Page system (Qualifier 1, Eliminator, Qualifier 2, Final). Every output includes points and position distributions, playoff/final/title probabilities, expected points and expected position.
“Luck index” is actual points minus simulated median points. “Title luck” is one minus the actual champion’s title probability. A high number means a rarer outcome—not an illegitimate one.
Ask the balls themselves.
The second strength rating does not use match wins. Batting value is runs above season/venue/phase par; bowling is equivalent runs saved. Phases are powerplay (overs 1–6), middle (7–15), and death (16–20). Season/venue/phase rate shrunk toward the season/phase mean with a 120-legal-ball prior.
Its season-standardized rating correlates 0.76 with Elo across 166 team-seasons. Agreement is reassuring; disagreement remains visible rather than being tuned away.
Player impact applies the same above-par framework and adds 15 runs per bowler-credited wicket. It is an interpretable portfolio metric, not a claim to isolate every fielding or matchup effect.
Put the folklore on trial.
Momentum: a Wald–Wolfowitz runs test asks whether wins and losses cluster. 8 of 166 team-seasons are significant at 5% (4.8%), essentially the false-positive share expected under the null.
Regression to the mean: league-end Elo has a 0.216 next-season correlation across 149 returning team pairs, with a 0.214 persistence slope.
Toss/dew proxy: chase win rate and win rate after choosing to field are reported per venue. They are descriptive, not causal: toss choice, team strength, weather and dew are confounded.
Precision without pretending.
- Retrospective league-end strength intentionally knows how good a team proved to be that season; do not read probabilities as contemporaneous betting odds.
- Match-level replay cannot calculate true counterfactual NRR, so a calibrated-looking but deliberately non-fabricated margin proxy breaks equal-points ties.
- Observed no-results are preserved, not re-sampled from weather forecasts.
- The in-match win-probability graph is a descriptive resource-state model, not archived market odds.
- Above-par player impact does not fully isolate fielding, opposition, roles or replacement value.
Sources
Cricsheet IPL JSON ↗ · Official IPL reports ↗ · published season tables are linked from every season page. The pipeline, configs and exact exceptions live in the public repository ↗.
Stress-test the model →