M squared excess is the quantity above the standard M. There is a geometric excess return which is better for Bacon and an arithmetic excess return

MSquaredExcess(Ra, Rb, Rf = 0, Method = c("geometric", "arithmetic"), ...)

Arguments

Ra

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

Rb

return vector of the benchmark asset

Rf

risk free rate, in same period as your returns

Method

one of "geometric" or "arithmetic" indicating the method to use to calculate MSquareExcess

any other passthru parameters

Details

$$M^2 excess (geometric) = \frac{1 + M^2}{1 + b} - 1$$ $$M^2 excess (arithmetic) = M^2 - b$$

where \(M^2\) is MSquared and \(b\) is the benchmark annualised return.

References

Carl Bacon, Practical portfolio performance measurement and attribution, second edition 2008 p.68

Examples

data(portfolio_bacon) MSquaredExcess(portfolio_bacon[,1], portfolio_bacon[,2]) #expected -0.00998
#> benchmark.return.... #> benchmark.return.... -0.01553103
MSquaredExcess(portfolio_bacon[,1], portfolio_bacon[,2], Method="arithmetic") #expected -0.011
#> benchmark.return.... #> benchmark.return.... -0.01736344
data(managers) MSquaredExcess(managers['1996',1], managers['1996',8])
#> SP500 TR #> SP500 TR 0.02027322
MSquaredExcess(managers['1996',1:5], managers['1996',8])
#> HAM1 HAM2 HAM3 HAM4 HAM5 #> MSquaredExcess (Risk free = 0) 0.02027322 NA 0.1409545 -0.02546609 NA