Skip to main content

PIPPEN

Player Impact from Pooled Priors and Estimated Noise.

Reliability-adjusted NBA player impact estimates, with calibrated uncertainty.

CI License Python

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:

  1. 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.
  2. Measure how reliable each input metric actually is, by splitting each player's season into odd and even games and correlating the halves.
  3. Fuse the metrics by inverse-variance weighting, so noisier measurements count for less.
  4. 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

pippen-0.0.0.tar.gz (576.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pippen-0.0.0-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

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

Hashes for pippen-0.0.0.tar.gz
Algorithm Hash digest
SHA256 56847328458e3efe29c66e4a80b1404e26b5b457281cc834e9d4d23d14401bad
MD5 5d50d0ec6cdf856f7648abb820b0e910
BLAKE2b-256 421901f918cfb3dbeedcd1b98ca613986b1753f454db6e910e9121e1b24afbf4

See more details on using hashes here.

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

Hashes for pippen-0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 89607836e04b9969efa5c45d68a8e2978677f41c99e231840c91d5443b4c2757
MD5 1cc01cbd5798f18ee4864ab14115d552
BLAKE2b-256 f202edbe0e2e9833c43281de809d2c28f91be2a6f5964bb9b7429b00d43057e2

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page