第二十二章:信息与量化策略:因子投资、统计套利、机器学习预测

聊到量化策略,很多人第一反应就是“写代码、跑回测、躺着赚钱”。嗯,现实没那么美好。我做了这么多年量化,最大的体会是——信息才是驱动价格的核心燃料。没有信息,再漂亮的数学模型也只是空中楼阁。

这一章,我们聊聊三种主流的量化策略范式:因子投资、统计套利、机器学习预测。它们分别代表了“用逻辑解释信息”、“用统计挖掘信息”、“用算法逼近信息”三种思路。

一、因子投资:最朴素的“信息分类器”

因子投资,说白了就是找规律。你发现“市盈率低的股票长期跑赢市场”,这就是一个因子。你发现“上个月涨得多的股票下个月容易跌”,这也是一个因子。

我个人习惯把因子分成三类:

  • 基本面因子:PE、PB、ROE、营收增速等。这些信息来自财报,更新慢但逻辑硬。
  • 技术面因子:动量、反转、波动率、成交量等。这些信息来自交易数据,更新快但噪音多。
  • 另类因子:新闻情绪、卫星图像、供应链数据等。这些信息来自非传统渠道,挖掘空间大。

核心逻辑:因子投资假设市场存在系统性定价偏差。通过暴露于某些因子,你可以获得超额收益。

举个例子,我曾在项目中测试过一个简单的“低波动率因子”。代码长这样:

import pandas as pd
import numpy as np

# 假设df包含股票日收益率数据
def low_vol_factor(df, lookback=60):
    # 计算过去60日波动率
    vol = df.pct_change().rolling(lookback).std()
    # 选波动率最低的20%股票
    low_vol_stocks = vol.rank(axis=1, pct=True) <= 0.2
    return low_vol_stocks

# 回测框架(简化版)
def backtest_factor(df, factor_signal):
    # 假设每月调仓
    monthly_returns = df.resample('M').last().pct_change()
    portfolio_returns = (factor_signal.shift(1) * monthly_returns).mean(axis=1)
    return portfolio_returns.cumsum()

你想想看,这个策略的逻辑是什么?低波动股票往往被机构投资者忽视,散户又喜欢追高波动。这种“信息不对称”就创造了机会。

避坑指南:我曾经在回测中过度优化因子参数,结果实盘一塌糊涂。记住,因子投资最怕“数据挖掘偏差”——你看到的规律可能只是随机噪声。

二、统计套利:从“相关性”中找机会

统计套利和因子投资不同。因子投资是“找特征”,统计套利是“找关系”。

最经典的例子就是配对交易。两只同行业的股票,比如可口可乐和百事可乐,它们的价格走势长期看是高度相关的。如果某天价差突然拉大,你就可以做多便宜的、做空贵的,等价差回归时平仓获利。

为什么会这样?因为信息是流动的。当一条行业新闻出来,两只股票的反应速度可能不同。这种“信息传导延迟”就产生了套利空间。

我给大家看一个简单的协整检验代码:

import statsmodels.api as sm

def cointegration_test(price_a, price_b):
    # 对两个价格序列做OLS回归
    model = sm.OLS(price_a, sm.add_constant(price_b))
    results = model.fit()
    residuals = results.resid
    
    # 对残差做ADF检验
    adf_stat, p_value, _, _, critical_values, _ = sm.tsa.stattools.adfuller(residuals)
    
    return p_value < 0.05  # p值小于0.05说明存在协整关系

# 使用示例
# if cointegration_test(ko_price, pep_price):
#     print("存在套利机会")

嗯,这里要注意:统计套利不是无风险的。我记得有一次,我做的配对交易突然崩了——因为两家公司出了并购消息,基本面发生了根本变化。价差再也回不来了。

警告:统计套利依赖“均值回归”假设。如果结构性变化发生(比如行业政策突变、公司重组),这个假设就失效了。止损纪律比模型本身更重要。

三、机器学习预测:用算法“逼近”信息

到了机器学习这里,思路又不一样了。我们不再手动定义因子或关系,而是让算法自己去“学习”信息中的模式。

我个人觉得,机器学习在量化中的最大价值不是“预测涨跌”,而是“特征提取”。比如用LSTM处理时间序列,用Transformer处理新闻文本,用图神经网络处理产业链关系。

一个简单的随机森林示例:

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

# 假设X是特征矩阵(包含各种因子),y是未来5日涨跌标签
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

model = RandomForestClassifier(n_estimators=100, max_depth=5)
model.fit(X_train, y_train)

# 特征重要性
importance = pd.DataFrame({
    'feature': feature_names,
    'importance': model.feature_importances_
}).sort_values('importance', ascending=False)

print(importance.head(10))

你可能会问:机器学习比传统因子投资强在哪?答案是非线性关系。传统因子假设线性关系(比如PE越低越好),但现实中很多信息是交互作用的——比如“低PE+高动量”的组合效果可能远好于单独使用。

关键点:机器学习不是万能药。它容易过拟合,尤其在高维数据中。我见过太多人把1000个特征扔进神经网络,结果回测曲线漂亮得像假的一样——嗯,它确实是假的。

四、三种策略的对比与融合

说了这么多,我们来做个总结。三种策略各有优劣:

策略类型 信息利用方式 优势 劣势
因子投资 逻辑驱动 可解释性强,稳健 容易拥挤,收益递减
统计套利 统计关系 市场中性,容量大 依赖均值回归假设
机器学习 数据驱动 捕捉非线性,适应性强 过拟合风险高,黑箱

我个人习惯的做法是融合使用。比如用因子投资筛选股票池,用统计套利做配对交易,用机器学习优化进出场时机。这样既能利用各自的优势,又能分散风险。

下面这张图展示了三种策略在信息处理流程中的位置:

信息驱动价格:三种量化策略框架 原始信息 因子投资 逻辑驱动 · 可解释 统计套利 关系驱动 · 市场中性 机器学习 数据驱动 · 非线性 因子暴露 · 多空组合 价差回归 · 配对交易 预测信号 · 动态权重 交易决策

从这张图可以看得很清楚:信息从源头出发,经过不同的处理框架,最终汇聚成交易决策。没有哪条路是绝对正确的,关键看你的数据、算力和风险偏好。

我的建议:刚开始做量化,先从因子投资入手。逻辑清晰,容易debug。等积累了一定经验,再尝试统计套利和机器学习。别一上来就搞深度学习——我见过太多人把简单问题复杂化了。

最后说一句:无论用哪种策略,信息质量永远比模型复杂度重要。你用一个简单的线性模型处理干净的数据,效果可能好过一个复杂的神经网络处理脏数据。这是我在无数次踩坑后得出的结论。

交易系统化学习资料 微信Strategy888888