← Back to Portfolio Project Brief

IPL Moneyball — Finding Undervalued Players in Auction Data

A regression-based valuation model applying the sabermetrics "Moneyball" question to IPL auction data: does price track performance, or reputation?

The Problem

IPL franchises spend tens of millions of rupees per season bidding for players, but auction prices are driven by reputation, recent form, and bidding-war dynamics as much as by underlying on-field output. A franchise that can systematically identify players who are underpriced relative to their output gains a real competitive edge — the same data-driven scouting advantage made famous by the Oakland A's in baseball.

The Data

295,732 real deliveries 970 real auction records 2007–2026 64.0% match rate

Two genuinely independent real sources, merged: ball-by-ball performance data from Cricsheet.org, and IPL auction prices (2013–2022) from a Kaggle dataset. There's no shared player-ID registry between the two — Cricsheet uses "DA Warner," Kaggle uses "David Warner." Built a surname + year + initial disambiguation layer to join them, and reported the match rate (620 of 969 records, 64.0%) honestly rather than hiding the gap.

The Approach

Built a composite performance score per player-season (standardized batting runs + standardized bowling output), then regressed performance on log(auction price) to get each player-season's price-implied expected performance. The residual — actual minus expected — is z-scored across all eligible player-seasons to flag outliers in either direction.

A methodology correction made mid-build, not after: the first version used a naive performance ÷ price ratio, which is mathematically dominated by the denominator and surfaces "cheap players," not genuinely undervalued skill. Replaced it with the regression-residual approach above — the actual mechanism real sabermetrics value-over-replacement metrics use.

Key Findings

Robin Uthappa, 2014 — 3.1σ undervalued. That was the season he won the IPL Orange Cap as the league's leading run-scorer — a fact the model had no knowledge of, arrived at purely from price and ball-by-ball data.
Kane Williamson, 2018 — 3.7σ undervalued. A real, recognizable standout season, independently corroborating the model.
Virat Kohli's ₹21 Cr 2025 retention — +2.69σ. Extending the model in v4 to cover retained icon players (not just auctioned ones), Kohli's retention price held up strongly against the auction-fitted expected-performance curve.

Honest Limitations

The composite performance score is a transparent standardized blend, not a fully validated cricket impact metric. The 64% match rate means roughly a third of auction records couldn't be confidently linked to performance data — a real entity-resolution gap, not swept under the rug. Auction-only data structurally excludes long-tenured retained icon players from the base model (addressed separately in v4 for retention prices, with an explicit caveat that retention isn't set by competitive bidding the way auction price is).

Stack

Python Pandas NumPy Regression / OLS Streamlit Plotly
View Live Demo → GitHub Repo