M squared for Sortino is a M^2 calculated for Downside risk instead of Total Risk
M2Sortino(Ra, Rb, MAR = 0, ...)
Ra | an xts, vector, matrix, data frame, timeSeries or zoo object of asset return |
---|---|
Rb | return vector of the benchmark asset |
MAR | the minimum acceptable return |
… | any other passthru parameters |
$$M^2_S = r_P + Sortino ratio * (\sigma_{DM} - \sigma_D)$$
where \(M^2_S\) is MSquared for Sortino, \(r_P\) is the annualised portfolio return, \(\sigma_{DM}\) is the benchmark annualised downside risk and \(D\) is the portfolio annualised downside risk
Carl Bacon, Practical portfolio performance measurement and attribution, second edition 2008 p.102-103
data(portfolio_bacon) MAR = 0.005 print(M2Sortino(portfolio_bacon[,1], portfolio_bacon[,2], MAR)) #expected 0.1035#> portfolio.monthly.return.... #> Sortino Ratio (MAR = 0.5%) 0.1034799#> SP500 TR #> SP500 TR 0.02027322#> HAM1 HAM2 HAM3 HAM4 HAM5 #> MSquaredExcess (Risk free = 0) 0.02027322 NA 0.1409545 -0.02546609 NA