夏普比率是指在一定时期内,投资组合的每个单位风险所带来的超额收益。的值越大,收益越好,其表达式如下:
其中,就是无风险收益率、投资组合的预期收益率和投资组合收益的波动性。
本文以公募基金为例,说明如何计算基金产品的夏普比率。数据集由四只基金产品组成,案例中的完整数据可从百度网盘(https://pan.baidu.com/share/init?Surl = odruqy4dewbsu _ mscfanq,提取代码:jayy) get。
案例中以对数收益率计算日收益率,无风险收益率为1.5%,为银行一年期存款基准利率。Python程序如下:
import pandas as PD
import numpy as NP
fund = PD . read _ excel(r & # 39;C:C:UsersAdministratorDesktop & # 39;,header = 0,index _ col = 0)
#夏普比率
def SR(Rp,Rf,VP):
Return(Rp-Rf)/VP
R _ fund = NP . log(fund/fund . shift(1))#基金的日对数收益率
R _ fund = R _ fund.dropna()。计算所有三年的平均年化收益率
sigma = R _ fund . STD()* NP . sqrt(252)#计算所有三年的平均年化收益率波动率
R_f = 0.015 #无风险利率
Sr _ 3 years = Sr(2016-2018年平均3年的r _ Sharp比值:n & # 39,SR _年)
期限比率是指投资组合承担的每单位下行风险带来的超额回报。的值越大,收益越好,其表达式如下:
其中包括无风险收益率、投资组合的预期收益率、损失的样本量、投资组合收益的标准差下限。所谓下标准差,就是只考虑亏损不考虑盈利的标准差。隐含的条件是,组合的上涨符合投资者的需求,不应纳入风险调整。
本文还是用上面的案例来说明,其Python程序如下:
# sortino ratio
def SOR(Rp,Rf,VP):
Return(Rp-Rf)/VP
VP _ lower = NP。范围内I的zeros _ like(r _ mean)
(len(VP _ lower)):。0]
#向下收益年化标准差
VP _ lower[I]= NP . sqrt(252)* NP . sqrt(NP . sum(r _ neg * * 2)/len(r _ neg))
print(收益向下标准差:& # 39;,Vp _ lower[I])
SOR _ 3 years = SOR(R _ mean,R_f,Vp _ lower)
print(& # 39;2016-2018年平均3年索蒂诺比:n & # 39,SOR _年)
特伦特-雷诺比率是指投资组合所承担的每单位系统风险所带来的风险溢价。的值越大,收益越好,其表达式如下:
其中,无风险收益率是投资组合的预期收益率和投资组合的系统性风险。当投资组合的非系统性风险已经分散,只需要考虑系统性风险时,Tereno比率相对合适。
本文以3016-2018年沪深300指数的数据和上述四只基金的数据为例,说明如何计算Tereno比率。在这种情况下,沪深300指数的完整数据可以从百度网盘(https://pan.baidu.com/share/init?Surl=QXBlomvS4Y2bVN7epKKQpg,提取代码:763e) get。
本文仍采用上述情况下的无风险收益率进行计算,其中用沪深300指数代替市场组合,用线性回归的方法计算四只基金产品的价值。Python程序如下:
将statsmodels.api作为sm
hs 300 = PD . read _ excel(r & # 39;c:用户管理员桌面沪深300 index.xlsx & # 39,header = 0,index _ col = 0)
#计算日收益率
R _ hs 300 = NP . log(hs 300/hs 300 . shift(1))
R _ hs 300 = R _ Rf,beta):
return(Rp-Rf)/beta
betas = NP . zeros _ like(R _ mean)
cons = NP . zeros _ like I]
#用线性回归计算beta值
model = sm.ols (endog = y,exog = x _ add cons)
result = model . fit()
cons[I]= result . params[0]beta = & # 39; ,beta s[I])
TR _ 3 years = TR(R _ mean,R_f,beta s)
print(& # 39;2016-2018年平均3年的Trenor比率:n & # 39,TR _年)
跟踪误差是指投资组合收益率与基准投资组合收益率之差的标准差,反映了投资组合的主动管理风险。要计算跟踪误差,首先需要计算跟踪偏差,跟踪偏差是指投资组合收益率与基准投资组合收益率之差,其计算公式如下:
其中,是投资组合的预期收益率和基准投资组合的预期收益率。
是投资组合的跟踪偏离度和投资组合的跟踪误差。
信息比率是指投资组合所承担的每单位主动管理风险所带来的超额收益。的值越大,收益越好,其表达式如下:
本文仍采用上述情况下的无风险收益率进行计算,其中基准投资组合替换为沪深300指数,其Python程序如下:
# 信息比率 def IR(Rp,Rb,te): return (Rp - Rb)/te TE_fund = np.zeros_like(R_mean) for i in range(len(R_mean)): TD = np.array(R_fund.iloc[:,i]) - np.array(R_HS300.iloc[:,0]) TE_fund[i] = TD.std()*np.sqrt(252) print(R_fund.columns[i] + '跟踪误差',TE_fund[i]) R_mean_HS300 = np.array(R_HS300.mean()*252) IR_3years = IR(R_mean,R_mean_HS300,TE_fund) print('2016-2018平均3年的信息比率:n',IR_3years)