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

2019-03-04 10:50:24 浏览数 (2)

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

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-天风证券-天风证券资产配置策略研究之二:引入衰减加权和趋势跟踪的主成分风险平价模型研究

0 人点赞