The pain index is the mean value of the drawdowns over the entire analysis period. The measure is similar to the Ulcer index except that the drawdowns are not squared. Also, it's different than the average drawdown, in that the numerator is the total number of observations rather than the number of drawdowns.
Details
Visually, the pain index is the area of the region that is enclosed by the horizontal line at zero percent and the drawdown line in the Drawdown chart.
$$Pain index = \sum^{n}_{i=1} \frac{\mid D'_i \mid}{n}$$
where \(n\) is the number of observations of the entire series, \(D'_i\) is the drawdown since previous peak in period i
References
Carl Bacon, Practical portfolio performance measurement and attribution, second edition 2008 p.89, Becker, Thomas (2006) Zephyr Associates
Examples
data(portfolio_bacon)
print(PainIndex(portfolio_bacon[, 1])) # expected 0.04
#> portfolio.monthly.return....
#> Pain Index 0.03998969
data(managers)
print(PainIndex(100 * managers["1996"]))
#> HAM1 HAM2 HAM3 HAM4 HAM5 HAM6 EDHEC LS EQ SP500 TR
#> Pain Index 6.229924 0.002 0.2525 1.450239 NaN NaN NaN 218.6989
#> US 10Y TR US 3m TR
#> Pain Index 1.38917 0
print(PainIndex(100 * managers["1996", 1]))
#> HAM1
#> Pain Index 6.229924