经典方法的困境:高维数据下的失灵
传统的线性模型(如Fama-MacBeth回归)是实证金融的基石,但在面对成百上千个潜在预测变量时,会遇到两大障碍:
1. 多重共线性
许多预测变量高度相关(如不同类型的动量或价值指标),导致模型估计不稳定,系数的经济意义难以解释。
2. 过拟合 (Overfitting)
模型在样本内表现完美,因为它学习到了数据中的“噪音”而非真实的“信号”,导致样本外预测能力极差。
过拟合的直观理解
“过拟合”就像一个学生,把练习册上的所有题目和答案都背了下来,但在真正的考试中遇到新题目时却一筹莫展。
机器学习的对策(1):正则化
核心直觉:对模型的复杂性进行“惩罚”,强迫它只关注最重要的预测变量,从而避免过拟合。
- 代表方法:Lasso回归、岭回归、弹性网 (Elastic Net)。
- 效果:将不重要变量的系数“压缩”到零,实现变量选择和模型简化。
机器学习的对策(2):降维
核心直觉:将大量相关的原始变量合成为少数几个不相关的“超级变量”(即主成分或潜在因子),从而消除多重共线性。
- 代表方法:主成分分析 (PCA)。
- 效果:用少数几个综合因子捕捉原始数据的大部分信息,简化模型。
机器学习的对策(3):处理非线性关系
核心直觉:金融市场的关系往往不是简单的线性关系。机器学习模型,特别是神经网络,具有强大的非线性拟合能力。
里程碑式研究:Gu, Kelly, and Xiu (2020)
Gu, Kelly, and Xiu (2020) 在 Review of Financial Studies 上的论文是该领域的开创性工作。
他们系统性地比较了多种机器学习方法在美国股票收益率预测中的表现,堪称一场机器学习方法在金融预测领域的“奥林匹克竞赛”。
参赛选手包括: - 线性模型:弹性网 (Elastic Net) - 降维模型:主成分回归 (PCR), 偏最小二乘 (PLS) - 非线性模型:回归树, 神经网络 (Neural Networks)
GKX (2020) 的核心发现(1):模型表现
竞赛结果:
- 神经网络表现最佳 🏆
- 在所有模型中,神经网络在样本外预测R²和为投资者带来的经济价值方面都取得了最好的表现。
- 回归树优于线性模型
- 浅层学习优于深层学习
- 一个拥有少量隐藏层的“浅层”神经网络效果最好。金融数据信噪比低,过于复杂的“深度”模型反而容易过拟合。
GKX (2020) 的核心发现(2):重要特征
机器学习模型不仅能预测,还能告诉我们哪些特征最重要。最重要的预测特征大都与我们熟知的“异象”有关:
- 动量 (Momentum)
- 流动性 (Liquidity)
- 风险测度 (Risk Measures)
- 估值比率 (Valuation Ratios)
- 基本面信号 (Fundamental Signals)
- 短期反转 (Short-term Reversal)
这表明机器学习并非“黑箱”,它的发现与传统金融理论高度一致,但能更系统地衡量和利用这些信息。
特例:中国市场的独特性
与成熟的美国市场相比,中国A股市场具有一些显著特征,这可能导致机器学习模型的表现和重要因子的不同。
- 散户主导
- 政府影响
- 中央控制的银行主导金融体系,市场自动修正机制可能受限。
- 卖空限制
- 导致负面信息难以及时反映在股价中,市场定价效率可能较低。
- 信息不对称
相关研究:Leippold, Wang, and Zhou (2021)
这篇论文专门研究了机器学习在中国市场的应用,发现:
- 可预测性更强
- 中国市场的样本外预测R²显著高于美国市场,尤其是在小规模和非国有企业中。
- 流动性是关键
- 散户的影响
- 散户投资者的行为对短期可预测性有正向影响。而长期来看,大盘股和国有企业有更高的可预测性。
相关研究:Freyberger et al. (2020) & Wang et al. (2023)
这些研究进一步证实了机器学习,特别是非线性方法的优势。
- 非线性Lasso的威力
- Freyberger et al. (2020) 在美国市场、Wang et al. (2023) 在中国市场均应用了非线性Lasso方法。
- 共同的结论
- 结果都展示了机器学习在处理高维股票收益预测和捕捉非线性关系方面的巨大潜力与优势。
温故知新:Fama-MacBeth回归
在进入机器学习世界之前,我们必须先理解它的参照物——Fama-MacBeth (FM) 回归。这是一个巧妙的两步法,用于处理面板数据,检验因子模型的有效性。
核心优势:巧妙地处理了股票收益在截面上残差相关性高,但在时间序列上相关性不高的数据特征。
FM回归第一步:时间序列回归
目标:为每个资产 \(i\) 估计其在因子 \(f_t\) 上的暴露 (exposure),即 \(\beta_i\)。
方法:对每一个资产 i,用其整个时间序列的收益率 \(r_{i,t}\) 对同时期的因子收益率 \(f_t\) 进行回归。
\[
\large{r_{i,t} = \alpha_i + \beta_i' f_t + \epsilon_{i,t} \quad \text{for } t=1, ..., T}
\]
- 这个回归对每个股票(或投资组合)单独进行。
- 产出:每个股票的一个(或一组)固定的因子载荷 \(\hat{\beta_i}\)。
FM回归第二步:横截面回归
目标:估计因子 \(f_t\) 在每个时期 \(t\) 的风险溢价 (risk premium),即 \(\lambda_t\)。
方法:在每一个时间点 t,用该时刻所有资产的收益率 \(r_{i,t}\) 对第一步中得到的因子暴露 \(\hat{\beta_i}\) 进行回归。
\[
\large{r_{i,t} = \lambda_t' \hat{\beta_i} + \alpha_{i,t} \quad \text{for } i=1, ..., N}
\]
- 这个回归是在每个时间点进行的。
- 产出:一系列随时间变化的风险溢价估计值 \(\hat{\lambda_t}\)。
FM回归第三步:汇总与检验
目标:得到因子风险溢价的最终估计值,并进行统计检验。
方法:将第二步中得到的每个时期的风险溢价 \(\hat{\lambda_t}\) 取时间序列上的平均值。
\[
\large{\hat{\lambda} = \frac{1}{T} \sum_{t=1}^{T} \hat{\lambda_t}}
\]
统计推断:这个平均值 \(\hat{\lambda}\) 就是该因子最终的风险溢价估计。我们可以计算它的t统计量,来判断这个因子是否具有显著的定价能力。
FM回归的挑战:EIV问题
FM回归的一个核心计量问题是 变量误差 (Errors-in-Variables, EIV)。
- 问题来源:第二步的横截面回归中,使用的自变量 \(\hat{\beta_i}\) 本身是第一步回归的估计值,而不是真实的 \(\beta_i\)。
- 后果:这会导致第二步中对风险溢价 \(\lambda_t\) 的估计出现偏差和不一致性。
- 解决方案:需要使用Shanken (1992) 提出的修正方法来调整标准误,以进行正确的统计推断。
机器学习的切入点:Lasso回归
当面临大量股票特征(预测变量)时,FM回归会因多重共线性而失效。Lasso (Least Absolute Shrinkage and Selection Operator) 回归提供了一个强大的解决方案。
核心思想:在标准的最小二乘法目标函数中,加入一个对系数绝对值之和的惩罚项(即 L1惩罚)。
这使得Lasso在最小化残差的同时,也试图让尽可能多的回归系数精确地等于零。
Lasso回归的目标函数
Lasso通过最小化以下目标函数来求解系数向量 \(g_t\):
\[
\large{\hat{g}_t^{Lasso} = \underset{g}{\arg\min} \underbrace{\frac{1}{N}\sum_{i=1}^{N}(\tilde{r}_{i,t} - z_{i,t-1}'g_t)^2}_{\text{拟合优度:最小化残差平方和}} + \underbrace{\gamma \sum_{j=1}^{K} |g_{j,t}|}_{\text{惩罚项:最小化系数绝对值之和}}}
\]
- \(\gamma\) 是一个超参数,控制惩罚的强度。\(\gamma\) 越大,被压缩到零的系数就越多。
Lasso的魔力:实现稀疏性估计
L1惩罚项的几何形状(菱形)是Lasso实现变量筛选的关键。
- 结果:最终得到的模型只包含少数几个非零系数的变量,这就是一个“稀疏”模型。
Lasso代码示例
下面是一个用Python scikit-learn
实现Lasso回归的简单例子。
# 该代码块用于演示,使用模拟数据
import numpy as np
import pandas as pd
from sklearn.linear_model import Lasso
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
# 1. 创建模拟数据
np.random.seed(42)
n_samples, n_features = 100, 20
X = np.random.randn(n_samples, n_features)
# 假设只有前5个特征是真正重要的
true_coef = np.zeros(n_features)
true_coef[:5] = [5, -4, 3, -2, 1]
y = X @ true_coef + np.random.randn(n_samples) * 2
# 2. 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 3. 训练Lasso模型
# alpha是惩罚强度(λ),alpha越大,稀疏性越强
lasso = Lasso(alpha=1.0)
lasso.fit(X_scaled, y)
# 4. 可视化结果
fig, ax = plt.subplots(figsize=(10, 5))
ax.stem(np.arange(n_features), lasso.coef_, markerfmt='o', basefmt=" ")
ax.plot(np.arange(n_features), true_coef, 'r--', label='True Coefficients')
ax.set_xlabel('特征索引')
ax.set_ylabel('系数大小')
ax.set_title('Lasso回归的系数收缩效果')
ax.legend()
plt.show()
现实的复杂性:非线性关系
如果特征与预期收益之间的关系不是线性的怎么办?例如,规模因子的影响可能在小盘股区间很大,但在大盘股区间逐渐减弱。
我们可以使用 非线性Lasso (或称非参数组Lasso) 来捕捉这种关系。
非线性Lasso的实现方式:基函数展开
核心思想:用一组基函数 (basis functions) \(p_k(z)\) 来近似复杂的非线性函数 \(m_{t,j}(z)\)。
\[
\large{m_{t,j}(z) \approx \sum_{k=1}^{L+2} g_{t,j,k} p_k(z)}
\]
- \(p_k(z)\) 可以是多项式项 (\(1, z, z^2\)),也可以是分段线性的“样条”函数 (splines)。
- 样条函数特别灵活,可以通过在特征取值范围内的几个“节点” (knots)进行拼接,来拟合任意复杂的曲线。
非线性Lasso的目标函数
我们将每个非线性函数 \(m_{t,j}(z)\) 对应的所有基函数系数 \(g_{t,j,k}\) 看作一个“组”。
组Lasso (Group Lasso) 的思想是:要么把整个组的系数都保留,要么把它们全部置为零。
目标函数变为: \[
\large{\hat{g}_t^{NPLasso} = \underset{g}{\arg\min} \sum_{i=1}^{N_t} \left( \tilde{r}_{i,t+1} - \sum_{j=1}^{J} m_{t,j}(z_{i,t,j}) \right)^2 + \lambda \sum_{j=1}^{J} \sqrt{\sum_{k=1}^{L+2} g_{t,j,k}^2}}
\]
- 惩罚项变成了组内系数平方和的平方根之和。如果一个特征 \(j\) 不重要,那么它对应的整个函数 \(m_{t,j}(z)\) 都会被置为零。
Lasso的一致性问题与自适应Lasso
标准的Lasso在变量选择上并不具备一致性 (consistency)。这意味着即使样本量趋于无穷,Lasso也可能无法100%选出正确的模型。
自适应Lasso (Adaptive Lasso) 解决了这个问题。
核心思想:对不同的系数施加不同的惩罚。给那些“看起来”比较重要的变量(即初始估计值较大的系数)较小的惩罚,给那些“看起来”不重要的变量(初始估计值较小的系数)较大的惩罚。
自适应Lasso的实现:两步法
- 第一轮训练:运行一个标准的Lasso(或岭回归)得到初始的系数估计 \(\hat{g}^{(1)}\)。
- 构造权重:根据第一轮的系数估计,为每个变量 \(j\) 构造一个权重 \(w_j = 1 / |\hat{g}_j^{(1)}|^\delta\) (通常 \(\delta=1\) )。
- 第二轮训练:在Lasso的惩罚项中加入这个权重,\(\gamma \sum_{j=1}^{K} w_j |g_{j,t}|\)。
这个简单的两步法可以获得具有一致性的估计结果。
关键步骤:如何选择惩罚参数 \(\lambda\)?
Lasso模型中的惩罚参数 \(\lambda\) 是一个超参数 (hyperparameter),它的选择至关重要:
- \(\lambda\) 太小:惩罚不足,模型退化为OLS,容易过拟合。
- \(\lambda\) 太大:惩罚过度,把所有系数都压缩到0,模型毫无用处。
交叉验证 (Cross-Validation) 是确定最佳超参数的黄金标准。
K折交叉验证 (K-Fold Cross-Validation)
最常用的方法是 K折交叉验证,例如 5折交叉验证。
交叉验证的陷阱:前瞻性偏差
在时间序列数据(如股票收益)中,随机K折交叉验证有一个致命缺陷:前瞻性偏差 (Look-ahead Bias)。
- 问题:随机划分会使得模型在训练时用到“未来”的信息,而去预测“过去”的验证集。
- 后果:这在现实中是不可能的,会导致对模型表现的严重高估。
解决方案:时间序列交叉验证
对于时间序列数据,必须采用一种能保留时间顺序的交叉验证方法,如 扩展窗口法 (Expanding Window)。
这个过程确保了模型始终使用过去的数据来预测未来,符合实际情况。
因子模型的新视角:IPCA
工具变量主成分分析 (IPCA) 是 Kelly, Pruitt, and Su (2019) 提出的一种新的因子模型估计方法。
它巧妙地结合了两种思想:
- 潜在因子模型:承认驱动股票收益的是一些无法直接观测到的潜在风险因子(如PCA)。
- 可观测特征:利用公司层面的可观测特征(如市净率、动量等)作为“工具变量”,来帮助我们识别这些潜在因子。
IPCA的理论设定
IPCA假设股票 \(i\) 在 \(t+1\) 期的收益率 \(x_{it+1}\) 由一个线性因子模型驱动: \[
\large{x_{it+1} = \beta_{it+1}' f_{t+1} + \epsilon_{it+1}}
\]
- \(f_{t+1}\) 是 \(K\) 个未知的潜在因子。
核心创新:IPCA假设时变的因子载荷 \(\beta_{it+1}\) 是由上一期 \(t\) 的可观测公司特征 \(c_{it}\) 线性决定的: \[
\large{\beta_{it+1} = c_{it}' \Gamma_\beta}
\]
- \(\Gamma_\beta\) 是一个 \(L \times K\) 的矩阵,它将 \(L\) 个可观测特征映射到 \(K\) 个潜在因子的载荷上。这是IPCA模型需要估计的核心参数。
IPCA的优势:一个更智能的PCA
- 优势:IPCA利用公司特征作为额外信息,能更稳健地估计出真正驱动收益的因子结构,并能描述因子载荷的动态变化。
IPCA的参数估计
将模型写成向量形式: \[
\large{\mathbf{x}_{t+1} = C_t \Gamma_\beta \mathbf{f}_{t+1} + \mathbf{\epsilon}_{t+1}^*}
\] 目标:选择 \(\Gamma_\beta\) 和因子序列 \(F = \{\mathbf{f}_1, ..., \mathbf{f}_T\}\),来最小化误差平方和: \[
\large{\min_{\Gamma_\beta, F} \sum_{t=1}^{T-1} ||\mathbf{x}_{t+1} - C_t \Gamma_\beta \mathbf{f}_{t+1}||^2}
\]
求解方法:交替最小二乘法 (ALS)
由于目标函数中需要同时估计 \(\Gamma_\beta\) 和 \(\mathbf{f}_{t+1}\),这是一个双线性问题,可以通过交替最小二乘法 (Alternating Least Squares, ALS) 求解。
- 初始化:对 \(\Gamma_\beta\) 进行一个初始猜测。
- 交替迭代:
- 给定 \(\Gamma_\beta\),求解 \(\mathbf{f}_{t+1}\): 对每个时刻 \(t\) 进行OLS回归。
- 给定 \(\mathbf{f}_{t+1}\),求解 \(\Gamma_\beta\): 对所有数据进行OLS回归。
- 终止条件:重复步骤2,直到估计值收敛。
IPCA的实证检验
Kelly et al. (2019) 使用了1962年至2014年的美国股票数据(包含36个特征)来检验IPCA模型的表现。
核心问题:
- 需要多少个潜在因子才能充分解释由特征驱动的预期回报?
- IPCA模型是否能通过资产定价检验?
表3解读:IPCA模型的拟合优度
Total R² |
15.2% |
16.8% |
17.7% |
18.4% |
18.7% |
19.0% |
Pred. R² |
0.76% |
0.75% |
0.75% |
0.74% |
0.74% |
0.72% |
- Total R²: 模型解释的总风险比例。
- Predictive R²: 模型解释的预期回报比例 (更重要)。
核心发现:
- 随着因子数量K增加,总解释能力 (Total R²) 稳步提升。
- 然而,预测R²在K=1时达到最高点。说明对于预测预期收益而言,一个潜在因子可能已经足够。
表3解读:资产定价检验 (Alpha检验)
Alpha检验的原假设是:特征不能预测定价误差。如果p值很小,则拒绝原假设,说明模型解释力不足。
W_α p-value |
0.00 |
0.00 |
0.00 |
0.00 |
2.06% |
52.1% |
核心发现:
- 拒绝少因子模型:当K从1到4时,p值都接近于0,说明1-4个因子的IPCA模型无法解释所有与特征相关的回报。
- 5-6个因子足够:当K=6时,p值为52.1%,完全无法拒绝原假设。
- 结论:一个包含5到6个潜在因子的IPCA模型,基本上可以解释美国股市中由36个公司特征所驱动的全部预期回报。
资产定价的核心:随机贴现因子(SDF)
所有现代理性资产定价模型,都可以归结为一个核心公式:
\[
\large{p_t = E_t[m_{t+1} x_{t+1}]}
\]
- \(p_t\): 资产在 \(t\) 期的价格。
- \(x_{t+1}\): 资产在 \(t+1\) 期的回报(payoff)。
- \(m_{t+1}\): 随机贴现因子 (Stochastic Discount Factor, SDF)。
这个公式告诉我们,一项资产今天的价格,是它未来回报的期望值,但这个期望值是用一个随机的贴现因子 \(m_{t+1}\) 进行“风险调整”后的结果。
SDF的经济学直觉:跨期边际替代率
在标准的消费资本资产定价模型 (CCAPM) 中,SDF等于投资者的跨期边际替代率。
\[
\large{m_{t+1} = \beta \frac{u'(c_{t+1})}{u'(c_t)}}
\]
直觉解读:SDF衡量了投资者在不同经济状态下,对未来一单位财富的主观估值。
SDF与风险溢价的关系
可以证明,任何资产的期望超额收益都满足: \[
\large{E(R) - R_f = -R_f \cdot Cov(m, R)}
\]
这就是风险溢价的来源!
- 一项资产之所以能获得正的风险溢价 (\(E(R) > R_f\)),是因为它的收益率 \(R\) 与SDF \(m\) 负相关。
理解风险溢价的来源
- SDF (m) 在经济不好时值高。
- 风险资产 (R_stock) 在经济不好时,收益率也表现差。
- 因此 \(Cov(m, R_{stock}) < 0\)。
这样的资产无法为投资者提供“雪中送炭”的保障,反而会“雪上加霜”。因此,投资者为了愿意持有这种“顺周期”的风险资产,必然会要求一个正的风险溢价作为补偿。
从SDF到多因子模型
在实证中,我们通常假设SDF可以被一组可观测的定价因子 (pricing factors) \(f\) 线性近似:
\[
\large{m_{t+1} \approx a + b'f_{t+1}}
\]
可以证明,一个线性的SDF模型和一个线性的多因子收益率模型在数学上是等价的。
\[
\large{E(R^i) = \gamma + \lambda'\beta_i}
\]
核心结论:寻找一个能够解释资产收益的多因子模型,等价于寻找一个SDF的近似表达式。这为我们寻找定价因子提供了坚实的理论基础。
线性SDF假设的局限性
到目前为止,我们都假设SDF可以被因子线性近似。但这个假设不一定成立,SDF可能是因子的一个复杂的非线性函数。
我们需要一种方法,在SDF具有非线性结构的假设下,来识别和估计因子的定价能力。
自纠偏机器学习法 (ADML)
自纠偏机器学习 (Automatic Debiased Machine Learning, ADML),由Chernozhukov et al. (2022) 提出,正是为了解决这个问题。
核心思想:
- 允许SDF是因子的一个未知的、一般的非线性函数 \(m_t = H(f_t)\)。
- 使用通用的机器学习方法(如Lasso, 神经网络)来估计模型中的中间量。
- 通过引入一个巧妙构造的影响函数,来纠正由机器学习估计带来的偏差,从而可以对最终的参数进行有效的统计推断。
ADML的核心:双重稳健性
ADML方法具有一个非常理想的性质,称为双重稳健性 (double robust)。
最终估计量的误差,是两个机器学习模型估计误差的乘积。
这意味着,只要这两个机器学习模型中,有一个能够被一致地估计,我们对因子载荷的最终估计就是一致的。
这个性质大大增强了方法的稳健性。
ADML的数值模拟检验
为了验证ADML方法的有效性,研究者进行了蒙特卡洛模拟,比较了ADML估计量和不纠偏的Plug-in估计量。
结论:ADML通过其纠偏机制,成功消除了机器学习带来的偏差,得到了无偏、渐进正态的估计量。
ADML实证发现:中美市场对比
共同点: - 与估值比率、盈利能力、投资相关的因子在两个市场都非常重要。
不同点:
- 动量和反转:在美国市场非常显著,但在中国A股市场不具有显著的增量定价能力。
- 博彩效应:与特质波动率、最大日收益率等相关的“彩票类”因子,在中国市场非常重要,但在美国市场表现较弱。
- 情绪因子:与换手率相关的因子在中国市场起着重要作用,但在美国不显著。
ADML因子张成检验:构建新模型
研究者利用ADML方法,从132个特征中筛选出边际贡献最显著的三个因子,构建了一个新的三因子模型 ADML3: 1. 有形资产 (tan) 2. 净股利支付率 (nopq) 3. 市销率 (spq)
表9解读:ADML3模型表现最佳
ADML3 |
0.23% |
19 |
CH3 |
0.34% |
45 |
CH4 |
0.32% |
34 |
Q5 |
0.24% |
35 |
SY4 |
0.38% |
59 |
FF6 |
0.28% |
48 |
核心发现:
- ADML3表现最优:ADML3模型的平均定价误差最低,无法解释的因子数量也最少。
- 结论:这有力地说明,ADML方法确实能够挑选出具有优越定价能力的因子。