Population Stability Index Calculator
Measure how far a model score or feature has drifted from its baseline. Paste two samples or upload a CSV to get the PSI, the contribution of every bin, and a read against the standard 0.1 and 0.25 thresholds.
Training, development, or last-approved sample.
Recent production or out-of-time sample.
Keep this fixed across monitoring runs so values stay comparable.
Edges are always derived from the baseline sample.
How the population stability index is calculated
PSI compares two versions of the same population — a baseline and a current sample — by measuring how much probability mass moved between bins.
The sum runs over the bins. Because both factors change sign together when the two populations are swapped, the index is symmetric: it does not matter which sample you call expected.
| PSI | Reading | Typical action |
|---|---|---|
| < 0.1 | No significant shift | Continue monitoring |
| 0.1 – 0.25 | Moderate shift | Investigate the driving bins |
| ≥ 0.25 | Significant shift | Recalibrate or redevelop |
These cut-offs are industry convention, not a statistical test. A high-stakes scorecard is often held to a tighter bar, and a large sample can push PSI above 0.1 on a shift that carries no economic meaning.
A single large contribution usually means the population moved at one end of the score range — often a new acquisition channel or a policy cut-off change rather than genuine model decay.
Contributions spread evenly across the bins point to a broad shift in the underlying population, which is the case that more often calls for recalibration.
When the score PSI moves, the usual next step is to run the same calculation on each model input. Applied to a feature rather than the score, the identical formula is called the characteristic stability index.
Take the calculation back to your notebook
A one-off PSI check answers today's question. Monitoring a scorecard means rerunning it every month against a moving baseline, on data that never leaves your environment. Copy the Python above into your own notebook, or let an agent with a live Jupyter kernel keep the monitoring run reproducible across cycles.
FAQ
Common questions about PSI, binning, and how to read the result.