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"), ...)
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 |
$$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.
Carl Bacon, Practical portfolio performance measurement and attribution, second edition 2008 p.68
data(portfolio_bacon) MSquaredExcess(portfolio_bacon[,1], portfolio_bacon[,2]) #expected -0.00998#> benchmark.return.... #> benchmark.return.... -0.01553103MSquaredExcess(portfolio_bacon[,1], portfolio_bacon[,2], Method="arithmetic") #expected -0.011#> benchmark.return.... #> benchmark.return.... -0.01736344data(managers) MSquaredExcess(managers['1996',1], managers['1996',8])#> SP500 TR #> SP500 TR 0.02027322MSquaredExcess(managers['1996',1:5], managers['1996',8])#> HAM1 HAM2 HAM3 HAM4 HAM5 #> MSquaredExcess (Risk free = 0) 0.02027322 NA 0.1409545 -0.02546609 NA