Ball Retention Value Model (BRV-Model): Measuring the progression value after a throw-in under pressure
In football data we are always looking to add value. There are obviously many ways to add value, but I really like to focus on set pieces. Not necessarily the routines, but more the value we get from these standardised situation such as corners, freekicks, penalties and throw-ins.
The latter is the one I want to zoom in to for this article. I want to capture the value of progression that follows after a throw-in is taken on the pitch. This data-driven research will attempt to find the most valuable players who engage in throw-ins.
Contents
- Data collection and representation
- Methodology
- The model
- Analysis I: Validating the model
- Analysis II: Finding the most valuable players
- Conclusion
Data collection and representation
The data I have used for this article, comes from StatsBomb. The data was collected on Monday 20th, 2025 and focuses on a single match. In this case it will not be representative for the league or the players, but it will be illustrative of what we can do with match-level event data going forward.
The data that I’m focusing on is the data coming forward as result of a throw-in. That is the starting point and the first contact + progression with the ball is essential for the things we want to look at today.
Methodology
In terms of methodology, the steps are not much different in the beginning compared to some of my other models. What I first will do is to look for passes and reception after a throw-in.
The methodology for analysing throw-in passes began by filtering the dataset to include only events labeled as passes that originated from a throw-in. This was determined by selecting records where the event_type_name
was "Pass" and the play_pattern_name
was "From Throw In".
Next, the pitch was divided into a 12 by 8 grid, based on a standard pitch size of 120 by 80 meters according to StatsBomb coordinates. Bin edges were created using evenly spaced intervals across both dimensions. A value matrix was constructed to quantify the strategic value of each zone on the pitch. For each grid cell, the center point was calculated, and its distance to the goal (assumed to be at x = 120, y = 40) was used to derive a proximity score. This score was normalised by the maximum possible distance on the pitch. Additionally, a bonus factor was applied to account for central positioning, where cells in the central corridor received a higher weight than those on the wide areas.
To assess the effectiveness of each throw-in pass, the starting and ending locations were mapped to their corresponding grid cells. The value at the end location was subtracted from the value at the start location, yielding the xValue gained from the pass. This metric represents the increase in spatial advantage resulting from the throw-in.
Each pass was then annotated with contextual information. The under_pressure
column was filled where missing, defaulting to false. The pitch was segmented into thirds based on the x-coordinate to label each pass as occurring in the defensive third, middle third, or final third. Additionally, horizontal lanes were assigned based on the y-coordinate, categorising each pass into one of five zones: wide left, left halfspace, central, right halfspace, or wide right.
What we have done now is create the values for each reception. This can look like something like this:
In this pitch visual you can see all the values given to the ball receptions after a throw-in with the values being categorised with the filters we have set above. Higher up the pitch and central, that’s where the most value is.
We have now have looked at the reception value and location of where the ball is received under pressure. The next step is to look at the ball retention. In other words, what is done after the ball is received?
Now we can where the next pass leads to and whether low reception value leads to higher progression and high reception value leads to lower progression via passing.
The model
Looking at that these values, we want to take the next step. Can we predict values based on historical data: calculating Expected Ball Retention Value (xBRV). We create a new model that looks at all the different values that have been used in the creation of the value model and take it in:
In this context, the model predicts the probability that a given throw-in pass results in a high-value outcome, defined based on the xBRV metric that quantifies progression or threat added. Logistic regression models the log-odds of the outcome as a linear combination of input features such as pass distance, angle, pressure status, pitch zone, and lane. Each feature is assigned a coefficient estimated through maximum likelihood estimation, which finds the parameter values that maximize the probability of observing the given data.
The sigmoid function is then applied to transform the linear combination into a probability value between 0 and 1. Feature importance is derived from the magnitude of these coefficients, indicating each variable’s contribution to the model’s decision boundary. The absolute coefficient values are used to compare the influence of each feature, aligning with standard practices in interpretable linear modeling.
As you can see we assigned values to all the bin with colors. This singifies how high the xBRV is per bin. So when a throw-in reception and/or subsequent pass go into that bin, they have a certain expected BRV. However, that doesn’t mean this is exactly the same as the actual value.
In the scatterplot above you can see all situations with their expected value and their actual value. Of course we can look at it from a player perspective and overperformance, but we will do that later. What’s something we much more look at is how close the expected value comes to the actual value. In other words: how sound is the prediction?
Analysis I: Validating the model
A thing I want to do more in my articles is to be critical of my own models. I want to make sure that you are aware that creating a model doesn’t mean it’s good or bad. But we need to make sure it’s representative and that we are aware of the margin for error.
The first thing I look at is the Coefficient of determination (R2). The model explains about 47% of the variability in the throw-in pass value, indicating a moderate fit. After accounting for the number of predictors, the model still explains 44% of variance. This suggests the model is not overfitting by using too many irrelevant features.
The second I’m looking at is the Mean Absolute Error. On average, the predicted xValue
deviates from actual values by 0.069, which measures typical prediction error regardless of direction. And also Root Mean Squared Error, which penalises larger errors more than MAE, highlighting the model’s sensitivity to outliers. A RMSE of 0.096 means the typical prediction error magnitude is about this size.
What we see here is that the training error (the data the model sees) starts low and ends higher than the start point. The validation error is the opposite, as it’s unseen data. The end up very close to each other after the 160 set size, which can mean the following:
- No severe overfitting: Training error rising and matching validation error suggests your model is not overfitting (memorizing training data) anymore.
- No severe underfitting: Validation error is dropping with more data, showing the model can learn from added data effectively.
- Model complexity is appropriate: The model complexity seems balanced for your data, as the errors converge.
This scatterplot looks at the predicted value of the throw-in’s reception and subsequent progression and compares it to the residuals. The residuals are the Actual values — Predicted values. In other words, it tells us how far off my model was with the actual values. Positive residuals mean that the model underestimated the actual values. Negative residuals mean that the model overestimated the actual values.
When we look at the distribution plot of the residuals we see that most of the residuals are close to the 0.0 mark which means that the model is doing it’s work very well. However this model slighlty has a tendency to overestimate the actual values in comparison to the predcited values, as we see sligly more high count on the negative residuals. This means that we could do well with changing the model a little bit more in terms of how we value actual values.
The Q-Q plot offers a visual comparison between the distribution of model residuals and a perfect normal distribution. At the plot’s left side, points falling below the reference line indicate that the smallest residuals are more extreme than expected, suggesting a heavier left tail. Moving toward the center, points crossing above the line show that the majority of residuals are slightly larger than what a normal distribution would predict. Toward the right end, points dipping below the line again suggest that the largest residuals are less extreme, implying a lighter right tail.
This pattern reveals that while the residuals roughly follow a normal distribution, they exhibit some asymmetry, or skewness. Specifically, the errors lean toward more pronounced negative deviations but fewer large positive outliers. Such skewness can impact the validity of statistical assumptions underpinning the model, like error normality, and may subtly influence confidence intervals or prediction accuracy. It highlights areas where the model fits well and where it could be improved.
Analysis II: Finding the most valuable players
Now to the actual, concrete, tangible analysis: how do we use that theory and methodology to actually give meaning to the players?
So this in essence what we are looking for, which players performed better or worse than they were expected? Best players are Farji, Sormo and Sodal at the top, worst players are Vilsvik, Bojadzic and Gorlicht at the bottom.
But there are so many more ways we can make it interesting and find players we need to keep on tracking.
What we can see here is that more players have a count of under the 10 throw-in passes. Most of the have a positive net rate for residuals. However, the more passes are made, the more the values are between -0,2 and 0,2 — indicationg a bit more stabilisation.
In the end, this is what we are looking for. Who are the top performers after a throw-in? We measure the reception location of the ball and the subsequent pass they give after that. This all happens under pressure and by doing so, we can evaluate whether a player receives progressively, retains possession and gets progressing going forward.
Final thoughts
The xValue model addresses throw-ins as measurable events with quantifiable outcomes. Rather than dismissing them as routine restarts, the model recognises that throw-ins occur in vastly different contexts — some near the opponent’s penalty area under minimal pressure, others deep in defensive territory with multiple players closing in. By analysing factors like field position, defensive pressure, and match situation, the model establishes what we should reasonably expect from each throw-in scenario.
What makes this approach particularly revealing is how it exposes the gap between expectation and reality. Some players consistently extract more value from throw-ins than the model predicts, transforming what appears to be a standard restart into a retained possession or even a scoring opportunity. These players possess an often-unrecognized skill set that traditional statistics miss entirely.
The model’s limitations are worth acknowledging. Football’s fluid nature means that individual technique, team coordination, and tactical preparation all influence throw-in outcomes in ways that resist easy quantification. A perfectly weighted throw to an unmarked teammate reflects not just the thrower’s ability but also the team’s movement patterns and the opposition’s defensive awareness.