PIPPEN
Player Impact from Pooled Priors and Estimated Noise.
Reliability-adjusted NBA player impact estimates, with calibrated uncertainty.
Status: pre-release. The data layer and the metric are under active construction. Nothing here is stable yet, and no results have been published.
What this is
Public NBA impact metrics disagree with each other, and none of them tells you how much to trust any single number. This project treats the existing metrics as noisy measurements of one quantity that nobody observes directly: a player's true contribution to point differential.
That reframing turns player evaluation into a measurement-error problem, which statistics has known how to solve for a century. The pipeline:
- Compute RAPM (Regularized Adjusted Plus-Minus) from possession-level play-by-play, so the project owns its own ground truth rather than borrowing a paywalled one.
- Measure how reliable each input metric actually is, by splitting each player's season into odd and even games and correlating the halves.
- Fuse the metrics by inverse-variance weighting, so noisier measurements count for less.
- Report the result as a value and an interval, because a rookie with 200 minutes and a starter with 2,400 minutes should not be quoted with the same confidence.
Scottie Pippen is the point of the name. He is the canonical player whose box score understated what he did, and whose value showed up in what happened to the team when he played. That gap is the thing this project measures.
What this is not
- Not a betting tool. No odds, no spreads, no bankroll advice.
- Not a replacement for DARKO or EPM. Those are excellent and this project measures itself against them rather than claiming to beat them.
- Not a redistribution of anyone's paid data. See Data and licensing.
- Not validated yet. The headline claim below is a hypothesis under test, not a result.
The claim under test
Does PIPPEN predict next-season team net rating better than any single input metric does, out of sample?
If the answer is no, the fusion added nothing, and this README will say so. Stating a falsifiable claim before running the experiment is the point.
Installation
pip install pippen
Development install, using uv:
git clone https://github.com/AlphaNerdFx/pippen
cd pippen
uv sync --extra dev
uv run pippen --help
Optional extras: sources (data downloaders), fit (model fitting), api,
dashboard, docs.
Quickstart
pippen paths # where data will be cached
pippen fetch --seasons 2015-2024 # download play-by-play and box scores
pippen rapm --seasons 2015-2024 --window 3
pippen train
pippen evaluate # runs the claim under test
Data and licensing
The code is Apache-2.0. Published data artifacts are CC BY 4.0.
The rule this project follows without exception:
If a value was not computed from a source that permits redistribution, it does not go into a release.
| Input | Source | Position |
|---|---|---|
| RAPM (own) | Computed from possession data | Ours. Published. |
| Four Factors, Net Rating, box-score rates | hoopR-nba-data, CC BY 4.0 | Published, with attribution. |
| Tracking features | nba_api |
Derived features only. Raw responses are never redistributed. |
| BPM, VORP, Win Shares | Basketball-Reference | Local validation only. Never in a release artifact. |
| EPM, DARKO | Dunks & Threes, darko.app | Not used. Paywalled or unlicensed. Compared by rank correlation only. |
NBA data carries usage restrictions. This project is for personal and research use. Commercial use of the underlying league data requires licensing from the rights holders, which this project does not grant and cannot grant.
Attribution
Bulk historical play-by-play comes from hoopR-nba-data by the SportsDataverse authors, used under CC BY 4.0. Possession and lineup reconstruction uses pbpstats by Darryl Blackport, MIT licensed.
Documentation
Full documentation, including the method write-up and its limitations, lives at https://alphanerdfx.github.io/pippen/.
- Method — how reliability is measured and how fusion works
- Architecture — pipeline stages and data layout
- Research notes — the background survey this project grew from
Contributing
Contributions are welcome. Start with CONTRIBUTING.md, and note that this project ships a Code of Conduct.
License
Apache License 2.0. See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pippen-0.0.0.tar.gz.
File metadata
- Download URL: pippen-0.0.0.tar.gz
- Upload date:
- Size: 576.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56847328458e3efe29c66e4a80b1404e26b5b457281cc834e9d4d23d14401bad
|
|
| MD5 |
5d50d0ec6cdf856f7648abb820b0e910
|
|
| BLAKE2b-256 |
421901f918cfb3dbeedcd1b98ca613986b1753f454db6e910e9121e1b24afbf4
|
File details
Details for the file pippen-0.0.0-py3-none-any.whl.
File metadata
- Download URL: pippen-0.0.0-py3-none-any.whl
- Upload date:
- Size: 14.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89607836e04b9969efa5c45d68a8e2978677f41c99e231840c91d5443b4c2757
|
|
| MD5 |
1cc01cbd5798f18ee4864ab14115d552
|
|
| BLAKE2b-256 |
f202edbe0e2e9833c43281de809d2c28f91be2a6f5964bb9b7429b00d43057e2
|