Model monitoringBrowser-sideDeciles by default

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.

Open the calculator
Your file is parsed in the browser. Scores are never uploaded.
Inputs
Use raw scores when you have the underlying samples, or enter a distribution that is already binned.
0 values

Training, development, or last-approved sample.

0 values

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.

Result
Recomputed as you type, entirely in this tab.
Paste a baseline and a current sample, or load the sample file, to see the index.

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.

Formula
PSI = Σ (actual% − expected%) × ln(actual% ÷ expected%)

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.

1. Bin the baseline
Cut the expected sample into bins, normally ten equal-frequency deciles. The cut points come from the baseline only, so the expected distribution starts near 10% per bin.
2. Apply the same edges
Drop the current sample into those exact bins and convert each bin to a share of its own population. Reusing the baseline edges is what makes the comparison meaningful.
3. Sum the movement
For each bin multiply the share difference by the log of the share ratio, then add the bins together. Every bin contributes a non-negative amount.
Interpretation thresholds
The conventional read used across credit scorecard monitoring.
PSIReadingTypical action
< 0.1No significant shiftContinue monitoring
0.10.25Moderate shiftInvestigate the driving bins
0.25Significant shiftRecalibrate 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.

Reading the bin table

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.

Open Runcell

FAQ

Common questions about PSI, binning, and how to read the result.