Skip to content
varun.rout

Jump to

Search pages, projects and repos

Playground

Demos a reviewer can poke at.

These read from committed project outputs and a Supabase-backed sample of real shots. No demo here renders an invented number: every value traces to a committed result or a real model output. Each one sits on its project page, next to the write-up that explains it.

xG shot-map explorer

Real shots on an attacking-half pitch. Toggle between my CxG and StatsBomb’s own xG, or a diff mode so over- and under-valued shots pop. Filter by team, match or pressure and the panel recomputes mean value and Brier calibration live.

440 real shots, benchmarked against the incumbent

Open the demo →

Contextual lift and validity

CxG, CxA and CxT each set against the baseline they have to beat, over identical held-out rows with a 2,000-sample paired bootstrap. Confidence intervals decide what may be claimed, and one of the three does not clear its benchmark.

Includes a committed negative result on the flagship metric

Open the demo →

Uplift decile explorer

The Qini curve and per-decile uplift from the retail X-learner. Slide to target the top K% of customers and watch the captured incremental response recompute against random targeting.

Causal ML, rare in a junior portfolio

Open the demo →

Forecast error visualiser

Before and after accuracy across three roles. E.ON and Manor Park are professional results; UoB is the MSc capstone. Aggregate deltas only, with no invented time series.

Measured deltas, honestly bounded

Open the demo →

Climate backtest & gate explorer

A rolling-origin backtest reproduction, the published 76.3%-vs-90% coverage shortfall, and the pre-registered statistical gate an energy feature had to clear before it reached production.

A real Azure deployment that publishes its own coverage miss

Open the demo →

Alert-budget & honesty explorer

The two disclosed alert-budget operating points, the baselines a champion model has to beat, and the three pre-registered audits that overturned favourable-looking results along the way.

Leads on rigour, never on a performance number

Open the demo →

Model scorecard

Every model across the portfolio, one card each. Filter by domain. The benchmark is the point: each card sits its value beside the incumbent, and a metric with nothing to beat is greyed.

Opponent-Adjusted Football Metrics

Live

CxG diagnostic (sklearn logistic/Ridge/GBM)

Contextual expected goals

0.809ROC AUC
This model0.809
StatsBomb xG0.820

Behind the benchmark.

Open332 tests

Opponent-Adjusted Football Metrics

Live

CxG diagnostic

Calibration

0.073Brier

No incumbent to beat

Open

Opponent-Adjusted Football Metrics

Live

CxA baseline

Contextual expected assists

0.858ROC AUC

No incumbent to beat

Open

Opponent-Adjusted Football Metrics

Live

CxA diagnostic v1 (sklearn GradientBoostingClassifier, sigmoid-calibrated)

Contextual expected assists

0.866ROC AUC
This model0.866
Own CxA baseline0.858

Ahead of the benchmark.

Open

Opponent-Adjusted Football Metrics

Live

CxA diagnostic v1

Precision among the model’s most confident actions

58.6%Precision @ top 1%
This model58.6%
Own CxA baseline46.3%

Ahead of the benchmark.

Open

Contextual Football Metrics

Live

Contextual GLM

Contextual expected goals

0.813ROC AUC (heldout)
This model0.813
Logistic baseline0.798

Ahead of the benchmark.

Open560 tests

Contextual Football Metrics

Live

Contextual GLM

Cross-validation

0.8085-fold CV AUC

No incumbent to beat

Open

Frame2Threat

Live

XGBoost + GRU ensemble

Possession-danger prediction

0.965ROC AUC (test)

No incumbent to beat

Open69 tests

Frame2Threat

Live

PossessionGRU

Possession-danger prediction

0.952ROC AUC

No incumbent to beat

Open

Frame2Threat

Live

XGBoost (event+360)

Pass-level line-breaking

0.882ROC AUC

No incumbent to beat

Open

Retail Growth Intelligence

Live

Two-stage X-learner (LightGBM stage 2)

Uplift / campaign targeting

0.044Overall ATE

No incumbent to beat

Synthetic7 tests

Retail Growth Intelligence

Live

Two-stage X-learner

Uplift / campaign targeting

0.075Top-decile uplift
This model0.075
Overall ATE0.044

Ahead of the benchmark.

Synthetic

Retail Growth Intelligence

Live

Two-stage X-learner

Uplift ranking quality

0.406Spearman rank corr.

No incumbent to beat

Synthetic

Retail Growth Intelligence

Live

Churn classifier

Churn classification

0.844ROC AUC
This model0.844
LightGBM0.812

Ahead of the benchmark.

Synthetic

HealthBeauty360 Retail Analytics

Live

Churn classifier

Churn classification

0.730ROC AUC
This model0.730
Recency rule0.720

Ahead of the benchmark.

Synthetic

Multi-Horizon Demand Forecasting

Professional

Demand forecaster

Quarterly SKU demand (~7,000 SKUs)

37%Accuracy improvement %

vs Previous approach

Real

Residual-Load Forecasting

Professional

Residual-load framework

Forward price-curve accuracy (far seasons)

15%Improvement %

vs Previous methodology

Real

Residual-Load Forecasting

Professional

Residual-load framework

Christmas-period demand RMSE

18%RMSE reduction %

vs Pre-fix

Real

Network-Charge Forecasting

Professional

DUoS/TNUoS forecasting engine

Network-charge forecast accuracy

23%Improvement %

vs Prior internal approach

Real

Attendance Forecasting

Professional

GridSearchCV Random Forest

Cardio attendance forecast (out-of-sample)

11.2MAE
This model11.2
Pre-tuning MAE23.8

Ahead of the benchmark (lower is better).

Real

Attendance Forecasting

Professional

GridSearchCV Random Forest

Holistic attendance forecast (out-of-sample)

13.4MAE
This model13.4
Pre-tuning MAE26.5

Ahead of the benchmark (lower is better).

Real

Every value traces to a committed result. A card with no incumbent is greyed: a metric with nothing to beat is not a win. MAE is lower-better and reported as a count, not a percentage.

Data provenance. Hand-typed from committed results (content/metrics.ts). Football and retail are open or synthetic data; energy and consulting are professional results.