Simulation-Based Optimisation of Batting Order and Bowling Plans in T20 Cricket
Abstract
This paper develops a unified Markov Decision Process (MDP) framework for optimising two recurring in-match decisions in T20 cricket, namely batting order selection and bowling plan assignment, directly in terms of win and defend probability rather than expected runs. A three-phase player profile engine (Powerplay, Middle, Death) with James-Stein shrinkage (a technique that blends a player's individual statistics toward the league average when their phase-specific data is sparse) is estimated from 1,161 IPL ball-by-ball records (2008-2025). Win/defend probabilities are evaluated using vectorised Monte Carlo simulation over N = 50,000 innings trajectories. Batting orders are evaluated by comparing all feasible arrangements of the remaining players and selecting the one that maximises win probability. Bowling plans are optimised through a guided search over possible over assignments, progressively improving the allocation while respecting constraints such as the prohibition on consecutive overs by the same bowler. Applied to two 2026 IPL matches, the optimal batting order improves Mumbai Indians' win probability by 4.1 percentage points (52.4% to 56.5%), and the optimal Gujarat Titans bowling plan improves defend probability by 5.2 percentage points (39.1% to 44.3%). In both cases, the observed sub-optimality is consistent with phase-agnostic deployment: decisions that appear reasonable under aggregate metrics are shown to be costly when phase-specific profiles are applied.
Figures & tables
| Phase | Overs (0-indexed) | Characteristic Conditions |
|---|---|---|
| Powerplay (PP) | 0 – 5 | Fielding restrictions; elevated scoring rates |
| Middle (MI) | 6 – 14 | Spin-friendly; dot-ball accumulation |
| Death (DE) | 15 – 19 | Yorkers; pull shots; explosive hitting |
| Parameter | Value |
|---|---|
| MI score | 148/1 |
| Runs needed ( ) | 73 |
| Legal balls remaining ( ) | 44 |
| Required run rate | 9.95 per over |
| MI batsmen at crease | RD Rickelton (non-striker, fixed) |
| MI batting pool | SA Yadav, Tilak Varma, HH Pandya, Naman Dhir |
| Batsman | Hist. balls (MI) | Hist. balls (DE) | Death SR | Middle SR | ||
|---|---|---|---|---|---|---|
| RD Rickelton | 342 | 156 | 156.4 | 0.079 | 152.9 | 0.100 |
| SA Yadav | 1,765 | 460 | 181.3 | 0.089 | 143.8 | 0.035 |
| Tilak Varma | 1,132 | 388 | 185.5 | 0.070 | 137.3 | 0.030 |
| HH Pandya | 844 | 512 | 171.6 | 0.070 | 134.0 | 0.037 |
| Naman Dhir | 498 | 204 | 203.9 | 0.070 | 145.9 | 0.049 |
| Next-In | Best Win% | Optimal Remaining Order |
|---|---|---|
| SA Yadav (actual) | 56.5% | Naman Dhir → Tilak Varma → HH Pandya |
| Naman Dhir | 55.7% | SA Yadav → Tilak Varma → HH Pandya |
| Tilak Varma | 55.1% | Naman Dhir → SA Yadav → HH Pandya |
| HH Pandya | 53.3% | Naman Dhir → Tilak Varma → SA Yadav |
| Rank | Position 4 | Position 5 | Position 6 | Win% |
|---|---|---|---|---|
| 1 (opt) | Naman Dhir | Tilak Varma | HH Pandya | 56.5% |
| 2 | Naman Dhir | HH Pandya | Tilak Varma | 56.1% |
| 3 | Tilak Varma | Naman Dhir | HH Pandya | 55.2% |
| 4 | HH Pandya | Naman Dhir | Tilak Varma | 52.9% |
| 5 (actual) | Tilak Varma | HH Pandya | Naman Dhir | 52.4% |
| 6 | HH Pandya | Tilak Varma | Naman Dhir | 51.8% |
| Scenario | Win% (MI) |
|---|---|
| Worst possible batting order | 50.0% |
| Actual batting order | 52.4% |
| Optimal batting order | 56.5% |
| Gain from optimal order | +4.1 pp |
| Parameter | Value |
|---|---|
| PBKS score | 83/2 |
| Runs needed ( ) | 80 |
| Legal balls remaining ( ) | 60 (overs 10–19 after Rashid completes over 9) |
| PBKS wickets in hand | 8 |
| Required run rate | 8.00 per over |
| Bowler | Overs bowled | Quota left | Hist. balls (MI) | Hist. balls (DE) | Middle ER | Death ER | ||
|---|---|---|---|---|---|---|---|---|
| Ashok Sharma | 1 | 3 | 0 | 0 | 7.49† | 0.043† | 9.37† | 0.083† |
| K Rabada | 2 | 2 | 466 | 599 | 7.35 | 0.053 | 9.36 | 0.104 |
| Mohammed Siraj | 2 | 2 | 451 | 673 | 7.35 | 0.048 | 9.55 | 0.067 |
| Rashid Khan | 3* | 1 | 2,223 | 564 | 6.58 | 0.047 | 8.40 | 0.075 |
| Washington Sundar | 2 | 2 | 654 | 81 | 7.07 | 0.033 | 9.61 | 0.068 |
| M Prasidh Krishna | 0 | 4 | 398 | 505 | 7.47 | 0.047 | 9.79 | 0.086 |
| Over | Bowler | Phase | Economy |
|---|---|---|---|
| 10 | Ashok Sharma | MI | 7.49 |
| 11 | Rashid Khan | MI | 6.58 |
| 12 | M Prasidh Krishna | MI | 7.47 |
| 13 | Washington Sundar | MI | 7.07 |
| 14 | M Prasidh Krishna | MI | 7.47 |
| 15 | K Rabada | DE | 9.36 |
| Over | Bowler | Phase | Economy | Changed? |
|---|---|---|---|---|
| 10 | Mohammed Siraj | MI | 7.35 | ← |
| 11 | Washington Sundar | MI | 7.07 | ← |
| 12 | K Rabada | MI | 7.35 | ← |
| 13 | Mohammed Siraj | MI | 7.35 | ← |
| 14 | Washington Sundar | MI | 7.07 | ← |
| 15 | Ashok Sharma | DE | 9.37 | ← |
| Rank | Ov10 | Ov11 | Ov12 | Ov13 | Ov14 | Ov15 | Ov16 | Ov17 | Ov18 | Ov19 | Defend% |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 (opt) | Siraj | Sundar | Rabada | Siraj | Sundar | Ashok | Rashid | Ashok | Rabada | Ashok | 44.3% |
| 2 | Sundar | Krishna | Sundar | Siraj | Rabada | Ashok | Rashid | Ashok | Rabada | Ashok | 44.0% |
| 3 | Sundar | Siraj | Sundar | Rabada | Siraj | Ashok | Rashid | Ashok | Rabada | Ashok | 43.9% |
| 4 | Siraj | Sundar | Siraj | Krishna | Rashid | Ashok | Rabada | Ashok | Rabada | Ashok | 43.5% |
| Actual | Ashok | Rashid | Krishna | Sundar | Krishna | Rabada | Krishna | Ashok | Krishna | Sundar | 39.1% |
| Bowler misused | Phase deployed | Death ER | Better option | Better Death ER | Cost (RPO) |
|---|---|---|---|---|---|
| MP Krishna | Death (2 overs) | 9.79 | Rashid Khan | 8.40 | −1.39 |
| Siraj | Not used | — | — | — | −0.49 per over |
| Symbol | Definition |
|---|---|
| Match state: runs remaining, balls remaining, wickets | |
| Maximum runs in the state space | |
| Total balls in T20 innings | |
| Pool of available batsmen | |
| Batting order — permutation of | |
| Bowling plan — ordered over assignments |