Recently, there has been a battery of attempts to quantify pitch behaviour and associate it with run-scoring tendencies, using ball-tracking data. Cricviz has its own PitchViz model which they keep refining, and Amol Desai has published a set of articles presenting a set of pitch metrics. It stands to reason that the “pace” and “bounce” of a pitch have a correlation with the run-scoring on the day. It also follows from cricketing logic and anecdote that “inconsistency” in a pitch similarly deflates the scoring rate.
In this piece, I will construct a methodology to quantify “anomalous” deliveries in terms of pace and bounce, and try to link these misbehaving deliveries with scoring patterns. What does a ball that behaves abnormally do to the batters in the same over? Does misbehaviour leave “memory” for the rest of the innings? This line of questioning also comes from a discussion I had recently with Freddie Wilde, RCB and London Spirit analyst. We will attempt to answer these questions at a very basic level; there is definitely potential to probe deeper, but here we attempt to recover “average” signals from the data.
A Note on the Data Used: This piece uses a combined Hawkeye and ball-by-ball dataset covering matches from the 2012 to 2026 IPL seasons. The full dataset has 236000 balls, which when filtered down to entries with clean Hawkeye data, reduces to 216000 balls.
Defining Anomalies
Predicting Bounce
To mark balls that behave abnormally, we need to construct a “baseline” model for how a ball should behave ideally. For this, we will build a regression model using xgboost that fits the height of the ball at the stumps plane. The height of the ball at the stumps plane (stumps_z) is a function of both pace and bounce. The latter’s effect is simple to visualise: a ball bouncing higher reaches the stumps plane higher. For the former, a ball that loses more pace off the pitch takes a little more time to travel to the stumps plane, rising a bit more, reaching higher. Therefore, both dimensions of misbehaviour off the pitch that cause a difference in the height of the ball can be captured using stumps_z. To predict stumps_z, we will use three features:
vx0: pre-bounce forward speed of the ball;
vz0: pre-bounce vertical speed of the ball;
bounce_x: length of pitching (distance from stumps).
These three features together account for the bowler’s characteristics to a certain extent (height and delivery trajectory).
We fit different models for pace-on balls (>128 kmph), slower balls (<128 kmph) and spin. The slower ball cut-off is hard and can be inaccurate, especially for some bowlers (like Sam Curran), but we will run with it for this analysis. In each ball type, we do an 80:20 train-test split and train the xgboost regressors. The following figure shows the calibration plots for the three versions; the blue dots show the mean actual stumps_z in bins of predicted stumps_z. All three match very well with the perfect calibration line (dashed black). The two pace regressors show very high R^2 between the predictions and actual. The spin regressor shows a much lower value, possibly due to the high revolutions on the ball causing pitch effects not captured in our three-feature modelling.
This convinces us that our model works well; we will now train similar xgboost regressors on the entire dataset. The idea here is to use these as complex averaging machines that yield the “expected” bounce height for a delivery; we do not wish to use them for prediction.
Accounting for Ground and Year
Grounds have different bounce and pace characteristics, which also change over the seasons. To subtract this effect from our “baseline” prediction, we will group by ground and year and find the mean residual from the expected stumps_z. This tells us how different our model predictions, trained on all grounds and years as one pool, are from a ground’s actual bounce in a given year. This is done separately for the three bowling categories, because pitches have different responses in different speed and revolution regimes. We then subtract this mean residual from the predicted stumps_z for every ground-year combination. This ensures that our “expectation” factors in the ground itself, even though the differences are minute (not more than 4 cm).
Deviation from Expectation
With this, we can finally calculate the deviation from expected height. This is the actual stumps_z minus the adjusted predicted stumps_z. Let’s call this quantity z_resid_adj.
The plot below shows the mean scoring rate (runs per ball) in bins of z_resid_adj. As expected from cricketing logic, the scoring rate is highest when the deviation is low: this could be either balls that are too full to deviate enough to cause issues, or balls that bounce as per expectation. As we go away from zero height difference between expectation and actual height, the scoring rate drops steeply. The drop is steeper for z_resid_adj negative, which means low bounce. Lower bouncing balls take the bottom edge and often go to ground, whereas higher bouncing balls (+ve z_resid_adj) can go aerial and to the boundary.
This ties our deviation of height formalism cleanly to ball-by-ball results, reaffirming the logic of using this quantity.
z_resid_adj has a normal distribution, but the statistics vary depending on length. This is because a shorter ball has a greater distance to travel until reaching the stumps plane, and can therefore deviate a lot more than a full ball. The plot below shows the mean and standard deviation of z_resid_adj by length. The mean stays mostly zero, but the standard deviation increases with length.
What is an anomalous ball?
Since every length band and ball type has a different standard deviation, we should ideally use a standardised z_resid_adj using the distributions of each length and type. However, we are concerned with the absolute deviation of the height of the ball from expectation. A ball that pitches on a 3m length and deviates 1-sigma from the mean has a difference of only 6 cms from the expected height. This ball is too full to cause issues despite significant deviation. A 1-sigma deviating ball from the 8m length is 11cms away from the expected height — a much more difficult proposition. Clearly, a z-score style normalised number is not a good gauge of difficulty. We will therefore use the absolute deviation from expectation to define anomalies.
The plot below shows the % of balls marked anomalous in the dataset as we vary the threshold of z_resid_adj. As we move the threshold (x-axis) higher, we become more selective, tagging more extreme balls as “anomalous”. This reduces the % of balls in the anomaly basket (y-axis).
The next plot shows the scoring rate off anomalous balls as we vary the threshold for tagging these. As we increase the threshold (x-axis), we increase the barrier for marking balls as anomalous. This means we are making our anomalous balls more and more difficult to face, the effect of which is seen in the scoring rate on anomalous balls only (red) decreasing as we increase the threshold.
Looking at the two plots above, we pick a threshold of 0.2m to mark anomalous balls. This is a round number, it is the lowest point on the second graph where the scoring rate is under 1.1 per ball, and it leaves a reasonable ~6% deliveries marked anomalous, giving us enough volume for statistics.
Now we check the percentage of anomalous balls on different grounds
We also want to check that this erratic % measure is not correlated with the overall bounce on a ground (ideally it should not be). The following scatterplot confirms this. The correlation coefficient is small and not statistically significant.
Results
Effect on Scoring and Runs-Above-Expected
With anomalous balls defined as those that deviate by more than 0.2m compared to expected height at the stumps plane, we can begin investigating the relationships between scoring rate and erratic-ness. First up, we check the impact of the overall anomalous % in an innings to the mean scoring rate (runs per ball).
Each green dot is one innings, with the x-axis showing the percentage of anomalous balls in the innings, and the y-axis showing the runs per ball in the innings. The blue dots show the mean runs per ball in decile bins of anomalous %. The black line shows the least squares fit for the green dots. The blue dots sit very close to the black line, and both show a negative trend, confirming that a higher proportion of anomalous balls decreases scoring rate. The Pearson-r shows the relationship is highly significant.
Next, we want to strip out the effects of the game state and the year (to account for scoring trends). We build a basic runs-above-expectation model using features {over, ball, wickets left, bounce_x, bounce_y, stumps_y, year}. We train three different xgboost models for “averaging” the expected runs for the three different ball types. The RAE (Runs-Above-Expected) for a ball is then: Runs Scored - Expected Runs.
The plot of mean RAE per ball against anomalous % shows a trend similar to the previous figure. The decile means and the best fit line are very close together. For innings with greater than about 8% balls marked as anomalous, the innings scoring rates are below expectation.
Effect on Surrounding Balls
More difficult balls in an innings translates to a lower score — this conclusion is obvious and perhaps did not warrant two plots. But it’s a nice sanity check. The next plot shows something less obvious. It plots the mean RAE on non-anomalous balls in bins of innings anomaly rates. The curve shows a clear downward trend. Moreover, the trend is statistically significant when the individual points are fit to each other.
The presence of anomalous balls deflates the scoring rate on normal balls within the same innings. The erratic behaviour of a pitch modulates the results on balls that do not misbehave. The batters gather information from the erratic deliveries, which then tempers their intent on other balls as well.
Next, we want to look at the “imprint” that an anomalous ball leaves upon a batter. For this, we isolate individual overs and mark the anomalous balls. After each anomalous ball, we calculate the mean RAE on the 1st, 2nd, 3rd, 4th, 5th, 6th normal ball in the same over. Keeping it within the same over keeps the context (pitch conditions / game context) fixed to within a tight range, so we can actually isolate the effects on the anomalous ball.
This plot shows a remarkable result: as the batters get farther away from the anomalous delivery and face more normal balls, their RAE increases (the last bin has a very small sample size). Moreover, this also shows the “memory-imprint” of an anomalous ball on the batting pair: for the first two normal balls after an anomalous ball, batters score below or at par. It takes batters 2-3 normal balls to “recover” from an abnormal ball.
The Effect of Early Overs on Late Times
Next, we want to check if the occurrence of anomalous balls early in the innings has an effect on the scoring rates in the later stages of the same innings. For a basic check, we isolate the first 6 overs, calculate the % of anomalous balls in that phase, and plot the mean RAE per ball in overs 7-20 in bins of this early innings anomaly rate. The plot below shows this: there is a clear downward trend visible. A high anomaly rate in the first 6 overs leads to low scoring in overs 7-20.
However, there is a confounding factor here. A high early anomaly rate is correlated with a high late-innings anomaly rate. The trend we seeing in the plot above is not telling us much about how the early innings anomalousness affects late-innings scoring. Instead, this is just showing that erratic pitches are likely to behave erratically throughout the innings, and therefore this decrease in the run-scoring is most likely a result of anomalous balls in the later overs.
To disentangle this effect, we will utilise a simple linear regression. We will fit the late-innings RAE per ball to a combination of the early-innings and late-innings anomaly rates:
Here, if we fix the Late Anomaly Rate, the coefficient β tells us how much of an effect the Early Anomaly Rate has on the RAE per ball in the late innings. We are effectively controlling for the late-innings anomalies that were confounding our previous plot. We will split the innings at different points (N overs) and check which split gives us significant β values. Each innings is split as “Early”: overs 1 to N and “Late”: overs N+1 to 20.
The left panel of the plot below shows the β coefficients for different values of N. All values are negative, implying that a higher early anomaly rate has a minor deflating effect on the late-innings RAE per ball. However, the plot also shows the 95% confidence intervals as errorbars. Except for N = 6,7,8, all other β values cross zero if the 95% CI is included. Moreover, compare it to the right panel, which shows the t-statistic of the linear fits for each N. Only N = 6,7,8 are significant at the 5% level, which matches what the left panel shows.
If we control for late-innings anomalies, early-innings anomalies have a weak deflating effect on the late-innings scoring rates. This effect becomes statistically significant if the early-late split is at 6 to 8 overs. However, late-innings scoring seems to be mostly independent of early-innings anomalies. Batters update information quickly.
This significance of 6-8 overs is an artifact of the test. My conjecture is that the first five overs do not have enough information to influence the remaining overs significantly and independently of the late-innings anomalies. The high N cases, I think, make the early and late innings more correlated, negating the independent effect of the early-innings anomaly rate. The 6-8 overs N is the perfect “middle ground”: you have enough early information and you have enough difference between the early and late phases. This portion is still open to interpretation.
Phase-Wise Impact of Anomalies
Finally, we want to see whether the occurrence of anomalous balls elicits different responses in different phases of the game. We divide the innings into four phases and calculate the mean RAE on non-anomalous balls depending on how many anomalous balls have occurred in the preceding 10 balls.
The four panel plot below shows the results, with each panel illustrating a phase. We see how fast / slow batters score depending on how many abnormal balls have occurred in the past 10 balls of the innings. The pattern is random in the Powerplay, which was the most surprising to me at first glance. It seems like the need to capitalise on the fielding restrictions means that batters have to forego “memory” of bad balls. The same randomness is seen in the death overs — where the need to score fast overrides getting spooked by misbehaving balls. The effect is most significant (and statistically significant) in the middle overs, where batters are the most conservative. The more the anomalous balls you see in the past 10 balls, the slower you tend to score in the middle overs.
Concluding Remarks
In this piece, we have tried to investigate the impact of “anomalous” balls on the scoring rate of an innings. The idea guiding this question is that batters infer information from the pitch, and misbehaving balls alter their perception of a par score. We found:
More anomalous balls in an innings means lower scoring rate.
More anomalous balls in an innings means lower scoring rate even on non-anomalous balls. Erratic balls modulate and temper the scoring tendencies of batters on normal balls.
An anomalous ball leaves an imprint within an over: batters take 1-2 normal balls to get back to the par scoring rate for the match situation. The farther they get from the anomalous ball, the more the scoring rate increases.
Early-innings anomaly rates have a (very weak) negative effect on late-innings scoring, controlling for late-innings anomaly rates. Batters update their information quickly; early demons are forgotten fairly fast if the pitch becomes easier later.
The “spooking” effect of anomalous balls is strongest in the middle overs, when batters are the most conservative.














