halo 的技术博客

返回

为什么风险分解至关重要?#

构建多因子投资组合时,研究者往往聚焦于收益预测——哪个因子未来表现更好、权重如何分配。但一个同样重要却常被忽视的问题是:

我的投资组合风险,究竟来自哪里?

一个看似分散化的多因子组合,可能 60% 的风险来自市场因子(β),剩下 40% 分散在其它因子上。当市场转向时,这个组合的表现本质上仍是一个「披着多因子外衣的大盘跟踪器」。

风险分解(Risk Decomposition)让你看清每一单位风险中,各因子的贡献比例,从而做出更有依据的仓位调整决策。

多因子模型基础回顾#

Fama-French 框架及其扩展#

经典多因子模型的出发点是对资产收益的分解:

RiRf=αi+βi,MKT(RmRf)+βi,SMBSMB+βi,HMLHML+εiR_i - R_f = \alpha_i + \beta_{i,MKT}(R_m - R_f) + \beta_{i,SMB}SMB + \beta_{i,HML}HML + \varepsilon_i

其中:

  • RiRfR_i - R_f:资产 i 的超额收益
  • MKTMKT:市场因子(市场超额收益)
  • SMBSMB(Small Minus Big):规模因子,小市值股票相对大市值的超额收益
  • HMLHML(High Minus Low):价值因子,高账面市值比相对低账面市值比的超额收益

在 A 股实证中,常用的因子还包括:

因子代码名称经济学逻辑
MKT市场因子承担系统性风险的补偿
SMB规模因子小市值公司的流动性溢价与风险溢价
HML价值因子价值陷阱后的均值回归
MOM动量因子趋势延续的行为金融学基础
QMJ质量因子高质量公司的稳健经营溢价
BAB低波动因子彩票偏好导致高波动股票被高估

投资组合层面的因子暴露#

对于包含 N 个资产的投资组合 w=[w1,,wN]Tw = [w_1, \ldots, w_N]^T,其因子暴露为各资产因子载荷的加权平均:

βp=i=1Nwiβi\beta_p = \sum_{i=1}^{N} w_i \beta_i

因子暴露不等于风险贡献。当因子之间存在相关性时,风险的计算必须考虑协方差矩阵。这正是风险分解的用武之地。

风险分解的数学原理#

投资组合方差的矩阵形式#

设因子收益率向量为 ft=[f1,t,,fK,t]Tf_t = [f_{1,t}, \ldots, f_{K,t}]^T,其协方差矩阵为 Σf=Cov(f)\Sigma_f = \text{Cov}(f)。投资组合的因子暴露矩阵为 BRN×KB \in \mathbb{R}^{N \times K},则投资组合收益方差为:

σp2=wTBΣfBTw+wTDw\sigma_p^2 = w^T B \Sigma_f B^T w + w^T D w

其中 DD 为特质风险(idiosyncratic risk)的对角矩阵。为聚焦因子层面,忽略特质风险(或在 A 股中假设其可被因子解释),则:

σp2=wTBΣfBTw\sigma_p^2 = w^T B \Sigma_f B^T w

Euler 定理与边际风险贡献#

风险分解的核心数学工具是 Euler 定理。对于齐次函数 f(λx)=λkf(x)f(\lambda x) = \lambda^k f(x),有:

f(x)=ixifxif(x) = \sum_{i} x_i \frac{\partial f}{\partial x_i}

投资组合风险 σp=wTΣw\sigma_p = \sqrt{w^T \Sigma w} 是权重向量 ww 的一阶齐次函数。因此:

σp=i=1Nwiσpwi\sigma_p = \sum_{i=1}^{N} w_i \frac{\partial \sigma_p}{\partial w_i}

其中 σpwi\frac{\partial \sigma_p}{\partial w_i} 称为边际风险贡献(Marginal Risk Contribution, MRC)。每一项的 wiMRCiw_i \cdot MRC_i 即为资产 i 对总风险的百分比贡献

因子层面的风险分解#

将 Euler 定理应用到因子层面。定义因子 k 的边际风险贡献

MRCk=σpβk=(BΣfBTw)kσpMRC_k = \frac{\partial \sigma_p}{\partial \beta_k} = \frac{(B \Sigma_f B^T w)_k}{\sigma_p}

更直观地,因子 k 的风险贡献百分比为:

RCk=βp,kMRCkσp2×100%RC_k = \frac{\beta_{p,k} \cdot MRC_k}{\sigma_p^2} \times 100\%

其中 βp,k=iwiβi,k\beta_{p,k} = \sum_i w_i \beta_{i,k} 为组合在因子 k 上的总暴露。

Python 实现:完整的风险分解框架#

下面用一个完整的 Python 类来实现多因子风险分解,数据使用模拟的 A 股因子收益率。

因子风险贡献条形图 图1:多因子模型各因子的风险贡献百分比(MKT因子占据最大风险敞口)

六大因子累计净值曲线 图2:模拟的六大因子累计净值曲线(252个交易日),可观察到不同因子的收益特征差异

使用示例:A股六因子模型风险分解#

下面用模拟数据演示完整流程(实战中可对接 tushare / westock-data 获取真实因子收益率):

关键输出解读

假设输出显示 MKT 的风险贡献为 58.3%,这意味着该等权组合虽然持有了 50 只股票、覆盖了 6 个因子,但过半的波动风险仍来自市场整体走势。如果这是你刻意构建的「市场中性」策略,那这个结果是失败的——你并没有真正中性。

风险预算(Risk Budgeting)配置#

风险分解的自然延伸是风险预算配置:不直接指定资产权重,而是指定各因子(或资产)允许承担的风险贡献比例,然后反解权重。

风险平价在因子层面的应用#

经典风险平价要求每个资产对总风险的贡献相等。在因子层面,我们可以要求:

RC1=RC2==RCK=1KRC_1 = RC_2 = \cdots = RC_K = \frac{1}{K}

反解权重是一个凸优化问题:

因子收益率相关系数矩阵 图3:因子收益率相关系数矩阵热图(A股因子间相关性往往高于美股,需特别关注)

A 股实证中的特殊考量#

1. 因子相关性在 A 股更高#

A 股市场的因子相关性往往高于美股,原因包括:

  • 散户占比高,情绪驱动导致因子同向波动
  • 政策市特征使价值和动量在某些时期同时失效
  • 小市值效应与价值因子高度重叠(小盘股多为价值股)

这导致风险分解结果对协方差矩阵估计更敏感。建议使用 Ledoit-Wolf 压缩估计 替代样本协方差:

from sklearn.covariance import LedoitWolf

def ledoit_wolf_covariance(factor_returns):
    """Ledoit-Wolf 压缩估计,处理高维低样本问题"""
    lw = LedoitWolf()
    lw.fit(factor_returns)
    return lw.covariance_, lw.shrinkage_

Sigma_lw, shrinkage = ledoit_wolf_covariance(factor_returns)
print(f"Ledoit-Wolf 压缩系数: {shrinkage:.4f}")  # 0 = 样本协方差,1 = 单位矩阵
python

2. 特质风险的不可忽视性#

A 股个股的特质波动率显著高于美股(散户交易、信息不对称)。忽略 DD 矩阵(特质风险)会低估总风险,但对因子风险贡献的比例影响有限——因为特质风险在各资产间不相关,其边际贡献对因子分解影响较小。

3. 因子暴露的非平稳性#

A 股因子的 Beta 存在明显的时间变化(regime switch)。建议:

  • 滚动窗口 估计 Beta(如 126 个交易日)
  • 或用 Kalman 滤波 动态估计时变 Beta
  • 风险分解结果也应报告置信区间(bootstrap 方法)

常见陷阱#

陷阱 1:用因子收益率相关性替代协方差#

有些研究者直接用因子相关性矩阵做风险分解,这等价于假设所有因子波动率为 1。在 A 股,MKT 的波动率往往是 QMJ 的 2 倍以上,这种做法会严重低估市场因子的风险贡献。

陷阱 2:忽略因子暴露的符号#

如果某因子暴露为负(例如做空 MOM 因子),其风险贡献可能为负(对冲效果)。在报告时,建议用 绝对值 展示各因子的「风险规模」,同时用带符号的版本展示对冲效果。

陷阱 3:把风险贡献当收益贡献#

风险贡献高的因子,不一定收益高。低波动因子(BAB)通常风险贡献较低,但可能在特定时期提供稳定正收益。风险分解是风险管理工具,不是因子排序工具。

总结#

多因子模型的风险分解是连接「因子暴露」与「实际风险」的桥梁。核心要点:

  1. Euler 定理 保证了风险可以精确分解到每个因子,无残差
  2. 边际风险贡献(MRC) 告诉你:如果组合在因子 k 上的暴露增加 1 单位,总风险会变化多少
  3. 风险预算配置 是比传统市值加权更科学的方法,尤其适合多因子策略
  4. A 股的特殊性(高因子相关性、时变 Beta)要求使用更稳健的协方差估计方法

风险分解不会告诉你哪个因子未来会涨,但它会告诉你:如果市场再次大跌,你的组合会怎样亏钱——以及为什么。

这才是风控的真正价值。


延伸阅读

  • Meucci, A. (2009). Risk and Asset Allocation. Springer. (Euler 分解的经典教材)
  • Qian, E. (2006). On the Financial Interpretation of Risk Contribution. Journal of Investment Management. (风险贡献的金融直觉解释)
  • Bruder, B. & Roncalli, T. (2012). Managing Risk Exposures Using the Risk Budgeting Approach. Lyxor Research.
多因子模型风险分解:理解投资组合风险的来源
https://blog.halo26812.eu.org/blog/multi-factor-risk-decomposition
Author halo
Published at 2026年6月21日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨