A neural-network ensemble that predicts NFL win probabilities from pregame data, with weekly picks, a live track record and a technical brief.
Sports & fitnessGitHub @KrishKalra19OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
https://krishkalra19.github.io/nfl-predictor/ — NFL win-probability ensemble (neural nets + classical), weekly picks and pick grading
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗A neural-network ensemble that predicts NFL win probabilities using only information available before kickoff. It retrains itself weekly, freezes every prediction at kickoff, and publishes picks, a live track record, power rankings and playoff odds to the site. Vegas lines are a benchmark, never an input.
Walk-forward backtest: each season is predicted by models trained only on earlier seasons. All tuning used 2018–21; the 2022–26 games were scored once, after the lineup was locked.
| Held-out 2022–26 (1,218 games) | Accuracy | Log-loss |
|---|---|---|
| Ensemble (this project) | 66.2% | 0.624 |
| MLP neural net | 66.8% | 0.625 |
| Vegas moneyline | 67.4% | 0.610 |
| Elo rating | 63.9% | 0.635 |
| Always pick home team | 55.0% | 0.688 |
Confidence is calibrated: held-out picks made at 75%+ confidence won about 81% of the time.
Every 2026 prediction since launch is also logged, frozen at kickoff, in
docs/data/live_log.csv.
flowchart LR
A[nflverse<br/>play-by-play, rosters,<br/>snaps, injuries] --> B[Features ~250/game<br/>opponent-adjusted EPA,<br/>ridge ratings, Elo, QB,<br/>pregame roster strength]
B --> C[Models<br/>MLP + Siamese nets,<br/>logistic, ridge, GBM]
C --> D[Ensemble<br/>log-odds average]
D --> E[Freeze at kickoff<br/>live log]
E --> F[Site<br/>picks, explanations,<br/>rankings, playoff odds]
tests/test_leakage.py checks this on a synthetic league: features for a week must be identical whether or not later results exist. Those tests caught (and fixed) a subtle leak of whole-dataset league averages into early-season priors; see REPORT.md.tests/test_freeze.py).pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install -r requirements.txt
python src/download_data.py # ~450 MB from nflverse
python src/run_weekly.py # rebuild features, retrain, predict the next week
python src/build_site.py # rebuild docs/ (site, live log, rankings, playoff odds)
pytest # leakage, symmetry and freeze tests
Backtests: python src/evaluate.py --phase dev|test, then python src/export_results.py.
src/)| File | Role |
|---|---|
download_data.py | nflverse schedules, play-by-play, weekly rosters, snap counts, depth charts, injuries, player IDs |
team_games.py | Per-team per-game stats from play-by-play, plus QB game logs |
players.py | Player ratings and pregame roster strength by unit, including missing regulars |
build_features.py | The game-level feature table (form, ratings, Elo, QB, stakes, rest/travel, Vegas benchmark) |
kalman.py | State-space team ratings with uncertainty |
dataset.py, models.py, config.py | Symmetric matchup matrices, the five models, the final lineup |
backtest.py, evaluate.py, export_results.py | Walk-forward evaluation and site result exports |
experiments.py, exp_features.py, exp_calibration.py | Experiment grids and A/B harness |
predict.py, explain.py, run_weekly.py | Weekly predictions, frozen at kickoff, with explanations |
live_log.py, playoffs.py, build_site.py, pick_sheet.py | Live record, playoff simulation, site and pick-sheet builders |
More: REPORT.md (findings), MODEL_CARD.md, LOOP_LOG.md (experiment log).