https://github.com/michellepellon/nfl-data-stack
NFL game predictions using ELO ratings, DuckDB, dbt, and Monte Carlo simulations. Achieves 85% feature parity with FiveThirtyEight. Full data pipeline running <10s on a laptop.
https://github.com/michellepellon/nfl-data-stack
analytics data-engineering dbt duckdb elo-rating forecasting monte-carlo-simulation nfl parquet predictive-modeling sports-analytics sql stats statsmodels
Last synced: 4 days ago
JSON representation
NFL game predictions using ELO ratings, DuckDB, dbt, and Monte Carlo simulations. Achieves 85% feature parity with FiveThirtyEight. Full data pipeline running <10s on a laptop.
- Host: GitHub
- URL: https://github.com/michellepellon/nfl-data-stack
- Owner: michellepellon
- Created: 2025-11-09T06:33:33.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-12-04T01:03:54.000Z (7 months ago)
- Last Synced: 2025-12-07T07:07:58.642Z (7 months ago)
- Topics: analytics, data-engineering, dbt, duckdb, elo-rating, forecasting, monte-carlo-simulation, nfl, parquet, predictive-modeling, sports-analytics, sql, stats, statsmodels
- Language: Python
- Homepage:
- Size: 17.6 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# NFL Data Stack
A modern, single-node analytics stack for NFL game predictions using ELO
ratings, Monte Carlo simulations, and statistical validation.
[](https://www.python.org/downloads/)
[](https://www.getdbt.com/)
[](https://duckdb.org/)
## Overview
This project implements a complete analytics pipeline for NFL game predictions,
combining:
- **ELO Rating System** with margin-of-victory adjustments
- **Monte Carlo Simulations** (10,000 iterations) for probability estimation
- **Statistical Validation** including calibration analysis and confidence intervals
- **Modern Data Stack** using [DuckDB][duckdb], [dbt], [Parquet][parquet], and [Rill][rill]
- **Interactive Webpage** with Tufte-inspired design for exploring predictions
## Quick Start
View the predictions webpage:
```bash
# Start the web server
just web
# Or manually:
python3 serve.py
```
Then open http://localhost:8080 in your browser.
Update predictions for a new week:
```bash
# Update for Week 11
just update-web week=11
# Or manually:
python update_webpage.py --week 11
```
## License
MIT License - See LICENSE file for details
---
[duckdb]: https://duckdb.org/
[dbt]: https://www.getdbt.com/
[parquet]: https://parquet.apache.org/
[rill]: https://www.rilldata.com/