The Future of Cricket: Franchise Cricket and T20's

Sam Iyer-Sequeira
Football Applied
Published in
20 min readJul 9, 2024

Note:I strongly recommend you read the following articles before proceeding to read this one:

The landscape of franchise cricket, anchored by leagues like the Indian Premier League (IPL), has evolved into a global phenomenon reshaping the sport’s traditional dynamics. With leagues expanding across continents and players becoming global commodities, the allure of franchise cricket has soared, driven by financial incentives and the promise of international exposure. However, this growth has not been without challenges. From scheduling conflicts to player fatigue and ethical dilemmas, the multi-franchise model has sparked debates about its impact on player welfare, competitive integrity, and the balance between national and franchise commitments. As we delve into the intricacies of this evolving paradigm, it becomes clear that while franchise cricket offers unprecedented opportunities, it also demands careful navigation of its complexities to sustain the essence of cricket as a sport.

Indian Premier League

The Indian Premier League (IPL) is the most popular franchise cricket league in the world, captivating audiences with its thrilling matches and high-caliber talent. Spanning over two months, it boasts the longest tournament window among cricket leagues, allowing fans to immerse themselves in the excitement for an extended period. With ten teams, the IPL offers a perfect blend of emerging domestic talent and seasoned international superstars, creating a unique and competitive environment. For every white-ball cricketer, playing in the IPL and getting bought in the auction is a coveted goal, as it signifies reaching the pinnacle of their career and gaining global recognition. The league’s allure and competitive spirit continue to elevate its stature, making it a dream platform for cricketers worldwide.

To understand how well IPL teams have performed, we’ve looked at IPL results strictly from the past three seasons (2022, 2023, 2024). Examining performances before 2022 would not provide a fair reflection of a team’s success due to significant changes in team rosters and the introduction of expansion teams in 2022. As shown in the plot below, there is not much that separates the performances and quality of IPL teams in real terms, given that all teams have the same resources to build their squads. This parity creates an increasingly competitive league, which greatly contributes to the overall appeal of the Indian Premier League. Auction performance is a good proxy for on-field performance, as every three years, the IPL resets team rosters with a “mega-auction” where franchises are allowed to retain up to four players, and the rest are available for bidding. While the exact number of retentions for the upcoming year is still unconfirmed, it is assumed to remain at four. The auction plays a crucial role in determining a team’s performance each year.

The mega auction, held every few years, maintains competitive balance throughout the league, ensuring that poor decisions in one year do not have long-term negative consequences, unlike leagues such as the Premier League. For example, Sunrisers Hyderabad finished at the bottom of the IPL table in 2023, yet a strong performance at the auction enabled them to reach the finals the following season. Similarly, Kolkata Knight Riders, who had not made the playoffs in the recent three-year cycle, managed to win the competition. The IPL’s structure, similar to that of the NBA, is a closed league with no relegation or promotion, and teams operate under a hard salary cap for player wages.

An official meeting is expected between the BCCI and franchise CEOs by the end of July 2024 to finalize retention rules. Currently, teams retaining four players have Rs 42 crore deducted from their total purse of Rs 90 crore, with the breakdown of player costs as follows: First-choice player: Rs 16 crore. Teams can retain a maximum of three Indian players and two overseas players before the auction. The retention values will be a vital consideration, as the top retention value was Rs 16 crore out of a Rs 90 crore purse ahead of 2022 (17.8% of the purse). With last year’s budget set at Rs 100 crore, it could grow further for the next season and the subsequent auction cycle. Therefore, a Rs 16 crore top retention value would be good value with a Rs 100 crore purse (16% of the purse), but a Rs 25 crore top retention value (25% of the purse) would be difficult to justify for most players, except perhaps Jasprit Bumrah.

Looking at player prices and their value as a percentage of the purse compared to the 2022 retentions is useful for rationalizing whether a player’s retention makes good financial sense. As we approach the IPL auction and learn more about the rules for this year’s mega-auction, I will provide more detailed retention selections.

Currently, my predicted retentions are as follows:

- Kolkata Knight Riders: Shreyas Iyer, Sunil Narine, Andre Russell, Rinku Singh
- Sunrisers Hyderabad: Pat Cummins, Heinrich Klaasen, Abhishek Sharma, Nitish Reddy Kumar
- Rajasthan Royals: Sanju Samson, Yashasvi Jaiswal, Jos Buttler, Yuzvendra Chahal
- Royal Challengers Bengaluru: Virat Kohli, Faf du Plessis, Glenn Maxwell
- Chennai Super Kings: Ruturaj Gaikwad, Shivam Dube, Matheesha Pathirana
- Delhi Capitals: Rishabh Pant, Tristan Stubbs/Jake Fraser McGurk, Axar Patel, Kuldeep Yadav
- Lucknow Super Giants: KL Rahul, Nicholas Pooran, Mayank Yadav
- Gujarat Titans: Shubman Gill, Sai Sudharsan, Rashid Khan, David Miller
- Punjab Kings: Sam Curran, Kagiso Rabada, Arshdeep Singh, Ashutosh Sharma/Shashank Singh
- Mumbai Indians: Hardik Pandya, Jasprit Bumrah, Tim David

As we get closer to the actual IPL auction and more details about the rules are revealed, I will delve deeper into these retention selections.

How did we calculate the ELO ratings?

The Elo system was invented as an improved chess-rating system over the previously used Harkness system,[1] but is also used as a rating system in association football, American football, baseball, basketball, pool, various board games and esports, and more recently large language models.

The difference in the ratings between two players serves as a predictor of the outcome of a match. Two players with equal ratings who play against each other are expected to score an equal number of wins. A player whose rating is 100 points greater than their opponent’s is expected to score 64%; if the difference is 200 points, then the expected score for the stronger player is 76%.[2]

To perform ELO Rating calculations, we calculated them in Python. This code performs Elo rating calculations for teams in the Indian Premier League (IPL) based on match data and then visualizes these ratings. Initially, the IPL match data is loaded from a CSV file into a Pandas DataFrame. Unique team names are extracted by concatenating the ‘team1’ and ‘team2’ columns, stripping any whitespace, and then identifying unique values. A dictionary named `elo_ratings` is initialized with each team starting at an Elo rating of 1000. The K-factor, which controls the sensitivity of the Elo rating changes, is set to 20.

import os
import json
import pandas as pd
import pydash
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import numpy as np
import csv
from mpl_toolkits.mplot3d import Axes3D
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt # plotting

matches = pd.read_csv("/Users/samyukth/Downloads/iplt20.csv", index_col=0)

unique_teams = pd.concat([matches['team1'].str.strip(), matches['team2'].str.strip()]).unique()

# Print unique teams
print(unique_teams)

unique_teams_team1 = matches['team1'].str.strip().unique()

matches_count = {}
for team in unique_teams:
matches_count[team] = ((matches['team1'].str.strip() == team) | (matches['team2'].str.strip() == team)).sum()

matches_count_df = pd.DataFrame(list(matches_count.items()), columns=['Team', 'MatchesPlayed'])

matches_count_df = matches_count_df.sort_values(by='MatchesPlayed', ascending=False)

print(matches_count_df)

unique_teams = pd.concat([matches['team1'], matches['team2']]).str.strip().unique()
elo_ratings = {team: 1000 for team in unique_teams}

# Set K-factor
k_factor = 20


def calculate_elo_rating(team1_rating, team2_rating, outcome, k_factor):
expected1 = 1 / (1 + 10 ** ((team2_rating - team1_rating) / 400))
elo_change = k_factor * (outcome - expected1)
return expected1, elo_change

def update_elo_ratings(matches, elo_ratings, k_factor):
for index, match in matches.iterrows():
team1 = str(match['team1']).strip()
team2 = str(match['team2']).strip()

winner = match['Match_Winner'] if pd.notna(match['Match_Winner']) else ''

if winner.strip() == team1:
outcome_team1 = 1 # Win for team1
outcome_team2 = 0 # Loss for team2
elif winner.strip() == team2:
outcome_team1 = 0 # Loss for team1
outcome_team2 = 1 # Win for team2
else:
outcome_team1 = 0 # Draw
outcome_team2 = 0 # Draw

# Get current Elo ratings
team1_rating = elo_ratings.get(team1, 1000)
team2_rating = elo_ratings.get(team2, 1000)

# Calculate Elo changes and expected outcomes
expected1, elo_change1 = calculate_elo_rating(team1_rating, team2_rating, outcome_team1, k_factor)
expected2, elo_change2 = calculate_elo_rating(team2_rating, team1_rating, outcome_team2, k_factor)

# Update Elo ratings in the dictionary
elo_ratings[team1] += elo_change1
elo_ratings[team2] += elo_change2

# Also update the Elo ratings and expected outcomes in the DataFrame
matches.at[index, 'team1_rating'] = team1_rating
matches.at[index, 'team2_rating'] = team2_rating
matches.at[index, 'team1_newrating'] = elo_ratings[team1]
matches.at[index, 'team2_newrating'] = elo_ratings[team2]
matches.at[index, 'team1_expected'] = expected1
matches.at[index, 'team2_expected'] = expected2
matches.at[index, 'outcometeam1'] = outcome_team1
matches.at[index, 'outcometeam2'] = outcome_team2

return elo_ratings

# Extract unique teams
unique_teams = pd.concat([matches['team1'], matches['team2']]).astype(str).str.strip().unique()

# Initialize Elo ratings dictionary
elo_ratings = {team: 1000 for team in unique_teams}

# Set K-factor
k_factor = 20

# Initialize Elo ratings columns in the matches DataFrame
matches['team1_rating'] = matches['team1'].astype(str).map(lambda x: elo_ratings.get(x.strip(), 1000)).astype('float64')
matches['team2_rating'] = matches['team2'].astype(str).map(lambda x: elo_ratings.get(x.strip(), 1000)).astype('float64')
matches['team1_newrating'] = None
matches['team2_newrating'] = None
matches['team1_expected'] = None
matches['team2_expected'] = None
matches['outcometeam1'] = None
matches['outcometeam2'] = None

# Update Elo ratings based on matches data
elo_ratings = update_elo_ratings(matches, elo_ratings, k_factor)

# Display updated Elo ratings
for team, rating in elo_ratings.items():
print(f"{team}: {rating}")

# Print the updated DataFrame
print(matches[['id', 'team1', 'team2', 'team1_rating', 'team2_rating', 'team1_newrating', 'team2_newrating', 'team1_expected', 'team2_expected', 'outcometeam1', 'outcometeam2']])

output_file = 'iplelo25.csv'
matches.to_csv(output_file, index=False)

import matplotlib.pyplot as plt
import seaborn as sns

eloiplratings = {
'Chennai Super Kings' : 1002.8179283934784,
'Mumbai Indians' : 946.3414320668008,
'Royal Challengers Bangalore' : 1006.1149364324098,
'Lucknow Super Giants' : 1011.17765723389,
'Rajasthan Royals' : 1021.4475796122256,
'Kolkata Knight Riders' : 1028.360458405689,
'Punjab Kings' : 953.8722311524473,
'Gujarat Titans' : 1029.7054936788775,
'Delhi Capitals' : 987.6735036206297,
'Sunrisers Hyderabad' : 992.4887794035528
}

elo_df = pd.DataFrame(list(eloiplratings.items()), columns=['Team', 'Elo Rating'])
output_file = 'iplelo13.csv'
elo_df.to_csv(output_file, index=False)

elo_df = elo_df.sort_values(by='Elo Rating', ascending=False)

print(elo_df)

Team Elo Rating
7 Gujarat Titans 1029.705494
5 Kolkata Knight Riders 1028.360458
4 Rajasthan Royals 1021.447580
3 Lucknow Super Giants 1011.177657
2 Royal Challengers Bangalore 1006.114936
0 Chennai Super Kings 1002.817928
9 Sunrisers Hyderabad 992.488779
8 Delhi Capitals 987.673504
6 Punjab Kings 953.872231
1 Mumbai Indians 946.341432

The `calculate_elo_rating` function computes the expected score and Elo rating change for a given match outcome. The `update_elo_ratings` function iterates through each match in the DataFrame, updates the ratings for the teams involved based on the match result, and also updates the DataFrame with the new ratings, expected outcomes, and match outcomes. The DataFrame is then updated with the current and new Elo ratings, as well as the expected outcomes and actual outcomes for each team in every match.

The Elo ratings are computed for all matches, and the updated ratings are printed for each team. The updated DataFrame, which now includes columns for the current and new ratings, expected outcomes, and match outcomes, is saved to a CSV file named ‘iplelo25.csv’.

Additionally, a dictionary named `eloiplratings` is created with the final Elo ratings for each team. This dictionary is converted into a DataFrame, sorted by Elo ratings in descending order, and saved to a CSV file named ‘iplelo13.csv’. The final Elo ratings DataFrame is printed, showing the teams ranked by their Elo ratings.

IPL Teams in terms of ELO Ratings

Overall, the code calculates the Elo ratings for IPL teams based on recent match results and outputs both the updated DataFrame and the final Elo ratings for visualisation and further analysis.

Multi-Franchise Mode: SA20, CPL, ILT20, MLC

India and the BCCI set the blueprint for franchise cricket as the most profitable avenue in the sport. Over time, more nations have followed suit, with all full-member nations establishing their own franchise cricket leagues. The primary attractor, however, remains money. IPL franchises have invested in other franchise leagues across the world, namely the ILT20 in the UAE, SA20 in South Africa, and MLC in the United States. These investments aim to grow profits and expand the talent pool by increasing the number of teams and games throughout the year. Additionally, having the same player represent multiple teams owned by the same franchise can enhance fan engagement. For instance, fans of Devon Conway from Chennai Super Kings may also enjoy watching him play for Texas Super Kings in Major League Cricket.

As a result of these expanding leagues and teams, cricketers have essentially become freelancers, offering their services to various franchises throughout the year. Quinton de Kock, for example, plays for the Lucknow Super Giants in the IPL, Durban Super Giants in SA20, MI New York in the MLC, and has also played for the Barbados Royals in the Caribbean Premier League. Within a span of 12 months, he has played for at least four different teams owned by three different owners. On the other hand, young players like Jake Fraser McGurk can easily transition between teams under the same franchise umbrella, such as moving from Dubai Capitals in ILT20 to Delhi Capitals in the IPL, as part of the multi-franchise model.

While the proliferation of franchise leagues helps sustain cricketing boards, it also creates gray areas. Questions arise about the overall benefit to the sport when a top player like Quinton de Kock plays for various franchise teams worldwide. Additionally, the multi-franchise model may reinforce the dominant influence of India on world cricket off the pitch. This system blurs the lines between national and franchise commitments, raising concerns about the balance between growing the sport and maintaining fair competition.

Evidently, the whole franchise model revolves around India

The multi-franchise model introduces several complexities and potential issues to the game. Firstly, player fatigue becomes a significant concern. Constantly moving between teams and countries can lead to physical and mental exhaustion, impacting players’ performances and increasing the risk of injuries. The relentless schedule leaves little room for rest and recovery, which can ultimately shorten careers.

Secondly, the loyalty of players to their national teams can be compromised. For example, several South African cricketers turned down their Test call-ups in a series against New Zealand this year in favor of playing in the SA20, highlighting where priorities stand for many cricketers in the sport. With lucrative franchise contracts on offer, players might prioritize these commitments over representing their countries, especially in less financially rewarding international fixtures. This shift could dilute the importance of national pride and undermine the traditional structure of international cricket.

Thirdly, the multi-franchise model can create conflicts of interest. Franchise owners, often involved in multiple leagues, might influence player availability and team strategies to align with their broader business interests. This interference can disrupt the competitive integrity of the leagues and lead to skewed outcomes that benefit the franchise owners’ preferred teams. To further depict such conflict of interest, take last year’s MLC final between Seattle Orcas and MI New York, where MI New York’s team was comprised of seasoned T20 superstars such as Rashid Khan, Nicholas Pooran, and Trent Boult. However, none of them play for Mumbai Indians in the IPL, and even stranger is how Nicholas Pooran plays for MI Emirates too but doesn’t play for Mumbai Indians.

Moreover, the dominance of IPL franchises in other leagues can create an uneven playing field. Teams backed by IPL franchises typically have more resources and access to better talent, potentially leading to disparities in team strength. This imbalance can diminish the competitiveness of the leagues and reduce the excitement for fans.

The multi-franchise model also poses challenges for team cohesion and identity. Players frequently moving between teams can hinder the development of strong team dynamics and long-term strategies. Fans may find it difficult to form lasting connections with players who are constantly shifting allegiances.

Additionally, the multi-franchise model raises ethical questions about player exploitation. With cricketers being treated as assets to be traded and used across various teams, there is a risk of prioritizing financial gain over the well-being and career development of the players. This commercial approach can undermine the human aspect of the sport, where players’ personal growth and passion for the game should ideally be at the forefront.

Furthermore, the cricketing world increasingly orbits around India. Most investors in franchise leagues are likely to be Indian, given their deep interest and substantial financial capability in the sport. This influence is evident in sponsorships as well. For example, Indian dairy milk brands such as Amul and Nandini sponsored some associate nations during the recent ICC T20 World Cup 2024. This dominance extends beyond just the IPL, affecting global cricket’s financial and structural dynamics.

In conclusion, while the multi-franchise model has brought financial prosperity and expanded opportunities to cricket, it also introduces significant challenges. Ensuring player welfare, maintaining the integrity of the game, and balancing commercial interests with the sport’s traditional values are critical considerations that need to be addressed to preserve the essence and spirit of cricket in this evolving landscape.

The Remainders: Big Bash League, the Hundred

Outside of the Indian-invested franchise cricket leagues, what remains are the Australian Big Bash League (BBL) and the English The Hundred. However, both leagues and their respective cricketing boards have been struggling to attract top-level foreign talent without accepting investment from IPL teams. The primary concern for both leagues is the conflict of scheduling.

In the case of the Big Bash League, it coincides with Australia’s Test summer, meaning that many top Australian cricketers, such as Pat Cummins, Travis Head, and Mitchell Marsh, rarely participate in their home country’s franchise league as they are occupied with international duties. In contrast, the IPL benefits from a schedule that does not conflict with any other major cricket events, largely due to the BCCI’s significant influence. This scheduling advantage allows players to participate in the IPL without interruptions.

Moreover, the only other uninterrupted time Australian players have to engage in franchise cricket is in July, during which they often play in Major League Cricket (MLC), predominantly for Indian-backed franchises. This scenario underscores the off-pitch power of the BCCI, as for many top-level players, the only viable opportunities to play franchise cricket outside of international duty coincide with the IPL, MLC, or the Caribbean Premier League — all of which have significant Indian investment. As more players gravitate towards these Indian-backed franchises, the quality and viewership of the Big Bash League are likely to deteriorate.

The English cricket scene faces a similar dilemma. The Hundred is scheduled during England’s home Test summer, resulting in key players like Harry Brook, Jonny Bairstow, and Mark Wood missing out on participating in their home country’s franchise league. This overlap not only affects the league’s competitiveness but also its appeal to both domestic and international audiences.

More concerningly for The Hundred, the England and Wales Cricket Board (ECB) has decided to open all eight franchises to external investment. This move is driven by the need to keep the competition running and to cut down on financial losses. The profitability model of other franchise leagues, particularly those backed by Indian investment, has made it increasingly unsustainable for leagues solely supported by their national cricket boards. This shift in the financial landscape of cricket leagues highlights the growing disparity in resources and influence, with Indian-backed franchises continually strengthening their dominance.

The multi-franchise model and the pervasive influence of the BCCI have led to several critical issues within the cricketing ecosystem. The BBL and The Hundred struggle to attract and retain top talent due to scheduling conflicts and financial limitations. This situation compromises the leagues’ ability to offer competitive and entertaining cricket, potentially leading to a decline in viewership and overall interest.

IPL 2024

This year’s Indian Premier League (IPL) season marked a significant departure with historically high scores and a spotlight on batting-friendly conditions that sustained throughout matches. Unlike previous tournaments, the cricket ball retained its firmness longer, enabling batsmen to maintain aggressive stroke play consistently. Teams like Sunrisers Hyderabad and Kolkata Knight Riders capitalized on explosive opening partnerships, regularly achieving scores exceeding 250 runs, setting formidable targets or making chases dauntingly high-stakes affairs.

In this context, strike rate emerged as a crucial metric, reflecting a player’s ability to score quickly and decisively, thus becoming a key determinant of performance. Rather than sheer volume, this season emphasized the quality of impact per game, distinguishing between impactful contributions and superficially inflated statistics.

import pandas as pd
import numpy as np

urls_dict = {
'KKR' : "https://www.espncricinfo.com/records/team/averages-batting/kolkata-knight-riders-4341?current=2",
'MI' : 'https://www.espncricinfo.com/records/team/averages-batting/mumbai-indians-4346?current=2',
'RR' : "https://www.espncricinfo.com/records/team/averages-batting/rajasthan-royals-4345?current=2",
'SRH' : "https://www.espncricinfo.com/records/team/averages-batting/sunrisers-hyderabad-5143?current=2",
'CSK' : "https://www.espncricinfo.com/records/team/averages-batting/chennai-super-kings-4343?current=2",
'RCB' : "https://www.espncricinfo.com/records/team/averages-batting/royal-challengers-bengaluru-4340?current=2",
'LSG' : "https://www.espncricinfo.com/records/team/averages-batting/lucknow-super-giants-6903?current=2",
'DC' : "https://www.espncricinfo.com/records/team/averages-batting/delhi-capitals-4344?current=2",
'PK' : "https://www.espncricinfo.com/records/team/averages-batting/punjab-kings-4342?current=2",
'GT' : "https://www.espncricinfo.com/records/team/averages-batting/gujarat-titans-6904?current=2"
}

all_data = pd.DataFrame()

for country, url in urls_dict.items():
# Read the tables from the URL
all_tables = pd.read_html(url)

# Assuming the relevant table is the first one
df = all_tables[0]

# Add the Country and Nationality columns
df['Country'] = url.split('/')[5]
df['Nationality'] = country

# Append the data to all_data
all_data = pd.concat([all_data, df], ignore_index=True)

# Save the combined data to a CSV file
all_data.to_csv('iplbattingaverages1.csv', index=False)

print(all_data)

df = pd.read_csv("/Users/samyukth/Downloads/iplbattingaverages1.csv", index_col=0)

df.columns

# Normalize the metrics
df['normalized_avg'] = (df['Ave'] - df['Ave'].min()) / (df['Ave'].max() - df['Ave'].min())
df['normalized_runs'] = (df['Runs'] - df['Runs'].min()) / (df['Runs'].max() - df['Runs'].min())
df['normalized_sr'] = (df['SR'] - df['SR'].min()) / (df['SR'].max() - df['SR'].min())
df['normalized_impact'] = (df['Impact/Game'] - df['Impact/Game'].min()) / (df['Impact/Game'].max() - df['Impact/Game'].min())

weight_avg = 0.35
weight_runs = 0.10
weight_sr = 0.35
weight_impact = 0.20

df['rating'] = (
weight_avg * df['normalized_avg'] +
weight_runs * df['normalized_runs'] +
weight_sr * df['normalized_sr'] +
weight_impact * df['normalized_impact']
)

Using data sourced from ESPN Cricinfo, comprehensive batting statistics were gathered and consolidated into a single dataset. This included fundamental metrics such as averages (`Ave`), runs (`Runs`), strike rates (`SR`), and the impactful `Impact/Game`. To ensure fair comparisons across players, these metrics were normalized, transforming them into a uniform scale from 0 to 1.

Total Impact for a player in a match is a numerical value which is the sum of his Batting and Bowling Impacts. These Impacts are calculated based on the context of a batting/bowling performance.

Context is based on an intelligent algorithm that quantifies the pressure on the batter/bowler at every ball of an innings. This is the Pressure Index (PI) value for each ball.

The factors which go into calculating PI include: runs required; overs remaining; quality of batter at the crease and those to follow; quality of bowlers and number of overs left for each; pitch/conditions, and how easy/tough it is for batter/bowlers.

The PI value is always between O and 1. The closer it is to 1, the higher is the pressure on the batter. (The converse is true for the bowler.)

The Batting/Bowling Impact is thus a factor not only of the runs scored/wickets taken/economy rate, but also of the pressure under which these performances happened.

While extra credit for match-winning performances are organically built into the algorithm, it is not unusual for a stand-out performance in a losing cause to be the most Impactful in a match.

The computation of weighted ratings was pivotal in assessing each player’s overall batting performance. By integrating normalized metrics with specific weights (`weight_avg`, `weight_runs`, `weight_sr`, `weight_impact`), these ratings provided a holistic view of player effectiveness throughout the tournament, offering insights into their contributions beyond conventional statistics.

Bowling performances also played a critical role, where players like Sunil Narine and Jasprit Bumrah demonstrated their influence not just through wickets taken but also through economical bowling. By constraining batsmen’s scoring opportunities and building pressure, these bowlers contributed significantly to strategic dismissals by their teammates.

Strategically, teams such as Delhi Capitals, Kolkata Knight Riders, and Sunrisers Hyderabad leveraged explosive batting partnerships to set a strong foundation and provide stability for subsequent batters. This approach not only ensured consistent scoring but also relieved pressure on the middle and lower order, enabling them to contribute effectively to team totals.

Conversely, players known for anchor roles, like Ruturaj Gaikwad and Virat Kohli, initially faced challenges adapting their traditional styles to the aggressive IPL environment. However, adjustments in their approach as the tournament progressed allowed them to capitalize on scoring opportunities more effectively, thereby enhancing their value to their respective teams during crucial phases of matches.

Based on the results, we see that there’s a clear positive relationship between rating and the Impact/Game given the impact metric was used partially to calculate the scaled ratings. For calculating bowling rating, we ran a similar process for bowlers, with the results attached below:

import pandas as pd

# Load the CSV file
file_path = '/Users/samyukth/Downloads/iplbowlingaverages1.csv'
df = pd.read_csv(file_path)

# Convert columns to numeric, forcing errors to NaN
df['Ave'] = pd.to_numeric(df['Ave'], errors='coerce')
df['Runs'] = pd.to_numeric(df['Runs'], errors='coerce')
df['Wkts'] = pd.to_numeric(df['Wkts'], errors='coerce')
df['Econ'] = pd.to_numeric(df['Econ'], errors='coerce')

# Check for any remaining non-numeric values
print(df[['Ave', 'Runs', 'Wkts', 'Econ']].info())

# Drop rows with NaN values in these columns (if needed)
df = df.dropna(subset=['Ave', 'Runs', 'Wkts', 'Econ'])

# Normalize the metrics
df['normalized_avg'] = (df['Ave'] - df['Ave'].min()) / (df['Ave'].max() - df['Ave'].min())
df['normalized_wickets'] = (df['Wkts'] - df['Wkts'].min()) / (df['Wkts'].max() - df['Wkts'].min())
df['normalized_economy'] = (df['Econ'] - df['Econ'].min()) / (df['Econ'].max() - df['Econ'].min())

# Define weights for each metric
weight_avg = 0.35
weight_wickets = 0.30
weight_economy = 0.35

# Calculate the overall rating
df['rating'] = (
weight_avg * (1 - df['normalized_avg']) + # lower average is better
weight_wickets * df['normalized_wickets'] +
weight_economy * (1 - df['normalized_economy']) # lower economy rate is better
)

# Scale ratings to 0-100
df['rating'] = df['rating'] * 100

# Display the updated DataFrame with normalized values and rating
print(df[['Player1', 'Ave', 'normalized_avg', 'Wkts', 'normalized_wickets', 'Econ', 'normalized_economy', 'rating']])

Overall, this year’s IPL underscored the evolving dynamics between batting and bowling strategies, highlighting adaptability and strategic innovation as pivotal factors in achieving success in one of franchise cricket’s premier events.

In conclusion, the multi-franchise model in cricket stands at a crossroads where financial gains must harmonize with the sport’s intrinsic values. While leagues like the IPL have propelled cricket into new realms of popularity and profitability, they also face significant hurdles in ensuring equitable competition and preserving players’ allegiance to national teams. The future hinges on striking a delicate balance — nurturing the growth of franchise cricket while safeguarding the spirit of the game. As stakeholders navigate these challenges, addressing concerns around scheduling, player welfare, and the commercialisaion of cricket will be pivotal in shaping a sustainable and inclusive future for this vibrant global sport.

--

--