Beta Co-Moments {PerformanceAnalytics}R Documentation

Functions to calculate systematic or beta co-moments of return series


calculate higher co-moment betas, or 'systematic' variance, skewness, and kurtosis


BetaCoVariance(Ra, Rb)
BetaCoSkewness(Ra, Rb, test = TRUE)
BetaCoKurtosis(Ra, Rb)


Ra an xts, vector, matrix, data frame, timeSeries or zoo object of asset returns
Rb an xts, vector, matrix, data frame, timeSeries or zoo object of index, benchmark, or secondary asset returns to compare against
test TRUE/FALSE, whether to make sure the return is in the same direction as the skewness


The co-moments, including covariance, coskewness, and cokurtosis, do not allow the marginal impact of an asset on a portfolio to be directly measured. Instead, Martellini and Zieman (2007) develop a framework that assesses the potential diversification of an asset relative to a portfolio. They use higher moment betas to estimate how much portfolio risk will be impacted by adding an asset, in terms of symmetric risk (i.e., volatility), in asymmetry risk (i.e., skewness), and extreme risks (i.e. kurtosis). That allows them to show that adding an asset to a portfolio (or benchmark) will reduce the portfolio's variance to be reduced if the second-order beta of the asset with respect to the portfolio is less than one. They develop the same concepts for the third and fourth order moments. The authors offer these higher moment betas as a measure of the diversification potential of an asset.

Higher moment betas are defined as proportional to the derivative of the covariance, coskewness and cokurtosis of the second, third and fourth portfolio moment with respect to the portfolio weights. The beta co-variance is calculated as:

BetaCoV(Ra,Rb) = CoV(Ra,Rb)/var(Rb)

Beta co-skewness is given as:

BetaCoS(Ra,Rb) = CoS(Ra,Rb)/skewness(Rb)

Beta co-kurtosis is:

BetaCoK(Ra,Rb) = CoK(Ra,Rb)/kurtosis(Rb)

where the n-th centered moment is calculated as

moment^n(R) = E[R-E(R)^n]

A beta is greater than 1 indicates that no diversification benefits should be expected from the introduction of that asset into the portfolio. Conversely, a beta that is less than 1 indicates that adding the new asset should reduce the resulting portfolio's volatility and kurtosis, and to an increase in skewness. More specifically, the lower the beta the higher the diversification effect on normal risk (i.e. volatility). Similarly, since extreme risks are generally characterised by negative skewness and positive kurtosis, the lower the beta, the higher the diversification effect on extreme risks (as reflected in Modified Value-at-Risk or ER).

The addition of a small fraction of a new asset to a portfolio leads to a decrease in the portfolio's second moment (respectively, an increase in the portfolio's third moment and a decrease in the portfolio's fourth moment) if and only if the second moment (respectively, the third moment and fourth moment) beta is less than 1 (see Martellini and Ziemann (2007) for more details). For skewness, the interpretation is slightly more involved. If the skewness is negative, we would expect an increase in portfolio skewness when the third moment beta is lower than 1. When the skewness of the portfolio is positive, then the condition is that the third moment beta is greater than, as opposed to lower than, one.


numeric value of the normalized co-moment


Kris Boudt, Peter Carl, Brian Peterson


Boudt, Kris, Brian G. Peterson, and Christophe Croux. 2008. Estimation and Decomposition of Downside Risk for Portfolios with Non-Normal Returns. Journal of Risk. Winter.

Martellini, Lionel, and Volker Ziemann. 2007. Improved Forecasts of Higher-Order Comoments and Implications for Portfolio Selection. EDHEC Risk and Asset Management Research Centre working paper.

See Also




BetaCoVariance(managers[, "HAM2", drop=FALSE], managers[, "SP500 TR", drop=FALSE])
BetaCoSkewness(managers[, "HAM2", drop=FALSE], managers[, "SP500 TR", drop=FALSE])
BetaCoKurtosis(managers[, "HAM2", drop=FALSE], managers[, "SP500 TR", drop=FALSE])
BetaCoKurtosis(managers[,1:6], managers[,8,drop=FALSE])
BetaCoKurtosis(managers[,1:6], managers[,8:7])

[Package PerformanceAnalytics version 0.9.9-5 Index]