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