Skip to content
← Back to work

NBA Quant

A research system for estimating NBA win probabilities, removing market vig, ranking model-market gaps, and evaluating calibration over time.

  • Five-stage research pipeline
  • Time-aware evaluation
  • Explicit EV and arbitrage separation

Overview

NBA Quant treats sports markets as a probability and model-evaluation problem, with responsible terminology and a strict separation between probabilistic edge and mathematical arbitrage.

Research question

The project asks how market-implied probabilities compare with calibrated model probabilities, where meaningful gaps appear, and whether those signals remain calibrated when resolved against real outcomes.

System design

The architecture separates ingestion, no-vig market consensus, leakage-free feature generation, model training, signal generation, and backtesting into one-way data layers with PostgreSQL as the shared record.

Responsible framing

The interface distinguishes positive expected value signals from true cross-book arbitrage and avoids presenting model output as a profit guarantee.

Outcomes

  • Implemented additive, power, and Shin vig-removal methods.
  • Built time-aware model evaluation and probability calibration.
  • Added signal resolution, theoretical P&L, and closing-line-value tracking.

How this was built

The pipeline is split into one-way data layers so each stage can be tested and replaced on its own, with PostgreSQL as the shared record between them.

Stack
Python, PostgreSQL, Streamlit
Repository
59 Python files, roughly 7,000 lines
Pipeline
Eight modules: ingestion, market, features, models, signals, backtesting, data access, dashboard
Tests
Nine modules covering vig removal, consensus, expected value, arbitrage, and signal generation

See the rest of the work

All projects