Vienna University of Economics and Business
Sep 27, 2025
How do we commonly evaluate players in sports?
Sports analytics:
Expected value metrics \(\rightarrow\) compare observed and expected outcome:
Examples:
Goals above expectation (GAX):
over a time frame (e.g. a season), compute differences between goals and xG for all shots of player \(i\)
\[ \operatorname{GAX}_i = \sum_{j=1}^{N_i} (Y_j - \hat h(Z_j))\]
Recent criticism of GAX (Baron et al. 2024; Davis and Robberechts 2024):
Instability and limited replicability (over seasons)
Low (effective) sample size \(\rightarrow\) high uncertainty, lack of uncertainty quantification
Biases arising from data:
\(\Rightarrow\) GAX have been labeled a poor measure for evaluating shooting skills
Recent criticism of GAX (Baron et al. 2024; Davis and Robberechts 2024):
Instability and limited replicability (over seasons)
Low (effective) sample size \(\rightarrow\) high uncertainty, lack of uncertainty quantification
Biases arising from data:
\(\Rightarrow\) GAX have been labeled a poor measure for evaluating shooting skills
Are GAX really a poor metric for player evaluation?
How can we identify outstanding shooters?
Setup:
Logistic regression model:
\(Y \mid X,Z \sim \operatorname{Ber}(\pi(X,Z)), \quad \pi(X,Z) = P(Y=1 \mid X,Z)\) and
\[ \begin{aligned} \log\left(\frac{\pi(X,Z)}{1-\pi(X,Z)}\right) = X\beta + Z^{\top}\gamma. \end{aligned} \]
Goal: Inference on \(\beta\)
Given i.i.d data \((Y_i,X_i,Z_i)_{i = 1}^N\) from the logistic regression model
Score of \(\beta\) (target of score tests): …………………………………………..
\[ \sum_{i = 1}^N\frac{\partial\log L(\beta,\gamma \mid Y_i,X_i,Z_i)}{\partial \beta}\]
Score test on \(\beta\) uses score under \(H_0: \beta = 0\):
Recall:
\[ \operatorname{GAX}_i = \sum_{j=1}^{N_i} (Y_j - \hat h(Z_j))\]
Since \(X_j\) binary \(\Rightarrow\) score is exactly GAX for a player
Conclusion: GAX relates to a classical score test in logistic regression model
Problems:
Linear model assumptions unrealistic
traditional GAX via machine learning model:
Partially linear logistic regression model (PLLM) ………………………………….
\[ \log\left(\frac{\pi(X,Z)}{1-\pi(X,Z)}\right) = X\beta + g(Z) \]
Goal: Inference on \(\beta\) (testing \(H_0 : \beta = 0\))
GCM test uses empirical GCM:
GAX in parametric model:
\[\sum_{j=1}^{N} (Y_j - \hat h(Z_j))X_j\]
GAX via machine learning:
\[\sum_{j=1}^{N} (Y_j - \hat{h}(Z_j))X_j\]
rGAX:
\[\sum_{j=1}^{N} (Y_j-\hat h(Z_j))(X_j - \hat f(Z_j))\]
GAX in parametric model:
\[\sum_{j=1}^{N} (Y_j - \hat h(Z_j))X_j\]
GAX via machine learning:
\[\sum_{j=1}^{N} (Y_j - \hat{h}(Z_j))X_j\]
rGAX:
\[\sum_{j=1}^{N} (Y_j-\hat h(Z_j))(X_j - \hat f(Z_j))\]
GAX in parametric model:
\[\sum_{j=1}^{N} (Y_j - \hat h(Z_j))X_j\]
GAX via machine learning:
\[\sum_{j=1}^{N} (Y_j - \hat{h}(Z_j))X_j\]
rGAX:
\[\sum_{j=1}^{N} (Y_j-\hat h(Z_j))(X_j - \hat f(Z_j))\]
Use rGAX instead of GAX for shooting skill evaluation:
rMetrics: Framework generalizable to any metric of the form
\[\sum_{j=1}^{N} (Y_j - \hat{h}(Z_j))X_j\]
rMetrics (and GCM test results) conveniently obtained via comets R package (Kook 2025)
Freely available event stream data from Hudl-Statsbomb
Shot specific features \(Z\):
xG model (\(\hat h\)):
Model for \(X\) regression (\(\hat f\)):
Is rGAX really better than GAX?
Is rGAX really better than GAX?
Recall recent criticism of GAX (Baron et al. 2024; Davis and Robberechts 2024):
Instability and limited replicability (over seasons)
Low (effective) sample size and hence high uncertainty
Biases arising from data
How are GAX and rGAX affected by data selection?
How are GAX and rGAX affected by data selection?
Illustrative Example: Messi data \(\rightarrow\) Hudl-Statsbomb provides event stream data from all Messi matches at FC Barcelona.
How are GAX and rGAX affected by data selection?
Illustrative Example: Messi data \(\rightarrow\) Hudl-Statsbomb provides event stream data from all Messi matches at FC Barcelona.
Fit 3 different xG models:
Model trained on all data:
Model trained on 2015/16 data of top 5 European leagues:
Model trained on shots from players with less than 30 shots observed in the data
Quantified Shooter impact (qSI):
\[\sum_{j=1}^{N} (Y_j - \hat h(Z_j))X_j\]
Use residualized version (rqSI) …………………………………..
\[\sum_{j=1}^{N} (Y_j-\hat h(Z_j))(X_j - \hat f(Z_j))\]
Example:
What about the distinction between 2 and 3 pointers?
Approach 1:
Approach 2:
Completion (percentage) over expectation (CPOE):
\[\sum_{j=1}^{N} (Y_j - \hat h(Z_j))X_j\]
Use residualized version (rCPOE) …………………………………..
\[\sum_{j=1}^{N} (Y_j-\hat h(Z_j))(X_j - \hat f(Z_j))\]
Example:
Expected value metrics: compare an actual to an expected outcome
rMetrics: generalization using residualized scores
Advanced player evaluation: Added value by action ……………………….
Examples:
Expected points added: ……………………………………………………….
Instead of using the same EP model for \(\hat{Y}_j\) and \(\widehat{EP}\), fit a model to \(\hat Y\) \(\rightarrow\) residualized EPA (rEPA):
Thank you for your attention!
(Scan QR code for slides, preprint, and more information!)
Generalised Covariance Measure:
\[ \operatorname{GCM} = \mathbb{E}[\operatorname{Cov}(Y,X \mid Z)] =\mathbb{E}[(Y - \mathbb{E}[Y | Z])(X - \mathbb{E}[X | Z])]\]
Basis for GCM test:
\[Y \perp\!\!\!\perp X \mid Z \Rightarrow \mathbb{E}[\operatorname{Cov}(Y,X \mid Z)] = 0\]
GCM test in practice:
Takeaways:
Proposition
Consider a PLLM and let \(X\) be a binary variable with \(P(X = 1 | Z) > 0\). Then \[\beta = 0 \Leftrightarrow \mathbb{E}[(\operatorname{Cov}(Y,X \mid Z)] = 0\]
Takeaways:
Proposition
Consider a PLLM and let \(X\) be a binary variable with \(P(X = 1 | Z) > 0\). Then \[\beta = 0 \Leftrightarrow \mathbb{E}[(\operatorname{Cov}(Y,X \mid Z)] = 0\]
Proposition
Consider a PLLM and let \(X\) be a binary variable with \(P(X = 1 | Z) > 0\). Then \[\operatorname{sign}(\beta) = \operatorname{sign}(\mathbb{E}[\operatorname{Cov}(Y,X \mid Z)])\]
Takeaways:
Proposition
Consider a PLLM and let \(X\) be a binary variable with \(P(X = 1 | Z) > 0\). Then \[\beta = 0 \Leftrightarrow \mathbb{E}[(\operatorname{Cov}(Y,X \mid Z)] = 0\]
Proposition
Consider a PLLM and let \(X\) be a binary variable with \(P(X = 1 | Z) > 0\). Then \[\operatorname{sign}(\beta) = \operatorname{sign}(\mathbb{E}[\operatorname{Cov}(Y,X \mid Z)])\]
Takeaways:
Survival setup:
Injuries above expectation (IAX):
Residualized version (rIAX)