前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >资产瞎配模型(三):风险平价及其优化

资产瞎配模型(三):风险平价及其优化

作者头像
量化小白
发布2019-03-04 10:50:24
6K8
发布2019-03-04 10:50:24
举报
文章被收录于专栏:量化小白上分记

之前两篇文章对若干资产配置模型进行了回测分析,本文重点关注风险平价模型及其优化,考察优化后的效果。

01

风险平价

再次对风险平价(Risk Parity)模型理论进行推导,过程与前文类似,跳过不影响悦读。

02

改进思路

风险平价策略通常用方差来衡量风险,最简单的方式是用样本协方差作为总体协方差的估计量,这也是之前回测时的方法。这样求得的协方差估计量存在诸多问题,另一种常用的估计量是Ledoit&Wolf(2014)提出的压缩估计量。这种估计方法常用的主要原因在于python中有现成的函数,不用自己写,当然效果也不错,不然就不会有人用了,因子加权中对比了简单估计量和压缩估计量的差别,可以看出,在因子加权中用压缩估计量比简单估计量好非常多。

更细致的分析协方差,协方差是资产波动率和资产间相关系数的乘积。大量研究表明,资产间相关系数在短期会因市场波动不稳定,但具有长期关联性,长期会因为均值回复而趋于稳定。 波动率方面,资产的波动率序列具有自相关性,因此过去的波动率对于未来会有指示作用,可以用历史数据预测作为未来资产协方差的估计量。但同时,自相关性具有衰减性的特点【1】【2】,离得越近的数据,包含的信息越多,指示意义更强。基于此,可以考虑对波动率进行衰减加权,实质上也就是对协方差的衰减加权

具体操作为,假如用过去1一年的数据估计协方差,可以将数据分为4个季度,分别估计各组的协方差,按照时间赋予不同的权重,距离越近的,权重越大。

除此外,另一种考虑方式是,风险的度量不止包括方差,还有多种指标,方差是将高于期望收益和低于期望收益的偏离都视为风险,但实际上投资者可能更关注低于期望收益的偏离,下行波动率用来修正方差的这一局限。因此,也用下行波动率作为风险的度量优化风险平价模型。

综上,给出了三种优化方法:协方差的压缩估计量、协方差的衰减加权估计量、下行波动率,后面回测也尝试对这三种方式进行组合

03

回测说明

资产选择

  • 权益:中证全指 000985
  • 债券:中证全债 H11001
  • 商品:中证商品 H11061
  • 全球指数:日经225 N225.GI,标普500 SPX.GI

回测区间:数据200601-201812,回测从2007年1月开始

调仓频率:年度

协方差估计方式:滚动

衰减权重:[0.1,0.2,0.3,0.4]

结果评价指标:年化收益率、年化波动率、夏普比

04

代码

代码与前文基本一致,这里只给出有差异的部分,详细代码和参考报告后台回复“代码”。

衰减加权

代码语言:javascript
复制
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-下行波动率-衰减加权

净值对比

从净值曲线对比可以看出

  1. RP-和RP-衰减加权-压缩估计量的效果最好;
  2. 使用下行波动率度量风险的RP前期优于RP,但2017年后出现明显回撤(橙色线和暗红色线);
  3. RP-衰减加权与RP走势基本一致,表明衰减估计并没有明显优化效果,但压缩估计量RP有明显提升。

06

结果分析

所有方法对比来看,对于本文给定的五种资产

  1. 使用压缩估计量能明显提高RP的年化收益率,但也会增大波动率,夏普比小;
  2. 使用衰减加权的RP年化收益基本不变,整体走势也与RP基本一致。

07

参考文献

  1. 20170918-天风证券-天风证券金工专题报告:基于半衰主成分风险平价模型的全球资产配置策略研究
  2. 20171117-天风证券-天风证券资产配置策略研究之二:引入衰减加权和趋势跟踪的主成分风险平价模型研究
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量化小白躺平记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档