Volatility skewness is a similar measure to omega but using the second partial moment. It's the ratio of the upside variance compared to the downside variance. Variability skewness is the ratio of the upside risk compared to the downside risk.

VolatilitySkewness(R, MAR = 0, stat = c("volatility", "variability"), ...)

Arguments

R

an xts, vector, matrix, data frame, timeSeries or zoo object of asset returns

MAR

Minimum Acceptable Return, in the same periodicity as your returns

stat

one of "volatility", "variability" indicating whether to return the volatility skewness or the variability skweness

...

any other passthru parameters

Details

$$ VolatilitySkewness(R , MAR) = \frac{\sigma_U^2}{\sigma_D^2}$$

$$ VariabilitySkewness(R , MAR) = \frac{\sigma_U}{\sigma_D}$$

where \(\sigma_U\) is the Upside risk and \(\sigma_D\) is the Downside Risk

References

Carl Bacon, Practical portfolio performance measurement and attribution, second edition 2008 p.97-98

Author

Matthieu Lestel

Examples


data(portfolio_bacon)
MAR = 0.005
print(VolatilitySkewness(portfolio_bacon[,1], MAR, stat="volatility")) #expected 1.32
#>          [,1]
#> [1,] 1.323046
print(VolatilitySkewness(portfolio_bacon[,1], MAR, stat="variability")) #expected 1.15
#>          [,1]
#> [1,] 1.150238

MAR = 0
data(managers)
# print(VolatilitySkewness(managers['1996'], MAR, stat="volatility"))
print(VolatilitySkewness(managers['1996',1], MAR, stat="volatility"))
#>          [,1]
#> [1,] 6.149423