The PSI formula
PSI = Σ (Aᵢ − Eᵢ) × ln(Aᵢ ÷ Eᵢ)
Eᵢ is the expected share of bin i, from the baseline (often the model's development or training sample), and Aᵢ the actual share in the current sample. Both are shares of their own sample, so each column adds up to 100%.
Every term is zero or positive: if the current share is higher, both the difference and the log are positive, if it is lower, both are negative. So PSI is 0 for identical distributions and grows with every shift, whichever way it goes. Mathematically it is a symmetric version of the Kullback–Leibler divergence: the KL divergence of A from E plus that of E from A.
Step 1: bins and shares
Cut the baseline into bins, usually ten deciles of the baseline scores, so that every baseline bin holds about 10%. Then count the current sample in the same bins, with the same cut-off values. In Excel, COUNTIFS(scores,">"&lower,scores,"<="&upper) counts one bin, and FREQUENCY counts all bins at once.
The two samples differ in size, 10,000 against 2,500, so compare shares, not counts: =B2/B$12 for the baseline and =C2/C$12 for the current sample.
Step 2: the PSI term per bin and the total
Each bin's term is =(E2-D2)*LN(E2/D2), copied down. The PSI is the sum of the terms, =SUM(F2:F11) = 0.153. You can also do it in one cell from the counts: =SUMPRODUCT((C2:C11/C12-B2:B11/B12)*LN((C2:C11/C12)/(B2:B11/B12))).
The terms show where the shift is. Decile 1 fell from 10.0% of applications to 4.4% and contributes 0.0465, 30% of the whole PSI. Decile 10 rose from 10.0% to 17.0% and adds 0.0371. Applications have moved from the bottom deciles to the top ones, while the middle hardly changed.
Worked example: PSI of a credit model's score deciles
The counts per score decile are inputs (yellow), the deciles are cut on the baseline scores. Columns D and E turn the counts into shares, column F holds the PSI term of each decile and F12 the PSI. Rows 15 to 20 classify the result and find the decile that drives it.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Score decile | Baseline n | Current n | Baseline % | Current % | PSI term |
| 2 | 1 | 1,004 | 110 | 10.0% | 4.4% | 0.0465 |
| 3 | 2 | 998 | 140 | 10.0% | 5.6% | 0.0253 |
| 4 | 3 | 1,001 | 170 | 10.0% | 6.8% | 0.0124 |
| 5 | 4 | 1,003 | 200 | 10.0% | 8.0% | 0.0046 |
| 6 | 5 | 996 | 230 | 10.0% | 9.2% | 0.0006 |
| 7 | 6 | 1,000 | 255 | 10.0% | 10.2% | 0.0000 |
| 8 | 7 | 1,002 | 285 | 10.0% | 11.4% | 0.0018 |
| 9 | 8 | 997 | 320 | 10.0% | 12.8% | 0.0071 |
| 10 | 9 | 999 | 365 | 10.0% | 14.6% | 0.0175 |
| 11 | 10 | 1,000 | 425 | 10.0% | 17.0% | 0.0371 |
| 12 | Total / PSI | 10,000 | 2,500 | 100% | 100% | 0.153 |
| 13 | ||||||
| 14 | Reading the PSI | Value | ||||
| 15 | Watch from (PSI ≥) | 0.10 | ||||
| 16 | Act from (PSI ≥) | 0.25 | ||||
| 17 | Status | Moderate shift | ||||
| 18 | PSI in one formula | 0.153 | ||||
| 19 | Decile with the largest term | 1 | ||||
| 20 | Share of PSI from that decile | 30% |
- E2
=C2/C$12Current share - F2
=(E2-D2)*LN(E2/D2)PSI term of the bin - F12
=SUM(F2:F11)PSI - B17
=IF(F12>=B16,"Major shift",IF(F12>=B15,"Moderate shift","Stable"))Rule of thumb - B19
=INDEX(A2:A11,MATCH(MAX(F2:F11),F2:F11,0))Largest contributor
Synthetic data for a fictional lender. The 0.1 and 0.25 limits are industry conventions, not a statistical test. Educational only, not financial or model-risk advice.
Reading the PSI: 0.1 and 0.25
The common rule of thumb from credit scoring is: below 0.1 no significant change, 0.1 to 0.25 a moderate shift worth investigating, 0.25 or more a major shift that needs action. With thresholds in cells, one formula labels the result: =IF(F12>=B16,"Major shift",IF(F12>=B15,"Moderate shift","Stable")).
These limits are conventions, not a statistical test. The PSI also depends on the number of bins and on sample size: small samples produce noisy shares and a higher PSI by chance alone. Keep the thresholds in cells where the team can change them, and watch the trend over several periods rather than one value.
Empty bins and other practical details
- A bin with 0% in either sample makes
LNfail (the ratio is 0 or a division by zero). Replace the zero share with a tiny value such as 0.0001, or merge the bin with its neighbour. - Fix the bin edges on the baseline and keep them. Recomputing deciles on the current data puts 10% in every bin and hides the shift.
- Categorical features such as an application channel use their categories as bins.
- Missing values deserve their own bin. A sudden jump in missing values is often a broken data feed, not a changing population.
PSI on features, on scores and next to other tests
Run the PSI on the model's score and on every input feature, where it is sometimes called the characteristic stability index. A shift in the score tells you that something moved, the feature PSIs tell you where. For categorical data, a chi-square test adds a p-value, and for continuous data the Kolmogorov–Smirnov statistic measures the largest gap between the two cumulative distributions.
A drift alarm does not prove that the model got worse. Once outcomes arrive, check performance directly, for example with a confusion matrix, precision and recall.
Common mistakes
- Flipping the log ratio.
LN(baseline ÷ current)makes every term negative. Use current ÷ baseline, matching the order of the difference. - Using counts instead of shares. With samples of different size, counts always differ. Divide each count by its own sample total.
- Recomputing bins on the current data. New deciles put 10% in every bin and the PSI drops to about zero. Keep the baseline edges.
- Ignoring empty bins. A 0% share breaks LN. Smooth it with a tiny value or merge bins.
- Averaging the terms. The PSI is the sum over all bins, not the mean.
- Treating 0.1 and 0.25 as a significance test. They are rules of thumb. Small samples can cross them by chance.
Frequently asked questions
What is a good PSI value?
Below 0.1 is usually read as stable, 0.1 to 0.25 as a moderate shift to investigate and 0.25 or more as a major shift. These are industry conventions, not statistical limits.
How do you calculate PSI in Excel?
Put the baseline and current shares of each bin in two columns, calculate =(current-baseline)*LN(current/baseline) for each bin and add up the results. SUMPRODUCT can do it in one cell.
What is the difference between PSI and KL divergence?
The KL divergence measures how one distribution differs from another in one direction. The PSI adds the KL divergence in both directions, so it is symmetric: swapping baseline and current gives the same value.
How many bins should the PSI use?
Ten bins cut at the deciles of the baseline are the most common choice, and twenty are also used. More bins detect finer shifts but need larger samples. Use the same number and the same edges every period.