Analysis Platform & Projects

The analytics stack

A working data infrastructure built on real competition data - automated ingestion pipelines, live dashboards, and applied analysis across international and club water polo.

InfrastructureActive

Data Pipeline

Automated ingestion pipeline covering Champions League, World Championships, Olympics, European Championships, and World Cup. Orchestrated with Prefect; outputs clean, structured match-event databases.

PythonPrefectSQLAlchemyPostgreSQL
DashboardActive

Match Stats Dashboard

Live data entry and post-match statistics dashboard. Includes an xG (expected goals) model trained on shot location and match state data. Deployed on Render.

PythonStreamlitFastAPIXGBoost
DashboardActive

Academy Development Dashboard

Tracks academy athlete development over time — strain levels, fitness testing, and performance data. Player profiles with longitudinal views across training blocks.

PythonStreamlitFastAPIReact
ModelComplete

xG Model

Expected goals model for water polo shots. Trained on shot location, game state, and situational context. Integrated into the match stats dashboard as a live prediction tool.

PythonXGBoostscikit-learnPlotly
ModelComplete

Markov Chain Possession Model

Models water polo possessions as a Markov process. Generates transition matrices across possession states and calculates expected goals per possession by game state.

PythonDashNetworkXscipy
AnalysisComplete

Europeans 2026 Heatmaps

Shot and position heatmaps for the 2026 European Championships using kernel density estimation. Interactive pool visualisation with team and player filters.

PythonDashPlotlyKDE
AnalysisComplete

Timeout Effectiveness

Statistical analysis of timeout calls across multiple competitions. Measures scoring rate, possession efficiency, and goal concession in defined windows before and after each timeout.

PythonStreamlitpandasscipy
AnalysisComplete

Penalty Analysis

Analysis of penalty shoot-out data from the Water Polo World Championships. Shot placement, goalkeeper movement, and conversion rates by situation.

PythonpandasPlotly
AnalysisComplete

Double Exclusion Analysis

Explores outcomes of double exclusion (4v4) situations. Network graphs of possession patterns and scoring rates in man-down and equal-strength transitions.

PythonDashNetworkXStreamlit
AnalysisComplete

Player Partnerships

Assist network analysis across multiple leagues and competitions. Identifies key passing partnerships and over- or under-used connections within team structures.

PythonStreamlitNetworkXPlotly
AnalysisComplete

Shot Distribution

Shot location and outcome analysis mapped to pool zones. Compares shooting profiles between teams, competitions, and periods to identify tactical tendencies.

PythonpandasMatplotlib
AnalysisIn Progress

Player Efficiency Rating

Composite player efficiency metric derived from involvement rates, shot contributions, exclusions drawn, and defensive actions across a season or competition dataset.

Pythonpandas

Source code for most projects available on request. Get in touch.