Sports Performance Analytics from Match Event Data
A sports analytics tool for club analysts, academy coaches and university teams that values every on-ball action by how much it changed the chance of scoring, using open football event data. A data and machine learning final year project with a stability test, interactive pitch maps and a clear path to paid analysis work.
Intermediate
A small team, or one strong student willing to learn something new.1 semester · 2 students
6 to ship
3 optional extrasSuggested stack
What you should ship
- Ingestion of an open event dataset (such as StatsBomb open data) into a queryable schema with a documented action format
- An action value model scoring each action by how much it changed the probability of scoring and conceding in the next few actions
- Player contribution metrics per 90 minutes built from that model, validated for stability across halves of a season
- Interactive visualisations including pitch maps, pass networks and possession chains
- A comparison of your metric against traditional counting statistics, showing what it captures that they miss
- A one-page scouting report template generated for any player in the dataset
If you have time left
- Team style clustering from possession patterns
- Substitution impact estimated with appropriate controls for score and time
- Port the pipeline to cricket ball-by-ball data from Cricsheet and value each delivery by change in expected runs or wickets
The problem with traditional match statistics
Traditional statistics credit whoever finished a move and ignore everyone who created it. A midfielder who breaks two lines with a pass and a defender who carries the ball out of pressure get nothing on the score sheet. Coaches at academies and university teams know this, but without data they judge from memory and highlight clips, which favours the most visible players. Modern sports analytics values every action by how much it improved the chance of a good outcome, which is a much better description of contribution.
Professional clubs have analysts and expensive data feeds. Academies, university teams, lower-league clubs and scouting agencies mostly do not, and they are the people who would benefit from clear, honest metrics.
What already exists and the gap
- Stats Perform (Opta) and Wyscout sell detailed event data and analysis platforms to professional clubs and media.
- StatsBomb, now part of Hudl, sells data and also publishes free open event data for selected competitions for research and genuine interest.
- FBref publishes season statistics for many leagues.
- socceraction, an open source library from KU Leuven researchers, implements action valuation methods such as VAEP.
Professional tools are priced for professional clubs, and free statistics sites stop at season aggregates. The gap is an understandable, reproducible analysis pipeline that a student can build, validate and then offer to teams that cannot afford a data department.
What you build
- Ingestion: load one competition's open event data into a schema where each action has a type, start and end location, player, team, time and result.
- Action value model: for each action, estimate the probability of scoring and of conceding within the next few actions, before and after. The difference is the action's value.
- Player metrics: sum values per player, normalised per 90 minutes, split by action type (passes, carries, dribbles, defensive actions).
- Visuals: pitch maps of where a player adds value, pass networks and replayable possession chains.
- Scouting report: a one-page summary per player, generated automatically.
The technically interesting part
The validation that separates real analytics from numbers is stability. A metric computed on the first half of a season should correlate with the same metric on the second half. If it does not, you are measuring noise, which is the fate of many invented sports statistics. Show your supervisor the split-half correlation for your metric and for traditional counts such as goals and assists. The second challenge is volume: a player with more minutes accumulates more of anything, so normalise per 90 minutes or per possession, set a minimum minutes threshold, and say which you chose and why.
How to evaluate it
- Model quality: calibration and Brier score for the scoring and conceding probabilities on held-out matches.
- Stability: split-half correlation of the per-90 metric against traditional statistics, for players above a minutes threshold.
- Face validity: show 3 coaches or experienced analysts anonymised top-10 lists and ask whether the rankings make football sense; record disagreements.
- Usefulness: time for a coach to answer "who progresses the ball best in our team" with and without the tool.
Suggested plan
- Weeks 1 to 3: choose competition, ingestion, schema, exploratory visuals.
- Weeks 4 to 7: features and the scoring and conceding models.
- Weeks 8 to 10: player metrics, stability test, comparison with counts.
- Weeks 11 to 13: Streamlit app, pitch maps, scouting report.
- Weeks 14 to 15: coach feedback and write-up.
Path to a product
The realistic first customer is a university team, a football academy or a local club that records its own matches. Tagging events from video is a service in itself; the analysis layer you build here is what makes the tagged data useful. Charge per match report or a season subscription. Cricket is a strong second market in South Asia, and the same action-value idea applies to ball-by-ball data. Check data licences before any commercial use; open event data usually requires attribution and is intended for research.
Scope warning
One sport, one competition, one season. Do not build video tagging, player tracking from video or a betting model. Keep the app focused on explanation and scouting, not prediction of results.
Learn what you need on Sefism
- Machine learning roadmap : classification, calibration and validation for the value model.
- Data analytics roadmap : cleaning, aggregation and visualisation.
- Machine learning cheat sheet : metrics such as Brier score and log loss.
- From Data to Viz : choosing the right chart for each question.
- DuckDB Documentation : fast local queries over event tables.
Get help with this idea
This project stands or falls on its validation. Tauseef can help you define the model, plan the stability test and shape a demo that coaches and examiners understand. If you are new here, create a free account first.
Ideas and guidance, not finished projects
These are project ideas and scoping guidance, published free for students to use as a starting point. I do not build, write, or sell final-year projects, and I do not complete coursework for anyone. Take an idea, make it yours, and build it.
Not sure this one fits you?
I help students pick an idea that matches their skills and their deadline, then scope it down until it is finishable. Guidance only, never done for you.
Stuck on something specific?
Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.
Follow along
New writing, resources and project ideas land here first.