查看原文
其他

Barra 协方差矩阵的 Eigenfactor 调整

The following article is from 万矿 Author WindQuant


作者:周飞鹏,WindQuant 研究员,擅长风险多因子建模。


川总按:公众号之前写了不少介绍 Barra 多因子模型的文章:


1. 《正确理解 Barra 的纯因子模型》(以及勘误

2. 《Barra 因子模型截面回归求解》

3. 《协方差矩阵的 Newey-West 调整》

4. 《Barra 因子模型中的风险调整》


上述第四篇介绍了 Barra 对协方差矩阵的 Eigenfactor 调整和对异质波动率的贝叶斯收缩。这些方法 —— 特别是 Eigenfactor 调整 —— 可以改进样本外协方差矩阵的估计效果。不过,该文的不足之处是仅介绍了方法,却并没有给出实证例子。为了弥补上述不足,今天特别转载一篇针对 A 股进行 Eigenfactor 调整的实证分析。我视它为上述 Barra 系列文章的必要补充。


这篇文章的作者是来自 WindQuant 的周飞鹏研究员(我之前和他就多因子模型中的一些方法论有过深入探讨,很靠谱的小伙)。本次转载已获 WindQuant/Wind 授权,特此感谢。


以下行文中将最大程度保留原作,仅在必要处稍作修改。点击文末 [阅读原文] 可查看原作。



0

Executive Summary


本文是 Barra 协方差矩阵 Eigenfactor Adjustment(Menchero, Wang, and Orr 2011,以下记为 Eigen-Adjustment)的中国市场检验。我们测试了 A 股市场上四种资产或组合的预期波动与实际波动的偏差,并发现特征因子组合(Eigenfactors)以及利用 Mean-Variance Optimization(Markowitz 1952)计算的最优组合,波动率偏误较大,存在较严重低估真实波动率的情况。


我们接着用 Eigen-Adjustment 方法对协方差矩阵进行调整,检验了利用调整后的协方差矩阵所构建的最优化组合以及特征因子组合,发现其预期波动率与实际波动率的偏差被大幅消除。最后根据偏差统计量测试了模型中不同放缩系数的调整效果。


实证检验证明了 Eigen-Adjustment 可以消减协方差矩阵估计的偏误,能够提高资产配置的样本外表现。同时,本文中的资产也可以用因子替代(某因子收益率即为纯因子组合),在利用因子投资的过程中也可以利用该方法对因子收益率协方差矩阵进行调整以降低估计的偏差。


1

引言


对资产收益率协方差矩阵的估计是许多资产配置问题中的核心命题。Markowitz (1952) 提出的 MVO 框架在开创定量研究上取得成功,但同时在应用过程中也常受质疑,其中最大的问题在于资产预期收益率以及协方差矩阵的估计常与现实存在较大偏差。比如有学者指出,MVO 框架的优化器(Optimizers)实际上是“误差最大化器”,最优化过程倾向于把更多的权重放在预期收益率估计误差最大的资产上,导致样本外表现较差。类似的,优化器倾向于把大量的对冲性头寸放在样本内有高度相关性同时收益差又较低的资产上,若相关性在样本外难以持续,组合风险将大于预期。


因此,如何获得更准确的收益、协方差矩阵的估计成为能否应用 MVO 框架的核心问题。Menchero, Wang, and Orr (2011) 基于矩阵特征分解以及 Monte Carlo 模拟的方法提出一种对协方差矩阵的调整手段(称为 Eigen-Adjustment),得到 Eigen-Adjusted Covariance Matrix。该方法在美国权益市场上的回测中检验了其具有良好的消减估计偏差的效果。


本文将介绍 Eigen-Adjustment 的原理及过程,同时在中国 A 股市场上检验其调整效果。


2

数据、协方差矩阵和偏差统计量


2.1 数据


本文挑选 50 支股票并使用长达 12 年的历史数据为例说明进行 Eigen-Adjustment 的效果。


这 50 只股票筛选方式为:2019 年 1 月 23 日自由流通市值最大、且 2006 年以来都有数据并剔除(广发证券:000776.SZ)后的前 50 个公司(剔除“广发证券”原因是其在 2006 年初波动率异常)。整个实证区间为:2006 年 1 月 1 日 —— 2019 年 1 月 23 日。



2.2 样本协方差矩阵


股票收益率采用相对“市场”超额,此处的“市场收益率”为 50 只票的自由流通市值加权:



采用周期 T = 200 个交易日滚动计算资产协方差矩阵 V_0,计算方式如下:



此外令下标 n = 0 代表市场收益,即:



2.3 偏差统计量


Menchero, Wang, and Orr (2011) 定义了一种波动率偏差统计量,其计算方式如下:记 R_t 是 t 日组合收益率,σ_t 是在 t 日开始时对组合波动率的预测值。用 σ_t 对 R_t 进行标准化:



偏差统计量由该标准化收益的标准差表示:



上式中 τ 为测试窗口的天数,等于总实证区间交易日数减去用来计算协方差矩阵的滚动窗口所含交易日数。


该偏差统计量代表了已实现波动率与预测波动率的比值。若预测精准,我们期待 B ≈ 1.0。在正态性假设以及精准预测下,Menchero, Wang, and Orr (2011) 给出 95% 置信区间为:



由于真实的金融数据往往是厚尾的,落入置信区间的样本会减少;同时,不会有准确预测,因此前面给出的置信区间也过于严格。下文的重点是使用该统计量去研究过大的 B 侦测到的风险预测中过大的系统偏误。


3

四种组合的波动率偏差统计量


本小节考察上述 50 支个股、以及它们按不同方法构建的三种投资组合,在实证期内偏差统计量的大小,以此说明进行 Eigen-Adjustment 的必要性。


3.1 个股


首先考察个股在回测区间内的波动率预测偏差统计量。每天收盘收益即 t 日收益率,前一天收盘后计算的过去 200 个交易日标准差即为 t 日开始时预测波动率。由此计算 50 个股票和市场组合的偏差统计量,如图 1 显示。股票按整个回测区间内已实现波动率的升序排列。可以看到偏差统计量几乎都在 1.0 附近,说明在个股层面上,样本协方差矩阵 V_0(此处其实就是标准差)提供了很好的预测准确性。



3.2 随机组合


接着,我们使用这 50 支股票随机生成 100 个随机投资组合,并考察它们的偏差统计量。随机组合的收益率由下式给定:



上式中 f_nt 为股票 n 在第 t 天的收益率(相对市场超额),ε_n^l 为随机组合 l 中股票 n 的权重,其取值为从标准正态分布中抽样得到的随机数。得到随机权重后,每组内权重再进行 Z-Score 标准化,这样每个随机组合就是零额投资的。


图 2 展示了这 100 个随机组合(按整个实证区间内已实现波动率升序排列)的波动率偏差统计量(计算时,组合在某天的预期波动率由过去 T = 200 天内股票收益率协方差矩阵以及股票权重向量得到),可以看到,绝大多数的组合偏差统计量接近 1.0。该结果说明对于随机组合来说,协方差矩阵对组合波动率有较好的预测能力。



3.3 特征因子组合


首先给出“特征因子组合”(Eigenfactors)的定义。


给定一个样本内协方差矩阵 V_0,对其进行特征分解,即可得到一个由 V_0 的特征向量构成的方阵。该方阵中每一列为 V_0 的一个特征向量,即为一个特征因子组合在个股上的权重。一个特征向量代表了一个特征因子组合(Eigenfactors)。


由特征分解的结果可知,这些特征因子组合之间的相关性为零,特征因子组合间的协方差矩阵在非对角线元素上为零。


特征因子组合的经济学意义并不明显(考虑其权重代表什么?),但是 Menchero, Wang, and Orr (2011) 指出,它们在组合优化的过程中扮演重要角色。例如第一个特征因子组合,实际上是最小化组合方差问题在权重和为 1 的约束下的解;而与之对应的,最后一个特征因子组合是在最大化组合方差上的解。


这实际上在暗示我们通常我们对最优化组合风险的低估来源于特征因子组合(即特征向量)。为深入研究,我们计算了 50 个特征因子组合(协方差矩阵的维数应该等于特征向量数目)在整个实证期的偏差统计量,结果如下图。



可以看到特征组合的波动率偏差与序号有明显负相关性,最左端的特征组合是最小化方差的解,存在着对真实波动率的严重低估(导致偏差统计量 B 显著大于 1.0),而最右端为最大化方差组合,存在对真实波动一定程度的高估。总体上,特征组合的波动率偏差统计量偏离 1.0 较远。实际中我们常使用最小方差作为组合优化的目标函数,而测试结果证实了这种做法会低估真实波动率。


3.4 最优化组合


前面我们提到特征因子组合与最优化的结果有着某种联系,但每个组合的经济意义依旧不是非常明确,因此这里我们直接研究最优化给出的组合中是否存在用预测波动率会产生较大的偏误。


由于真实股价数据已经给定,在特定约束条件下只能找到一个最优组合,这对研究偏误是不够的。为了研究多个最优组合,我们依然采用产生随机数的方法模拟产生最优组合。


在真实股价给定的情况下,为了生成 100 个最优组合,需要有与之对应的 100 个预期收益率,对应 100 种情境;而预期协方差矩阵则都是用同一个,即由真实股价滚动计算得到的 V_0。


首先随机生成 100 个 α 信号:



等式右边第一个参数是第 j 个组合中股票 n 的预期收益率(常数),从标准正态分布中抽样得到;第二个参数是组合 j 在第 t 天截面上所有股票 α_n^j 的市值加权;这两项整体即得组合 j 中股票 n 在 t 日的 α。


接下来,利用样本协方差矩阵 V_0 以及上述预期收益率为输入,并以 ω'α = 1 为约束条件构建最小方差组合。由 Grinold and Kahn (2000) 可知,上述约束优化的最优权重向量满足:



这样就得到了 100 个最优化组合在各股上的权重,继而可计算每个组合当日的收益率 R_t^j:



上式中 h_{nt}^j 为最优权重,f_nt 为个股当日真实超额收益。


此处需要思考一下这个过程。100 个组合中,每个组合内各股的预期收益率向量是随机产生的,但产生后就是“常数”,这一步实际上是用相对固定的预期收益率来区别 100 个组合。


同时,也许小伙伴会有疑惑,为什么预期收益率是模拟产生的,计算最优化结果的另一输入 —— 协方差矩阵用的又是真实样本协方差阵,且计算组合收益时又用个股的真实收益率?其实这不难理解。模拟值的意义如下:假设个股具有模拟出的预期收益率,而样本收益率是该分布的一个实现,它的取值不一定与预期收益率相同。样本协方差矩阵其实代表了相关性与波动率,用协方差阵和预期收益率,即可确定个股的预期分布。前文提到 MVO 框架的两个输入量:收益、波动的估计不准导致最优化结果不理想,所以我们此处做的就是假设预期收益是正态的也是“准确的”,只留下波动由样本协方差确定,这样便可针对性地研究由于波动率估计不准确带来的偏误。


最后,利用 R_t^j 及协方差矩阵便可计算波动偏差统计量。下图为 100 个最优化组合的偏差统计量(中位数:1.503)。可以直观地看到所有组合的样本协方差矩阵都严重低估了组合的真实波动率(偏差统计量显著大于 1.0),因此不难想象这些最优化出来的结果在样本外不会带来太好的表现。



4

使用 Eigen-Adjustment 降低偏误


不论是特征因子组合还是最小方差组合,样本协方差对组合波动率的估计有系统性的偏误,主要体现为低估真实波动。因此考虑对样本协方差进行调整以尽可能消除这种偏误。具体来说,我们从协方差阵的特征因子组合也就是矩阵的特征向量矩阵入手研究,期望通过对特征组合的波动率的调整,以达到对协方差阵的调整。


Menchero, Wang, and Orr (2011) 指出可以通过数值模拟实现上述目标。该方法的核心是假定样本协方差代表“真实”波动率;以它作为 data generation process 背后的参数,通过 simulation 计算出该参数下的“样本协方差”矩阵;由于此时“真实”协方差已知,因此可以计算“真实”和“样本”协方差矩阵之间的偏差。由于该偏差是真正真实但未知的协方差和上述样本协方差之间偏差的一个很好的近似,因此使用该偏差来改进样本协方差矩阵就可以得到真实协方差矩阵的更好的估计。


下面来看具体步骤(为简化表达式,以下假设收益率 demean 了)。


1. 首先用资产(我们的例子中是股票)收益率矩阵 f(N × T 阶;且满足 T > N 否则协方差矩阵不是满秩的)计算样本协方差矩阵 V_0(N × N 阶),将其作为“真实”的协方差矩阵:



2. V_0 特征分解得到特征因子组合 U_0(N × N 阶)、及其协方差矩阵 D_0(N × N 阶对角阵,由于假设 V_0 是“真实”的,因此 D_0 对角线上的元素是这些特征组合的“真实”方差):



3. 由于假设 D_0 为特征因子组合“真实”的协方差矩阵产,这意味着对于第 k 个因子组合,其收益率的分布满足正态分布 N(0, D_0(k)),其中 D_0(k) 为 D_0 中对角线上第 k 个元素,即该组合的方差。在第 m 次仿真时(m = 1, 2, …, M),从 N(0, D_0(k)) 分布生成 T 个样本,作为特征因子组合 k 在 T 期的收益率。对全部 N 个特征因子组合进行上述操作得到矩阵 b_m(N × T 阶)。使用 b_m 和 U_0 计算出资产的“样本”收益率 f_m:



4. 模拟得到的收益率 f_m 的“真实”协方差阵正是 V_0。但由于样本误差,使用 f_m 计算的“样本”协方差为(它是“真实”协方差矩阵 V_0 的 estimate):



5. V_m 是 V_0 的无偏估计量。同样对其进行特征分解得到第 m 次模拟中特征因子组合的“样本”协方差矩阵:



6. 由于“真实”资产收益率协方差为 V_0,便可以通过 U_m 反过来计算特征因子组合的“真实”协方差矩阵:



7. 需要注意的是,上述得到的 \tilde{D}_m 不一定是对角矩阵,而我们尽关心每个特征组合各自的方差(即 \tilde{D}_m 对角线上的元素)与“真实值”(即 D_m 对角线上的元素)有何不同。为了消除偏误,计算全部 M 次模拟中某个特征组合 k 波动率的平均偏误:



8. 每次模拟均假设了正态性、平稳性,但真实金融数据则不满足以上两点。实际中为了计算真实的“经验波动率偏误”,还需对 λ(k) 进行调整。这里选取最简单的放缩方式:



上式中,a 是一个经验系数,可以通过测试最终调整结果的好坏来确定(见附录)。


9. 最后,由于假设 V_0 相对真实但未知的协方差的偏误,与 V_m 相对 V_0 的偏误相同。故可通过第 8 步中得到的 γ 调整特征组合协方差 D_0,再将调整后 D_0 变换回资产协方差矩阵:



上式中,γ^2 是一个 N × N 的对角阵,其对角线上的第 k 个元素为 γ(k) 的平方;最终 \tilde{V}_0 就是经 Eigen-Adjustment 之后的资产协方差矩阵。


5

调整后偏差统计量


本小节测试 Eigen-Adjustment 方法对于消除协方差偏误是否有效。在测试中每天对资产样本协方差矩阵进行 Eigen-Adjustment,每次调整中蒙特卡洛模拟次数为 300,放缩系数采用 a = 2.36(见附录)。


5.1 特征因子组合


首先考察特征因子组合。使用调整的协方差阵后,与基于样本协方差的组合相比,改善效果较明显。虽然仍有部分组合的偏差统计量离 1.0 有距离,但大部分特征组合的偏差已处在 1.0 附近,尤其是此前倾向于低估真实波动的组合调整后低估被消除。



5.2 最优化组合


最后考察特征调整对于组合寻优的意义。使用调整的协方差阵后,改善效果十分直观。与基于样本协方差的组合相比,100 个最小方差组合的波动率偏差直线下降,均处于 1.0 附近(均值 1.024,落在以计算偏差统计量的时间窗口 T = 2975 计算的 1.0 ±\sqrt{2/T} 误差范围内;见附录),说明最小方差组合对波动率的低估被有效消除,这对资产配置、提高优化组合在样本外的表现有极其重要意义。



A

附录


我们测试了 Eigen-Adjustment 第 8 步中不同放缩系数下,协方差的调整效果。令 a ∈ [1.00, 2.60],步长 0.08,分别测算每次全部 N 个特征因子组合波动率偏差统计量的均值与标准差,结果如下表。由于我们担心的是最小方差组合会低估真实的波动率,而放缩系数是对协方差的方所调整,因此理论上在合理范围内,越大偏差统计量应当越小,而结果也证明了这一点。前文提到了,即使完美的调整也无法让偏差统计量等于 1.0。在正态性、平稳性假设下,偏差统计量的 95% 置信区间是 1.0 ±\sqrt{2/T}。当 a = 2.36 时,偏差统计量已在此范围内。




参考文献

Grinold, R. C. and R. N. Khan (2000). Active Portfolio Management, 2nd ed. New York: McGraw-Hill.


Markowitz, H. (1952). Portfolio selection. The Journal of Finance, Vol. 7(1), 77 – 91.


Menchero, J., J. Wang, and D. J. Orr (2011). Eigen-adjusted Covariance Matrices. MSCI Research Insight.



免责声明:文章内容不可视为投资意见。市场有风险,入市需谨慎。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存