3. 量化模型概览

在量化交易中,时间序列建模的核心目标是利用历史价格、成交量、宏观指标等有序数据,预测未来收益、波动率或风险状态。不同模型对数据规律、非线性关系与计算资源的要求差异巨大。本节将量化模型分为统计模型、机器学习模型与深度学习模型三大类,梳理其原理、适用场景与在交叉验证中的关键差异,为后续实战打下选型基础。

一、核心原理:三类模型如何理解时间序列

统计模型假设时间序列由可解释的随机过程生成,强调平稳性、自相关与误差结构。典型代表包括ARIMA、GARCH、VAR与状态空间模型。它们参数少、可解释性强,适合捕捉线性趋势、季节性与波动聚集,但对非线性与高维交互的刻画能力有限。

机器学习模型将时间序列转化为监督学习问题,通过特征工程构造滞后项、滚动统计量、技术指标等,再使用树模型、支持向量机或集成方法进行预测。其优势在于自动捕捉非线性关系与特征交互,对缺失值和异常值相对稳健,但依赖特征质量,且容易在时序数据上因随机划分而泄露未来信息。

深度学习模型直接对序列结构建模,如RNN、LSTM、GRU、TCN与Transformer。它们能端到端学习长程依赖与复杂模式,适合高频、多因子或跨资产场景,但需要大量数据、算力与调参经验,且黑箱特性增加了过拟合与解释难度。

三类量化模型在时间序列中的定位与关系 统计模型 ARIMA · GARCH · VAR 假设:线性 + 平稳 + 误差结构 优势:可解释、参数少、稳定 局限:非线性弱、高维难扩展 典型场景:波动率预测、宏观因子 交叉验证:滚动窗口 + 信息准则 数据需求:中低 机器学习模型 XGBoost · 随机森林 · SVM 假设:特征可构造 + 非线性映射 优势:非线性强、特征交互好 局限:依赖特征、易泄露未来 典型场景:多因子选股、信号分类 交叉验证:Purged K-Fold + 时序切分 数据需求:中高 深度学习模型 LSTM · TCN · Transformer 假设:端到端 + 长程依赖 优势:自动特征、复杂模式强 局限:数据饥渴、黑箱、调参难 典型场景:高频、多资产、另类数据 交叉验证:时序嵌套 + 早停验证 数据需求:高 特征增强 表示学习

二、方法流程:从数据到模型评估的通用链路

无论选择哪类模型,量化时间序列建模都遵循一条通用流程。理解这条链路,有助于在交叉验证中正确划分数据、构造特征与评估模型。

  1. 数据获取与清洗:对齐时间戳、处理缺失值、剔除异常价格,确保序列按时间严格排序。
  2. 平稳性检验与变换:使用ADF、KPSS检验判断平稳性,必要时进行差分、对数变换或波动率标准化。
  3. 特征工程:构造滞后收益、滚动均值/标准差、动量、换手率、宏观因子等。注意所有特征只能使用当前及过去信息。
  4. 模型训练与验证:采用滚动窗口或扩展窗口交叉验证,避免随机K-Fold造成未来信息泄露。
  5. 评估与回测:使用IC、RankIC、夏普比率、最大回撤等指标,结合交易成本进行样本外回测。

关键原则:时间序列交叉验证必须保证“训练集时间 < 验证集时间 < 测试集时间”。任何跨越时间边界的随机打乱都会引入前视偏差,使模型在实盘中失效。

三、案例/场景:同一预测任务下的模型对比

假设我们要预测某股票未来5日收益率方向,数据为2018—2024年日频行情。三类模型的典型配置与表现差异如下表所示。

维度 统计模型(ARIMA-GARCH) 机器学习(XGBoost) 深度学习(LSTM)
输入特征 收益率序列、波动率 滞后收益、技术指标、因子暴露 原始序列、多因子面板
训练数据量 约1500条 约1500条 × 30特征 约1500条 × 60时间步
交叉验证方式 滚动窗口 + AIC/BIC Purged K-Fold + embargo 时序嵌套 + 早停
样本外IC均值 0.021 0.038 0.035
训练耗时 秒级 分钟级 小时级(GPU)
可解释性 高 中(特征重要性) 低
过拟合风险 低 中 高

从案例可见,机器学习模型在中等数据量下往往能取得较好的IC表现,统计模型胜在稳定与可解释,深度学习则需要更丰富的数据与更谨慎的正则化。实际选型应结合数据规模、算力预算与策略容量综合判断。

四、误区与复盘:交叉验证中的常见陷阱

误区一:随机K-Fold用于时间序列。随机划分会让模型在训练时“看到”未来数据,导致验证指标虚高。正确做法是使用滚动窗口、扩展窗口或Purged K-Fold。

误区二:特征构造引入未来信息。例如使用全样本均值标准化、未来收益率计算标签、或未对齐财报公布时间。所有特征必须严格基于历史信息。

误区三:忽略交易成本与滑点。样本外IC高不代表策略盈利。回测必须扣除手续费、冲击成本,并考虑容量限制。

复盘建议:每次建模后记录数据切分方式、特征清单、模型参数与样本外表现。对比不同模型的失败案例,分析是数据泄露、过拟合还是市场结构变化所致。只有把交叉验证做扎实,量化模型才能真正服务于实盘决策。

# 时序交叉验证伪代码示例
from sklearn.model_selection import TimeSeriesSplit

tscv = TimeSeriesSplit(n_splits=5, test_size=60)
for train_idx, val_idx in tscv.split(X):
    X_train, X_val = X[train_idx], X[val_idx]
    y_train, y_val = y[train_idx], y[val_idx]
    model.fit(X_train, y_train)
    score = model.score(X_val, y_val)
    print(f"验证集得分: {score:.4f}")

掌握三类模型的定位与交叉验证要点后,下一步需要深入数据切分与特征工程的具体实现,才能把模型能力转化为稳健的量化策略。