4.4 回归分析
回归分析研究变量之间的线性依赖关系,是量化金融中建模资产收益率与风险因子关系的核心工具。最基础的是普通最小二乘法(OLS)。
一、简单线性回归模型
1.1 模型定义
- :因变量(被解释变量)
- :自变量(解释变量)
- :截距项
- :斜率系数
- :随机误差项
1.2 OLS 估计
最小化残差平方和:
解为:
二、手算示例:CAPM Beta 估计
CAPM 模型:
用 5 个月数据手动计算某股票的 和 。数据为超额收益率(%):
| 月份 | 股票超额收益 | 市场超额收益 |
|---|---|---|
| 1 | 2.5 | 1.8 |
| 2 | -1.0 | -0.5 |
| 3 | 3.0 | 2.0 |
| 4 | 0.5 | 1.0 |
| 5 | 1.0 | 0.7 |
2.1 计算必要统计量
| 1 | 1.8 | 2.5 | 0.8 | 1.5 | 1.20 | 0.64 | 2.402 | 0.098 |
| 2 | -0.5 | -1.0 | -1.5 | -2.0 | 3.00 | 2.25 | -0.864 | -0.136 |
| 3 | 2.0 | 3.0 | 1.0 | 2.0 | 2.00 | 1.00 | 2.673 | 0.327 |
| 4 | 1.0 | 0.5 | 0.0 | -0.5 | 0.00 | 0.00 | 1.313 | -0.813 |
| 5 | 0.7 | 1.0 | -0.3 | 0.0 | 0.00 | 0.09 | 0.907 | 0.093 |
2.2 计算斜率
解读:该股票的 ,意味着市场涨跌 1%,股票预期涨跌 1.56%。属于高波动/高 beta 股票。
2.3 计算截距
解读:,表明该股票在控制了市场风险后,月均超额收益为负。
2.4 计算拟合值 与残差
各 和 已在上表计算。
2.5 计算
解读:,市场超额收益解释了该股票超额收益变动的 92.34%。
三、回归系数的 t 检验
3.1 系数标准误
3.2 t 检验
检验 (股票与市场无线性关系):
(双侧,)
,拒绝 , 显著非零。
检验 (无超额收益):
,不拒绝 , 不显著。
四、多元线性回归与多重共线性
4.1 多元线性回归
矩阵形式:
4.2 多重共线性
当自变量之间存在高度相关性时,OLS 估计的方差变大,系数不稳定。
检测方法:VIF(方差膨胀因子)
其中 是第 个自变量对其他自变量做回归的 。 或 表示存在严重共线性。
处理方案:
- 删除高度相关的变量
- 使用岭回归(Ridge)或 LASSO
- 使用 PCA 降维
Quant Link:因子模型与 Alpha 生成
回归分析是量化研究的基石:
- CAPM 模型:,判断组合是否有超额收益()
- Fama-French 三因子模型:增加 SMB(规模因子)和 HML(价值因子)
- 多因子模型:Barra 模型包含行业、风格等数十个因子
- Alpha 剥离:通过回归控制已知风险因子,剩余的 即为策略的"真本事"
- 因子暴露对冲:若某策略对市场因子的 高,可通过做空指数期货对冲
实践中:
- 通常是策略评估的核心指标(正且显著 = 策略有价值)
- 用于风险管理(高 = 高市场暴露)
- Panel 回归、滚动回归等更复杂形式用于处理时间序列数据
Python 验证
python
import numpy as np
import statsmodels.api as sm
# CAPM 数据
x = np.array([1.8, -0.5, 2.0, 1.0, 0.7])
y = np.array([2.5, -1.0, 3.0, 0.5, 1.0])
# OLS 回归
X = sm.add_constant(x) # 添加截距项
model = sm.OLS(y, X).fit()
print(model.summary())
# 验证手算
print(f"\n手算验证:")
print(f"β = {model.params[1]:.4f}")
print(f"α = {model.params[0]:.4f}")
print(f"R² = {model.rsquared:.4f}")
print(f"t(β) = {model.tvalues[1]:.4f}")
print(f"p(α) = {model.pvalues[0]:.4f}")小结
| 概念 | 公式 | 量化含义 |
|---|---|---|
| 风险暴露(因子载荷) | ||
| 超额收益(技能 vs 运气) | ||
| 因子的解释力 | ||
| 因子暴露估计的精度 | ||
| VIF | 多重共线性程度 |
下一步:继续学习 4.5 时间序列分析——自相关、平稳性与 AR 模型。