Learn R Programming

PerformanceAnalytics (version 0.9.5)

DownsideDeviation: function for downside risk of the return distribution

Description

Downside deviation is an alternative measure of dounside risk.

Usage

DownsideDeviation(Ra, MAR = 0)

Arguments

Ra
a vector, matrix, data frame, timeSeries or zoo object of asset returns
MAR
Minimum Acceptable Return, in the same periodicity as your returns

Value

    Details

    Downside deviation, similar to semi deviation, eliminates positive returns when calculating risk. Instead of using the mean return or zero, it uses the Minimum Acceptable Return as proposed by Sharpe (which may be the mean historical return or zero).

    To calculate it, we take the subset of returns that are less than the target (or Minimum Acceptable Returns (MAR)) returns and take the differences of those to the target. We sum the squares and divide by the total number of returns to get a below-target semi-variance.

    $$DownsideDeviation(R , MAR)= \delta_{MAR} = \sqrt{ \frac{\sum^{n}_{t=1}(R_{t} - MAR)^{2}}{n} }$$

    This is also useful for calculating semi-deviation or semivariance by setting

    MAR = mean(x)

    Sortino recommends calculating downside deviation utilizing a continuous fitted distribution rather than the discrete distribution of observations. This would have significant utility, especially in cases of a small number of observations. He recommends using a lognormal distribution, or a fitted distribution based on a relevant style index, to construct the returns below the MAR to increase the confidence in the final result. Hopefully, in the future, we'll add a fitted option to this function, and would be happy to accept a contribution of this nature.

    References

    Sortino, F. and Price, L. Performance Measurement in a Downside Risk Framework. Journal of Investing. Fall 1994, 59-65. Plantinga, A., van der Meer, R. and Sortino, F. The Impact of Downside Risk on Risk-Adjusted Performance of Mutual Funds in the Euronext Markets. July 19, 2001. Available at SSRN: http://ssrn.com/abstract=277352 http://www.sortino.com/htm/performance.htm see especially end note 10

    Examples

    Run this code
    data(edhec)
    head(edhec[,6,drop=FALSE])
    sd(edhec[,6])
    DownsideDeviation(edhec[,6])  # MAR 0\%
    DownsideDeviation(edhec[,6], MAR = .04/12) #MAR 4\%
    DownsideDeviation(edhec[,6], MAR = mean(edhec[,6])) #MAR = mean return, calculate semivariance

    Run the code above in your browser using DataLab