2、市场因子模型基础:单因子模型、多因子模型、因子暴露计算

聊到市场风险敏感度分析,因子模型是绕不开的基石。我个人习惯把因子模型看作是「拆解风险的显微镜」——你想想看,一只股票涨了,到底是因为大盘好,还是因为它自己争气?因子模型就是用来回答这个问题的。

2.1 单因子模型:最朴素的归因框架

单因子模型,说白了就是只用一个因子来解释资产收益。最经典的当属CAPM(资本资产定价模型):

R_i - R_f = β_i * (R_m - R_f) + ε_i

这里:

  • R_i:资产i的收益率
  • R_f:无风险利率
  • R_m:市场组合收益率
  • β_i:资产i对市场因子的暴露(敏感度)
  • ε_i:残差项(资产特有的风险)

我在项目中遇到过不少刚入行的同学,上来就问:「β怎么算?」其实很简单——用历史收益率做一元线性回归就行。但这里有个坑:β是时变的。你用过去3年的数据算出来的β,跟过去1个月的,可能差很多。

核心要点:单因子模型假设所有资产的共同风险来源只有一个——市场因子。残差项之间互不相关。这个假设很理想,但实战中往往不够用。

我的经验:做单因子模型时,我建议至少用60个月(5年)的月度数据来估计β。太短了噪声大,太长了β可能已经漂移了。

2.2 多因子模型:更精细的风险拆解

单因子模型太粗糙了。你想想看,两个β都是1.2的股票,风险特征可能完全不同——一个可能是科技成长股,另一个可能是周期股。多因子模型就是为了解决这个问题。

最经典的多因子模型是Fama-French三因子模型:

R_i - R_f = α_i + β_m * (R_m - R_f) + β_smb * SMB + β_hml * HML + ε_i

其中:

  • SMB(Small Minus Big):市值因子,小盘股减大盘股
  • HML(High Minus Low):价值因子,高账面市值比减低账面市值比
  • β_m, β_smb, β_hml:分别对应三个因子的暴露

后来Carhart又加了动量因子(MOM),变成了四因子模型。再后来,Fama和French自己又升级成了五因子模型,加了盈利因子(RMW)和投资因子(CMA)。

注意:因子不是越多越好。因子太多会导致多重共线性,而且经济含义会变得模糊。我曾经见过一个策略用了20多个因子,回测曲线漂亮得不行,实盘一跑就崩——这就是典型的过拟合。

2.3 因子暴露计算:从理论到代码

因子暴露(Factor Exposure),也叫因子载荷(Factor Loading),就是资产对各个因子的敏感度。计算方式主要有两种:

  1. 时间序列回归法:用资产收益率对因子收益率做回归,回归系数就是因子暴露。
  2. 截面回归法:Fama-MacBeth两步法,先做时间序列回归得到β,再做截面回归得到因子溢价。

实战中,我90%的情况都用时间序列回归法。下面给个Python示例:

import pandas as pd
import statsmodels.api as sm

# 假设 df_returns 包含资产收益率和因子收益率
# 列名: 'asset', 'market', 'smb', 'hml'

X = df_returns[['market', 'smb', 'hml']]
X = sm.add_constant(X)  # 添加截距项
y = df_returns['asset']

model = sm.OLS(y, X).fit()
print(model.summary())

# 因子暴露就是回归系数(除了截距项)
factor_exposures = model.params[1:]  # 去掉const

关键点:因子暴露是动态的。我建议用滚动窗口(比如36个月)来估计,这样能捕捉到暴露的变化。另外,记得做Newey-West标准误调整,因为残差往往存在自相关和异方差。

2.4 因子模型在风险敏感度分析中的应用

有了因子暴露,我们就可以做风险分解了。假设一个组合的因子暴露向量是β,因子收益率的协方差矩阵是Σ,那么组合的方差可以写成:

σ²_p = β' Σ β + σ²_ε

其中σ²_ε是残差方差(特质风险)。

这样,我们就能算出每个因子对组合风险的贡献度:

因子 暴露 因子波动率 风险贡献 占比
市场因子 1.05 15% 15.75% 65%
市值因子 0.32 10% 3.20% 13%
价值因子 -0.18 8% -1.44% -6%
特质风险 - - 6.49% 28%

你看,这个表格能很直观地告诉我们:组合的风险主要来自哪里。如果市场因子的风险贡献占比过高,说明组合不够分散,跟买大盘指数没啥区别。

避坑指南:我曾经犯过一个错误——直接用全样本估计因子暴露,然后做风险预算。结果市场风格切换时,组合的风险特征完全变了。后来我改用滚动窗口+指数加权(EWMA),效果好了很多。

2.5 本章知识体系

下面这张图总结了因子模型的核心逻辑:

市场因子模型知识体系 单因子模型 CAPM:R_i - R_f = β(R_m - R_f) + ε 多因子模型 Fama-French三/五因子、Carhart四因子 因子暴露计算 方法1:时间序列回归(OLS) | 方法2:Fama-MacBeth截面回归 关键:滚动窗口估计、Newey-West标准误调整 风险分解与敏感度分析 组合方差 = β'Σβ + σ²_ε 计算每个因子的风险贡献占比 动态调整:根据因子暴露变化调整组合权重 目标:控制因子暴露在预设范围内,管理风险敏感度

嗯,这张图把整个逻辑串起来了。从单因子到多因子,从暴露计算到风险分解,再到动态调整——每一步都有它的实战意义。

总结一下:因子模型是市场风险敏感度分析的「第一性原理」。单因子模型简单但粗糙,多因子模型精细但需要谨慎选择因子。因子暴露的计算要动态、要稳健。掌握了这些,你就能看懂组合的风险到底从哪来,也才能谈得上「动态调整」。


公众号:蓝海资料掘金营,微信deep3321