calculate Treynor Ratio or modified Treynor Ratio of excess return over CAPM beta
Source:R/TreynorRatio.R
TreynorRatio.RdThe Treynor ratio is similar to the Sharpe Ratio, except it uses beta as the volatility measure (to divide the investment's excess return over the beta).
Arguments
- Ra
an xts, vector, matrix, data frame, timeSeries or zoo object of asset returns
- Rb
return vector of the benchmark asset
- Rf
risk free rate, in same period as your returns
- scale
number of periods in a year (daily scale = 252, monthly scale = 12, quarterly scale = 4)
- modified
a boolean to decide whether to return the Treynor ratio or Modified Treynor ratio
Details
To calculate modified Treynor ratio, we divide the numerator by the systematic risk instead of the beta.
Equation: $$TreynorRatio = \frac{\overline{(R_{a}-R_{f})}}{\beta_{a,b}}$$ $$ModifiedTreynorRatio = \frac{r_p - r_f}{\sigma_s}$$
References
https://en.wikipedia.org/wiki/Treynor_ratio, Carl Bacon, Practical portfolio performance measurement and attribution, second edition 2008 p.77
Examples
data(portfolio_bacon)
data(managers)
round(TreynorRatio(managers[,1], managers[,8], Rf=.035/12),4)
#> [1] 0.2528
round(TreynorRatio(managers[,1], managers[,8], Rf = managers[,10]),4)
#> [1] 0.2428
round(TreynorRatio(managers[,1:6], managers[,8], Rf=.035/12),4)
#> HAM1 HAM2 HAM3 HAM4 HAM5 HAM6
#> Treynor Ratio: SP500 TR 0.2528 0.3925 0.201 0.1209 0.0052 0.3042
round(TreynorRatio(managers[,1:6], managers[,8], Rf = managers[,10]),4)
#> HAM1 HAM2 HAM3 HAM4 HAM5 HAM6
#> Treynor Ratio: SP500 TR 0.2428 0.3883 0.1956 0.1144 0.0219 0.3401
round(TreynorRatio(managers[,1:6], managers[,8:7], Rf=.035/12),4)
#> HAM1 HAM2 HAM3 HAM4 HAM5 HAM6
#> Treynor Ratio: SP500 TR 0.2528 0.3925 0.2010 0.1209 0.0052 0.3042
#> Treynor Ratio: EDHEC LS EQ 0.1297 0.1088 0.0776 0.0504 0.0014 0.0966
round(TreynorRatio(managers[,1:6], managers[,8:7], Rf = managers[,10]),4)
#> HAM1 HAM2 HAM3 HAM4 HAM5 HAM6
#> Treynor Ratio: SP500 TR 0.2428 0.3883 0.1956 0.1144 0.0219 0.3401
#> Treynor Ratio: EDHEC LS EQ 0.1242 0.1068 0.0753 0.0471 0.0060 0.1086
print(TreynorRatio(portfolio_bacon[,1], portfolio_bacon[,2], modified = TRUE)) #expected 0.7975
#> [1] 0.7806747
print(TreynorRatio(managers['2002',1], managers['2002',8], modified = TRUE))
#> [1] -0.727545
print(TreynorRatio(managers['2002',1:5], managers['2002',8], modified = TRUE))
#> HAM1 HAM2 HAM3 HAM4 HAM5
#> Treynor Ratio: SP500 TR -0.727545 -6.045167 -2.123832 -0.4990387 -5.37482