Applied data science · Birmingham, UK
Models that earn their claims.
Forecasting, causal ML, and models that earn their claims. Every metric on this site sits next to the thing it aims to beat, and the failures are on the page too.
CxG diagnostic AUC, vs StatsBomb’s own xG at 0.820
raw StatsBomb events behind the football models
Manor Park quarterly forecast accuracy vs the previous approach
E.ON forward price-curve improvement, far seasons
Featured work
Five projects, one habit: benchmark against the incumbent.
Playground
Four demos a reviewer can poke at.
The rigour manifesto
Four habits, applied the same way across three domains.
Benchmark against the incumbent
CxG is reported next to StatsBomb’s own xG on the same shots, not in isolation. A metric with nothing to beat does not lead a headline.
Report negative results
The betting-market model does not beat the market, most configurations are unprofitable, and the site says so. The honest negative result is the asset, not the edge.
Test for leakage, then enforce it
Defensive Actions Expected archived its own compromised v0-v9 results rather than presenting them, and now runs an enforced leakage guard checked in CI.
Calibrate and validate out of sample
Brier scores and log loss sit alongside AUC. Held-out and cross-validated results are reported separately from training numbers, and walk-forward splits protect the time-series work.
Stack
Only what is imported and executed.
Modelling
- Python
- scikit-learn
- LightGBM
- X-learner (causal uplift)
- GLM / logistic regression / Ridge
- GradientBoostingClassifier
- PyTorch (GNN, GRU)
- SHAP
- XGBoost
- Isotonic calibration
- Monte Carlo simulation
- Time-series forecasting
Engineering & data
- SQL
- DuckDB
- PostgreSQL
- SQLAlchemy
- Snowflake
- FastAPI
- Docker
- Azure Data Factory
- Azure Databricks
- Power BI
MLOps & delivery
- Azure ML Studio
- Azure DevOps CI/CD
- MLflow
- Prefect
- GitHub Actions
- Drift / PSI monitoring
- Leakage guards
- Walk-forward cross-validation
Experience
Where the numbers come from.
Jan 2026 – Present
Independent research · Portfolio · football analytics focus
Full-time, deliberate investment in this portfolio and an active search for the next role, after the E.ON fixed-term contract ran its course in December 2025.
- Opponent-adjusted football metrics benchmarked against StatsBomb xG
- Retail uplift modelling and the model scorecard behind this site
Jan 2025 – Dec 2025
Market Analyst · E.ON Energy Markets
Rebuilt hourly power forecasting around a residual-load framework, ran it in production with drift monitoring, and led the stakeholder-facing shape meetings that used it.
- Residual-load framework: forward price curve +15% far seasons, +9.7% near seasons vs the previous methodology
- Christmas-period demand RMSE reduced ~18% (~0.35 GWh/h) after diagnosing holiday-specific error
- Built and ran the model in Azure ML Studio with Azure DevOps CI/CD and production drift detection
- Built Power Curve Viewer and Shape Viewer in Power BI; led fortnightly Gas and Power Shape meetings
Jul 2024 – Dec 2024
Costing and Risk Intern · E.ON Energy Markets
Built a half-hourly network-charge forecasting engine and a Monte Carlo risk model, and migrated legacy spreadsheet processes into governed Python and SQL.
- ~23% improvement in network-charge forecast accuracy vs the previous internal approach
- 10,000-run Monte Carlo producing P5/P50/P95 cost outcomes
- Migrated Access/spreadsheet processes into Python, SQL and Snowflake; saved ~6 to 7 hours per reporting cycle
Jun 2024 – Aug 2024
Business Analytics Consultant · University of Birmingham Sport & Fitness
MSc capstone: benchmarked four forecasting methods on out-of-sample MAE across six activity categories, then applied ABC/Pareto prioritisation to booking and revenue data.
- Benchmarked SARIMA, Prophet, Holt-Winters and Random Forest; a tuned Random Forest roughly halved error on the hardest categories
- Cardio MAE 23.8 to 11.2, Holistic MAE 26.5 to 13.4, Toning MAE 14.3 to 10.3
- ABC/Pareto prioritisation: three member groups drove ~80% of revenue (~£5.68m); a ~5% class tail flagged for review
Jan 2024 – Jun 2024
Data Scientist · Manor Park Trading Company
Multi-horizon demand forecasting across ~7,000 SKUs and four sales channels, paired with customer and product segmentation for campaign targeting.
- Demand forecast accuracy +28% weekly, +19% monthly, +37% quarterly
- Seven-cluster customer and product segmentation for targeted campaigns
- Campaign analysis associated with ~7% ROAS improvement and ~£78k incremental revenue (no holdout test; not a causal claim)
- Reporting automation cut per-draft production time ~50%
Jul 2021 – Aug 2023
Systems Engineer · Infosys · John Deere account
Two years of production ETL/ELT engineering on high-volume operational data.
- Production pipelines in Python, SQL, Azure Data Factory and Azure Databricks
- Complex SQL transformations and automated data-quality checks
- Cloud-migration and legacy-modernisation initiatives
Education
MSc Business Analytics, University of Birmingham (2023–2024)
B.Tech Polymer Science & Chemical Technology, Delhi Technological University (2016–2020)