之前两篇文章对若干资产配置模型进行了回测分析,本文重点关注风险平价模型及其优化,考察优化后的效果。
01
风险平价
再次对风险平价(Risk Parity)模型理论进行推导,过程与前文类似,跳过不影响悦读。
02
改进思路
风险平价策略通常用方差来衡量风险,最简单的方式是用样本协方差作为总体协方差的估计量,这也是之前回测时的方法。这样求得的协方差估计量存在诸多问题,另一种常用的估计量是Ledoit&Wolf(2014)提出的压缩估计量。这种估计方法常用的主要原因在于python中有现成的函数,不用自己写,当然效果也不错,不然就不会有人用了,因子加权中对比了简单估计量和压缩估计量的差别,可以看出,在因子加权中用压缩估计量比简单估计量好非常多。
更细致的分析协方差,协方差是资产波动率和资产间相关系数的乘积。大量研究表明,资产间相关系数在短期会因市场波动不稳定,但具有长期关联性,长期会因为均值回复而趋于稳定。 波动率方面,资产的波动率序列具有自相关性,因此过去的波动率对于未来会有指示作用,可以用历史数据预测作为未来资产协方差的估计量。但同时,自相关性具有衰减性的特点【1】【2】,离得越近的数据,包含的信息越多,指示意义更强。基于此,可以考虑对波动率进行衰减加权,实质上也就是对协方差的衰减加权。
具体操作为,假如用过去1一年的数据估计协方差,可以将数据分为4个季度,分别估计各组的协方差,按照时间赋予不同的权重,距离越近的,权重越大。
除此外,另一种考虑方式是,风险的度量不止包括方差,还有多种指标,方差是将高于期望收益和低于期望收益的偏离都视为风险,但实际上投资者可能更关注低于期望收益的偏离,下行波动率用来修正方差的这一局限。因此,也用下行波动率作为风险的度量优化风险平价模型。
综上,给出了三种优化方法:协方差的压缩估计量、协方差的衰减加权估计量、下行波动率,后面回测也尝试对这三种方式进行组合。
03
回测说明
资产选择
回测区间:数据200601-201812,回测从2007年1月开始
调仓频率:年度
协方差估计方式:滚动
衰减权重:[0.1,0.2,0.3,0.4]
结果评价指标:年化收益率、年化波动率、夏普比
04
代码
代码与前文基本一致,这里只给出有差异的部分,详细代码和参考报告后台回复“代码”。
衰减加权
def getSigma(datas,method = 'Simple'):
asset = datas.columns
datas['n'] = np.arange(datas.shape[0])
datas['group'] = pd.qcut(datas.n,4,labels = False)
if method == 'Simple':
sigma_1 = datas.loc[datas.group==0,asset].cov()
sigma_2 = datas.loc[datas.group==1,asset].cov()
sigma_3 = datas.loc[datas.group==2,asset].cov()
sigma_4 = datas.loc[datas.group==3,asset].cov()
sigma = 0.1*sigma_1 +sigma_2*0.2 +sigma_3*0.3 +sigma_4*0.4
elif method =='Ledoit':
sigma_1,a = ledoit_wolf(datas.loc[datas.group==0,asset])
sigma_2,a = ledoit_wolf(datas.loc[datas.group==1,asset])
sigma_3,a = ledoit_wolf(datas.loc[datas.group==2,asset])
sigma_4,a = ledoit_wolf(datas.loc[datas.group==3,asset])
sigma = 0.1*sigma_1 +sigma_2*0.2 +sigma_3*0.3 +sigma_4*0.4
sigma = pd.DataFrame(sigma)
elif method == 'DW':
datas[datas>0] = 0
datas['n'] = np.arange(datas.shape[0])
datas['group'] = pd.qcut(datas.n,4,labels = False)
sigma_1 = datas.loc[datas.group==0,asset].cov()
sigma_2 = datas.loc[datas.group==1,asset].cov()
sigma_3 = datas.loc[datas.group==2,asset].cov()
sigma_4 = datas.loc[datas.group==3,asset].cov()
sigma = 0.1*sigma_1 +sigma_2*0.2 +sigma_3*0.3 +sigma_4*0.4
else:
pass
return sigma
method='Simple'时直接计算样本协方差,‘Ledoit’时计算协方差的压缩估计量,'DW'时计算下行波动率。
05
部分模型结果
资产走势(以2006年1月1日为1000点)
不画中证全指
各资产相关系数
RP-简单估计量
RP-压缩估计量
RP-衰减加权
RP-衰减加权-压缩估计量
(这里legend标错了)
RP-下行波动率
RP-下行波动率-衰减加权
净值对比
从净值曲线对比可以看出
06
结果分析
所有方法对比来看,对于本文给定的五种资产
07
参考文献
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有