二、风险因子理论:APT套利定价理论、Fama-French三因子模型、Barra风险模型概述

好,咱们进入第二章。这一章我打算聊聊风险因子理论。说实话,这部分内容在量化圈里属于「地基」级别的存在。你想想看,如果你连风险来源都说不清楚,那你的统计套利策略凭什么赚钱?凭什么扛住回撤?

我个人习惯把风险因子理论分成三个层次来讲:APT 是理论框架,Fama-French 是实证发现,Barra 是工程实现。这三者层层递进,缺一不可。

2.1 APT套利定价理论:多因子的理论基石

APT,全称 Arbitrage Pricing Theory,中文叫套利定价理论。这玩意儿是 Stephen Ross 在 1976 年搞出来的。它的核心思想其实很简单:资产的预期收益,是由多个共同因子驱动的

为什么说它重要?因为 CAPM(资本资产定价模型)只认一个因子——市场收益。但现实中,你我都知道,股票涨跌哪能只跟大盘走?行业政策、利率变化、通胀预期,哪个不是影响因素?

APT 的数学表达式长这样:

E(R_i) = R_f + β_i1 * λ_1 + β_i2 * λ_2 + ... + β_ik * λ_k

其中:

  • E(R_i) 是资产 i 的预期收益
  • R_f 是无风险利率
  • β_ij 是资产 i 对因子 j 的暴露度(因子载荷)
  • λ_j 是因子 j 的风险溢价

说白了,APT 告诉我们:你赚的每一分钱,都可以拆解成对某些因子的暴露。我在项目中遇到过不少新手,上来就搞统计套利,结果回测曲线漂亮得不行,一上实盘就崩。为什么?因为他没搞清楚自己的策略到底暴露在哪些因子上。APT 就是帮你做这个「拆解」的。

核心要点:APT 不指定具体有哪些因子,它只提供一个框架。具体选什么因子,那是 Fama-French 和 Barra 要干的事。

2.2 Fama-French三因子模型:从理论到实证的跨越

1992 年,Fama 和 French 两位大佬发表了一篇论文,直接把 CAPM 按在地上摩擦。他们发现,除了市场因子,还有两个因子能显著解释股票收益的差异:规模因子(SMB)价值因子(HML)

三因子模型的公式:

E(R_i) - R_f = β_i * (E(R_m) - R_f) + s_i * SMB + h_i * HML + α_i

其中:

  • SMB(Small Minus Big):小市值股票组合收益减去大市值股票组合收益
  • HML(High Minus Low):高账面市值比股票组合收益减去低账面市值比股票组合收益
  • α_i 是超额收益,也就是你的策略「真本事」

嗯,这里要注意:α 才是我们做统计套利真正想赚的钱。如果你发现自己的策略 α 不显著,那说明你的收益其实只是因子暴露的「伪装」。

我曾经帮一个团队复盘他们的配对交易策略,回测年化收益 18%,结果用三因子模型一拆,α 只有 2%,剩下的全是小市值因子贡献的。后来市场风格一转,小盘股暴跌,策略直接亏了 30%。你说惨不惨?

个人建议:每次回测完策略,先用 Fama-French 三因子模型跑一遍回归。如果 α 不显著,趁早放弃,别浪费时间。

2.3 Barra风险模型:量化投资的工业级标准

如果说 Fama-French 是学术界的「发现」,那 Barra 就是工业界的「标准」。Barra 模型最早由 MSCI 公司开发,现在几乎成了量化机构的风控标配。

Barra 模型的核心思路是:把风险拆解成一个个可解释、可计算、可对冲的因子。常见的 Barra 因子包括:

  • 风格因子:市值、估值、动量、波动率、流动性等
  • 行业因子:申万一级行业、GICS 行业等
  • 国家因子:市场整体收益

Barra 模型的数学形式:

r = X * f + u

其中:

  • r 是股票收益向量
  • X 是因子暴露矩阵
  • f 是因子收益向量
  • u 是特异性收益(残差)

你想想看,有了这个模型,你就可以回答一个关键问题:我的投资组合到底在赌什么?

下面这张图是我自己画的,帮你理清这三个模型的关系:

风险因子理论演进脉络 APT套利定价理论 多因子理论框架 不指定具体因子 Fama-French三因子 实证发现:市场+规模+价值 可解释超额收益 Barra风险模型 三者关系: • APT 提供「为什么」—— 多因子定价的理论依据 • Fama-French 提供「是什么」—— 具体哪些因子有效 • Barra 提供「怎么做」—— 工程化的风险分解与对冲方案 在统计套利中,三者缺一不可。没有 APT,你找不到方向; 没有 Fama-French,你选不对因子;没有 Barra,你控不住风险。

2.4 三个模型在统计套利中的实际应用

好了,理论讲完了,咱们聊聊怎么用。我直接给你一个实战流程:

  1. 第一步:用 APT 思维搭建因子候选池

    别上来就拍脑袋选因子。先想清楚:你的策略可能暴露在哪些风险上?市场、行业、风格、宏观?列个清单。

  2. 第二步:用 Fama-French 做因子筛选

    跑回归,看哪些因子对你的策略收益有显著解释力。不显著的因子,直接扔掉。

  3. 第三步:用 Barra 做风险预算

    计算每个因子的风险贡献,设定暴露上限。比如,我一般会把市值因子的暴露控制在 ±0.5 个标准差以内。

避坑指南:我曾经犯过一个错误——只用了 Fama-French 三因子做风险归因,结果忽略了行业因子。后来一个行业黑天鹅事件,我的组合一天亏了 5%。从那以后,我每次做风险模型都会加上行业因子。Barra 模型里行业因子是标配,别省。

2.5 一个简单的风险归因代码示例

最后,给你看一段 Python 代码。这是我平时做风险归因的模板:

import pandas as pd
import statsmodels.api as sm

# 假设你有一个策略的日度收益序列
# strategy_returns: pd.Series, index=日期, values=收益率
# factor_returns: pd.DataFrame, columns=['MKT', 'SMB', 'HML']

# 合并数据
data = pd.concat([strategy_returns, factor_returns], axis=1).dropna()
y = data['strategy']
X = data[['MKT', 'SMB', 'HML']]
X = sm.add_constant(X)

# 跑 OLS 回归
model = sm.OLS(y, X).fit()
print(model.summary())

# 看 alpha 是否显著
alpha = model.params['const']
p_value = model.pvalues['const']
print(f'Alpha: {alpha:.4f}, p-value: {p_value:.4f}')

# 如果 p-value > 0.05,说明 alpha 不显著
# 你的策略收益基本就是因子暴露的功劳

这段代码虽然简单,但非常实用。我每次开发新策略,第一件事就是跑这个。如果 α 不显著,我会直接放弃这个策略,或者重新调整因子暴露。

好了,这一章就到这里。记住一句话:不懂风险因子,就别做统计套利。下一章咱们聊聊具体的统计套利策略构建,到时候这些因子理论会派上大用场。