← All work

Project 01 / 03 — 2026

NBA Live Win Probability

A live in-game win-probability model whose numbers are calibrated against outcomes — when it says 70%, the home team wins about 70% of the time.

Role
Solo — data, model, evaluation, serving
Stack
PyTorch, scikit-learn, Flask-SocketIO, NBA API, Docker
Year
2026
Links
Reliability diagram comparing predicted win probability to observed win rate

Problem

Broadcast win-probability numbers are everywhere, and almost nobody checks them. A model that’s 95% confident in a blowout is easy; the interesting question is whether a 62% in the third quarter is actually 62%.

Approach

Evaluation

Log loss is compared against naive baselines (always pick the home team, always predict the base rate). A 10-bucket reliability diagram checks calibration, and errors are broken down by period and by score differential, so failures in close fourth-quarter games can’t hide inside a good average.

Serving

A Flask-SocketIO server polls the live NBA feed and pushes updated probabilities to the browser over a WebSocket as each possession resolves.