研报&论文

如何通过动态协方差矩阵估计增强组合表现?

由crisvalentine创建,最终由crisvalentine 被浏览 35 用户

协方差矩阵估计是组合风险优化的核心要素,在实际操作中常用的方法是直接将历史协方差矩阵作为估计值,比如用过去10年的收益率计算。但这种方法隐含假设了资产本身的波动率以及资产间相关性是恒定的,而实际上它们往往是时变的。

本文介绍了多种协方差矩阵的预测方法,并比较了不同方法的预测误差和样本外最小方差组合的构建准确度。具体来说我们首先选取了中国大类资产组合、中国股票行业组合、全球大类资产组合和全球股票行业组合作为测算基准,然后测试了历史协方差法、收缩历史协方差、指数移动平均法、DCC-GARCH模型和GO-GARCH模型的预测能力。

测算结果显示,相比传统的历史协方差方法,指数移动平均法和两种GARCH方法均能够显著降低协方差预测误差。举例来说,对于中国大类资产组合,GO-GARCH能够减少31%的协方差预测误差。对于全球大类资产组合,DCC-GARCH也能够减少大约15%的预测误差。

我们将动态协方差预测方法应用于风险预算组合的构建,发现协方差预测的越准确,组合表现越优异。以股、债和黄金构建的月度调仓风险预算组合为例,假设股票风险预算为75%,债券和黄金等权分配剩余25%的预算。结果显示,历史协方差法只能实现7.15%的年化收益,1.90的收益风险比,最大回撤7.67%。假设理想情况下我们已知下月真实样本协方差,则基于此构建的组合可以实现8.72%的年化收益,2.51的收益风险比,最大回撤仅有3.86%。而基于DCC-GARCH的动态协方差预测方法可以实现8.21%的年化收益,2.13的收益风险比,最大回撤也降低到4.91%。我们仅仅通过改进协方差矩阵的预测方法就可以明显改进经典风险预算组合的表现,是一种低成本的组合增强的方法。

风险提示:本报告结论基于历史数据,在市场环境转变时模型存在失效的风险。

本文介绍了多种协方差矩阵的预测方法,并比较了不同方法的预测误差和样本外最小方差组合的构建准确度。测算结果显示,相比传统的历史协方差方法,指数移动平均法和两种GARCH方法均能够显著降低协方差预测误差。我们将动态协方差预测方法应用于风险预算组合的构建,发现协方差预测的越准确,组合表现越优异。

风险提示:本报告结论基于历史数据,在市场环境转变时模型存在失效的风险。

报告正文

引言

在过去的资产配置系列报告中,我们已经构建了各大类资产的择时模型,包括股票、债券、黄金等;也对大类资产的长期预期收益率的预测方法进行了综述和研究;并基于均值方差、风险预算等经典模型提出了融入择时观点的各类战术配置模型,取得了优异的历史表现。

但是关于协方差矩阵的估计和预测研究在系列中目前尚未涉及,本文的主要目的就是进一步完善兴证金工资配置框架,补上这重要的一环。在经典的马科维茨组合优化框架中,协方差矩阵是预期收益率之外的另一重要模型输入。协方差矩阵的估计准确与否直接影响了模型输出的最优权重和组合最终表现。一系列著名的基于风险的组合构建策略如风险平价组合、最小方差组合以及最大分散化组合等也均需要准确估计资产协方差矩阵。

协方差矩阵估计是组合风险优化的核心要素,在实际操作中常用的方法是直接将历史协方差矩阵作为估计值,比如用过去10年的收益率计算。但这种方法隐含假设了资产本身的波动率以及资产间相关性是恒定的,而实际上它们往往是时变的。

我们分别以Wind全A和中债总财富总值指数作为中国股债资产的代表,计算了它们每个月的波动率和相关系数。从图表可以看到,股票的波动率呈现明显的时变性,在2015年市场动荡的月份可以达到80%的高波动,而在2017年的一些月份波动率低于10%。股债相关性的变动同样剧烈,相关系数最高可以超过0.6,而最低时达到-0.8。

{w:100} {w:100} {w:100}资产波动率和相关性的时变性并不是中国市场特有的,而是一种普遍的现象。我们以标普500指数和彭博美国债券综合指数作为美国股债资产的代表,计算了美国股债的历史波动率和相关系数月度变化情况。从下图可以看到美国股债波动率和相关性同样具有明显的时变性。

{w:100} {w:100} {w:100}

协方差估计方法综述

{w:100}

历史协方差

预测协方差矩阵最简单的方法是直接将历史样本协方差矩阵作为对其未来的预测。具体来说,我们首先选择一个固定的回看窗口长度L,比如10年。则下一个月的日度协方差矩阵预测值可表示为:

{w:100}历史协方差法是一种无条件协方差估计量,之后将作为本文介绍的其他预测方法的比较基准。

收缩历史协方差

当协方差矩阵维度较大而数据量有限时,直接根据历史样本计算协方差矩阵可能会有较大的估计误差,协方差矩阵中的某些数值可能会因为少数极端样本而出现较大偏差。为了减少协方差矩阵的预测误差,学界发明了收缩估计法,将历史估计值和某一个收缩目标进行加权平均后得到最终协方差矩阵,它可写为如下形式:

{w:100} {w:100}

指数移动平均法(EWMA)

前面介绍的协方差计算方法属于无条件协方差估计,没有考虑协方差矩阵在时间序列上的时变特征。考虑到这个问题,学界提出了指数移动平均法计算条件协方差矩阵。这种方法的思路是给予近期样本较高的权重,而远期样本较低的权重,从而捕捉到协方差矩阵在时序上的变动。

这种方法是RiskMetrics使用的协方差估计模型,它的计算方法可表示为如下递归的形式:

{w:100}其中 0 < λ < 1,是衰减常数。根据RiskMetrics的推荐,当我们使用日度数据预测未来1个月的协方差矩阵时可以选取 λ = 0.97 来计算。

GARCH类模型

VEC-GARCH模型

另一类估计条件协方差的模型是GARCH模型即广义条件异方差模型,我们假设资产收益率向量满足:

{w:100}其中 Σt 表示条件协方差矩阵,ηt 表示均值为0,方差为1的标准白噪声过程。

VEC-GARCH模型是对单变量GARCH模型的一种直接推广,相当于对协方差矩阵的每一项都建立GARCH模型:

{w:100}其中 c 为一列参数向量,vech()表示把矩阵的下三角部分按照每列叠加成一个向量,A和B分别是两个参数矩阵。从公式可以看出,每一期的条件协方差矩阵都是过去 q 期误差向量乘积以及过去 p 期条件协方差矩阵的函数。

理论上说这个模型非常灵活,可以捕捉到条件协方差的时序特征。但正因为这种灵活性,模型的参数过多,比如A和B均是维度达N(N+1)/2 × N(N+1)/2的矩阵。当资产数量N增大时,参数量以N的4次方的速度增加,这导致模型估计存在巨大困难。另外由于对A和B没有约束,得到的预测矩阵 Σt 无法保证正定性。

为了解决这个问题,Engle和Kroner(1995)提出了BEKK模型,对A和B矩阵形式进行了约束。虽然BEKK模型减少了一部分待估参数,但模型估计依然存在较大困难,因此实际应用中较少使用这一类GARCH模型。

CCC-GARCH模型

前面介绍的VEC-GARCH模型是直接对协方差矩阵建模,模型估计难度较大。这里我们介绍一种将将资产方差和相关系数矩阵分开估计,然后得到协方差矩阵的方法CCC-GARCH模型。

收益率协方差矩阵被分解成标准差矩阵和相关系数矩阵:

{w:100}其中Dt = diag(σ1t,...,σnt)即包含各资产收益率标准差的对角矩阵,R = [ρij]表示相关系数矩阵。此模型中我们假设相关系数矩阵为常数,不随时间变化,可以直接用历史相关系数矩阵代替。这样一来,我们只需要对各资产方差进行建模即可得到协方差矩阵。举例来说,我们用GARCH(1,1)模型分别对N个资产方差建模:

{w:100}然后我们预测资产的标准差矩阵 Dt ,叠加相关系数矩阵 R 后便可以得到协方差矩阵的预测。可以看到这种方法里需要估计的参数数量较少,但假设相关系数为常数的设定过于苛刻,无法捕捉其时变性。

DCC-GARCH模型

{w:100} {w:100}

GO-GARCH模型

{w:100} {w:100} {w:100}

测算说明

数据说明

为了更好的评估各协方差矩阵预测方法的优劣,我们选取多种资产组合进行测试。具体来说包括全球大类资产、全球股票行业、中国大类资产和中国股票行业组合。其中全球股票行业组合由MSCI全球行业指数构成,中国股票行业组合由选取的10个申万行业指数构成。

下表给出了各组合的细分资产以及数据的起止时间。由于选取的各类数据历史长度不同,因此后续测算的历史时段也会略有不同。

{w:100}

如何在Python中调用R语言

我们使用Python语言进行所有的测试和回测。本文第二部分介绍的几种协方差估计方法中历史协方差、收缩历史协方差以及指数移动平均法都可以在Python中比较容易的实现。但一系列基于GARCH模型的预测方法则难以在Python中直接实现。目前Python语言对于计量模型的支持还比较弱,没有找到公认模型设定灵活且准确的多元GARCH模型的包。

我们当然可以尝试自己写GARCH模型的估计代码。但是一方面多元GARCH模型的估计较为复杂,自己写代码的实现难度过大。另一方面即使完成了代码也难以保证其准确和有效性。幸运的是,R语言作为一种通用的统计学语言,对于统计计量模型的覆盖度非常高。R语言中的ccgarch包实现了CCC-GARCH模型,而rmgarch包实现了DCC-GARCH和GO-GARCH模型。

为了统一在Python中进行测试,我们需要在Python中调用R语言的功能,这一点可以通过rpy2包实现。rpy2包可以在Python进程中打开一个R语言的子进程,并实现数据的互相传输。rpy2的robjects函数可以将R语言的代码文本转化为一个可以在Python中调用的对象。举例来说,下图给出了调用GO-GARCH模型的示例。我们首先在R语言中构建了一个以资产收益率数据r_rets和预测天数n_days为参数,并输出GO-GARCH模型拟合结果和协方差预测结果的函数文本。然后利用rpy2.robjects调用,便将其转化为一个可以在Python中调用的函数r_gogarch。通过r_gogarch(r_rets,n_days)的形式,可以得到任意资产组合的协方差预测结果,其中r_rets是np.array类型的数据,n_days是int类型的数据。

{w:100}

协方差矩阵评价方法

协方差矩阵均方差

{w:100}

最小方差组合

{w:100}

{w:100} {w:100}

实证结果

中国大类资产组合

我们以股票、债券、黄金和商品指数组成中国大类资产组合,并使用5种不同方法预测月度协方差矩阵。具体来说我们在每月底使用过去1500个交易日的数据拟合模型并预测未来一个月的协方差矩阵。下面我们给出2010年7月至2021年9月的预测结果。

从下图看,历史样本法和收缩法的矩阵预测误差较大,而指数移动平均和两种GARCH模型均明显减少了误差。其中GO-GARCH表现最好,相比历史样本法减少了大约31%的矩阵预测误差。

从各方法与后验最小方差组合的波动率跟踪误差来看,指数移动平均和两种GARCH方法也比历史样本和收缩法表现更好一些,大约可以减少接近10%左右的跟踪误差。

{w:100} {w:100}

中国股票行业组合

我们选取了10个申万指数组成中国股票行业组合,并使用5种不同方法预测月度协方差矩阵。具体来说我们在每月底使用过去2000个交易日的数据拟合模型并预测未来一个月的协方差矩阵。下面我们给出2008年4月至2021年9月的预测结果。

从下图看,历史样本法和收缩法的矩阵预测误差较大,而指数移动平均和两种GARCH模型均明显减少了误差。其中指数移动平均法表现最好,相比历史样本法减少了大约21%的矩阵预测误差。

从各方法与后验最小方差组合的波动率跟踪误差来看,指数移动平均和两种GARCH方法也比历史样本和收缩法表现更好一些。当无法做空时,EWMA方法跟踪误差最小,相比HIST方法减少了18%的误差。当可以做空时,DCC-GARCH方法表现最好,相比HIST方法减少了10%的跟踪误差。

{w:100} {w:100}

全球大类资产组合

我们选取了包含股票、债券、商品和房地产的7种指数组成全球大类资产组合,并使用5种不同方法预测月度协方差矩阵。具体来说我们在每月底使用过去2000个交易日的数据拟合模型并预测未来一个月的协方差矩阵。下面我们给出2007年9月至2021年9月的预测结果。

从下图看,历史样本法和收缩法的矩阵预测误差较大,而指数移动平均和两种GARCH模型均明显减少了误差。其中DCC-GARCH法表现最好,相比历史样本法减少了大约15%的矩阵预测误差。

从各方法与后验最小方差组合的波动率跟踪误差来看,指数移动平均和两种GARCH方法也比历史样本和收缩法表现更好一些。当无法做空时,DCC-GARCH方法跟踪误差最小,相比HIST方法减少了16%的误差。当可以做空时,同样是DCC-GARCH方法表现最好,相比HIST方法减少了11%的跟踪误差。

{w:100} {w:100}

全球股票行业组合

我们选取了MSCI全球行业指数构成组合,并使用5种不同方法预测月度协方差矩阵。具体来说我们在每月底使用过去2000个交易日的数据拟合模型并预测未来一个月的协方差矩阵。下面我们给出2008年4月至2021年9月的预测结果。

从下图看,历史样本法和收缩法的矩阵预测误差较大,而指数移动平均和两种GARCH模型均明显减少了误差。其中GO-GARCH法表现最好,相比历史样本法减少了大约12%的矩阵预测误差。

从各方法与后验最小方差组合的波动率跟踪误差来看,指数移动平均和GO-GARCH方法表现更好一些。当无法做空时,EWMA方法跟踪误差最小,相比HIST方法减少了7%的误差。当可以做空时,DCC-GARCH方法表现最好,相比HIST方法减少了2%的跟踪误差。相比前几种资产组合,我们发现对于全球股票行业组合的协方差预测效果比较一般。这可能是由于全球行业组合的成分股构成是从全球范围的股票中筛选的,不同国家的同行业股票可能相关性不够稳定,导致协方差预测的困难。

{w:100} {w:100}

动态协方差风险预算组合

前面我们测试了在不同资产组合上协方差预测方法的表现,发现EWMA和GARCH方法的确能够减少协方差的估计误差,并能够更准确的构建最小方差组合。那么通过更好的预测协方差矩阵能够帮助我们获得更高的收益和更低的回撤吗?

风险预算组合是一种基于风险的组合构建方法,它只需要协方差矩阵作为模型输入。我们曾经在《系统化资产配置系列之五:基于择时的目标风险和风险预算配置模型》中介绍过风险预算模型,并构建了基于股债黄金的风险预算组合。那篇报告中我们直接使用历史样本协方差输入模型,在不加入择时信号前的风险预算组合表现较为一般。这里我们将基于动态协方差构建风险预算组合,并观察其特征。

从逻辑上说,更准确的估计协方差矩阵不一定能够提升风险预算组合的收益,它只是能保证组合中各资产的风险贡献与风险预算更接近。但是在一些情况下,比如当资产的收益率与其波动率呈反比时,更准确的协方差预测可以提升组合收益。当预测某资产波动率较高时,风险预算模型会降低其权重,从而规避风险;预测某资产波动率较低时,风险预算模型会提高其权重,从而获得更高的收益。通过这种权重的变化,组合的表现可以获得提升。

我们用万得全A、中债总财富总值指数和AU9999黄金现货代表股债黄金资产。首先来看几种协方差预测方法在股债黄金组合上的表现。下方给出了2014年9月以来各方法的协方差预测误差。可以看到,相比历史样本法,EWMA和两种GARCH模型能够有效减少估计误差。其中DCC-GARCH表现最好,可以减少大约28%的误差。

{w:100}为了测算协方差预测准确性对风险预算组合表现的影响,我们在每月底利用过去1500个交易日数据构建模型,并预测未来一个月的协方差矩阵,然后根据风险预算计算出最优权重向量并调整仓位。我们同时也会测算假设已知下一个月真实协方差矩阵的理想情况下组合的表现。这里我们以普通股票型基金指数和中长期纯债型基金指数作为股债的配置标的,回测的时间范围是2014年9月至2021年9月。

下方给出了不同风险预算设定下各个组合的回测表现。首先我们可以看到,假设我们已知下一个月的实际协方差矩阵,则基于此构建的风险预算组合表现最为优异,收益率最高、波动率和最大回撤最低。举例来说,当给定股票风险预算80%时,理想组合可以实现9.17%的年化收益,而波动率仅有3.79%,最大回撤仅3.94%。相比之下,传统基于历史协方差的风险预算组合收益率只有7.39%,波动率达到4.12%,最大回撤超过8.5%。也就是说准确预测协方差矩阵的确能够提升年风险预算组合的表现。

我们发现,由于EWMA、GO-GARCH和DCC-GARCH方法均能够更好的预测协方差矩阵,相应的风险预算组合表现也有明显提升,其中DCC-GARCH方法相对更好。以75%股票风险预算组合为例,历史协方差组合可以实现7.15%的年化收益,1.90的收益风险比,最大回撤7.67%。而DCC-GARCH组合可以实现8.21%的年化收益,2.13的收益风险比,最大回撤降低到4.91%。

当我们提高股票风险预算到90%时,历史法组合只能实现8.17%的年化收益,而最大回撤达到11.75%。理想组合可以实现10.70%的年化收益,最大回撤只有4.32%。而基于DCC-GARCH的动态协方差组合可以实现9.52%的年化收益,最大回撤7.05%。GO-GARCH组合表现也不错,可以实现10.11%的年化收益,最大回撤略微提高到7.89%。从净值曲线也可以看出,各动态协方差组合的表现明显优于历史法和收缩法组合。通过对比不同风险预算设定下的组合我们可以看到,DCC-GARCH方法总是可以实现更低的回撤和更高的收益风险比,并且收益依然很高。

{w:100} {w:100} {w:100} {w:100} {w:100} {w:100}

总结

协方差矩阵估计是组合风险优化的核心要素,在实际操作中常用的方法是直接将历史协方差矩阵作为估计值,比如用过去10年的收益率计算。但这种方法隐含假设了资产本身的波动率以及资产间相关性是恒定的,而实际上它们往往是时变的。

本文介绍了多种协方差矩阵的预测方法,并比较了不同方法的预测误差和样本外最小方差组合的构建准确度。具体来说我们首先选取了中国大类资产组合、中国股票行业组合、全球大类资产组合和全球股票行业组合作为测算基准,然后测试了历史协方差法、收缩历史协方差、指数移动平均法、DCC-GARCH模型和GO-GARCH模型的预测能力。

测算结果显示,相比传统的历史协方差方法,指数移动平均法和两种GARCH方法均能够显著降低协方差预测误差。举例来说,对于中国大类资产组合,GO-GARCH能够减少31%的协方差预测误差。对于全球大类资产组合,DCC-GARCH也能够减少大约15%的预测误差。

我们将动态协方差预测方法应用于风险预算组合的构建,发现协方差预测的越准确,组合表现越优异。以股、债和黄金构建的月度调仓风险预算组合为例,我们假设股票风险预算为75%,债券和黄金等权分配剩余25%的预算。结果显示,历史协方差法只能实现7.15%的年化收益,1.90的收益风险比,最大回撤7.67%。假设理想情况下我们已知下月真实样本协方差,则基于此构建的组合可以实现8.72%的年化收益,2.51的收益风险比,而最大回撤仅有3.86%。而DCC-GARCH方法可以实现8.21%的年化收益,2.13的收益风险比,最大回撤降低到4.91%。我们仅仅通过改进协方差矩阵的预测方法就可以明显改进经典风险预算组合的表现,是一种低成本的组合增强的方法。

风险提示:本报告结论基于历史数据,在市场环境转变时模型存在失效的风险。

{link}