← Back to projects

Coach Valuation: Isolating a Manager's Effect on Results

How much of a football team's performance is the coach, versus the squad he's given? This project builds a statistical pipeline to answer that question and validates the resulting coach ratings three independent ways.

14
leagues covered
2005–2025
seasons analyzed
3
independent out-of-sample validations

The problem

Squad spending explains most of a football team's league performance, which makes it hard to tell whether a manager is actually good or simply well-resourced. Raw squad value is a weak proxy for what a coach actually deployed, since it ignores who played the minutes. This project's core hypothesis: a minutes-weighted squad-value metric predicts final points more accurately than raw squad value, and the leftover residual — performance above or below what the squad alone would predict — is a defensible signal of coaching quality.

Approach

Squad values, minutes, coach tenures, and advanced match stats are scraped and cached locally in R. For each team-season, minutes-weighted squad value is computed and compared against raw squad value as a predictor of final points. The better model's residuals are then attributed to individual coach stints using a mixed-effects model (coach as a random effect, games-weighted so short caretaker spells don't dominate), producing a BLUP-based rating per coach and a letter grade (A–F) for anyone who clears a games-played certification bar.

On top of the core rating, the project layers on descriptive analysis: an offense/defense strengths split, a team-style fingerprint (possession, pressing, directness, etc.), and a recommender that scores how well a given coach fits a given squad for a team-builder tool.

Validation

A rating is only useful if it predicts something out-of-sample. Three independent tests, on three different designs, all point the same way:

p = 0.0027
Recommender payoff: leave-one-season-out CV that a suggested coach hire beats the alternative
p = 0.004
Event study: a club's incoming coach grade predicts his performance-above-squad-value at the new club
p = 0.0024
Forward test: prior-season coach ratings, frozen ahead of time, predict 2025/26 performance the model never saw

Not every angle explored held up — an analysis of whether coaches accelerate player market-value growth came back null after checking repeatability out-of-sample, and a betting-market benchmark confirmed that bookmakers already price in most of what the model captures. Both are reported as negative results in the project's full methodology writeup rather than left out.

Premier League residuals: actual points vs. model-predicted points
Model residuals for the Premier League — the gap between actual and predicted points is what gets attributed to coaching.
Lag-1 season-to-season correlation of coach residuals
Season-to-season correlation of a coach's residual performance — evidence the signal is a persistent trait, not noise.

The site

Results are published as a static, vanilla JS/HTML/CSS site: searchable coach and team pages with grade history, a league table view, a team-builder tool that recommends coach-squad fits, and a long-form methodology writeup covering every validated result (and every null).

Run it locally

The dashboard is a static site that fetches JSON via ES modules, so it needs to be served rather than opened directly from disk:

git clone https://github.com/AndrewMSalisbury/SummerSoccerProjectMegaRepo.git
cd SummerSoccerProjectMegaRepo/site
python -m http.server 8000
# then open http://localhost:8000/

Tech stack

View the full source code on GitHub →