3. 金融时序建模入门

在金融时序分析中,价格、收益率、波动率、成交量与宏观变量往往同时具有趋势性、自相关、异方差和跨变量联动等特征。ARIMA、GARCH、VAR 是三类最常被引用的经典模型,它们分别解决“均值动态”“波动聚集”“多变量联动”三个核心问题。理解它们的原理与边界,是后续讨论模型漂移与重训策略的前提。

一、核心原理:三类模型各管什么

ARIMA(自回归积分滑动平均)面向单变量均值建模。AR 项用历史值解释当前值,MA 项用历史误差修正当前值,I 项通过差分把非平稳序列转为平稳序列。其一般形式可写为 ARIMA(p,d,q),其中 p 为自回归阶数,d 为差分次数,q 为滑动平均阶数。金融收益率通常 d=0 或 1,价格序列则常需一阶差分。

GARCH(广义自回归条件异方差)面向波动率建模。金融收益率的“波动聚集”现象——大波动后常跟大波动、小波动后常跟小波动——正是 GARCH 的用武之地。GARCH(p,q) 用过去的残差平方和过去的条件方差共同解释当前方差。实践中 GARCH(1,1) 已能覆盖大量场景,常与 ARIMA 组合成 ARIMA-GARCH 两阶段模型。

VAR(向量自回归)面向多变量系统。它把多个时间序列同时作为内生变量,用所有变量的滞后项共同解释当前值。VAR 不依赖严格的经济理论约束,适合捕捉利率、汇率、股指、商品价格之间的动态传导,也常配合格兰杰因果、脉冲响应与方差分解使用。

三类经典模型:建模对象与输出对比 ARIMA 对象:单变量均值 AR(p):历史值自回归 I(d):差分平稳化 MA(q):误差滑动平均 输出:条件均值预测 GARCH 对象:条件方差/波动率 残差平方:冲击项 历史方差:记忆项 GARCH(1,1) 常用基线 输出:波动率与风险区间 VAR 对象:多变量联合动态 多变量滞后项 脉冲响应分析 方差分解 输出:跨变量传导路径

二、方法流程:从数据到可用模型

三类模型的建模流程有共性,也有差异。共性在于:先明确预测目标,再做平稳性与白噪声检验,然后定阶、估计、诊断,最后滚动评估。差异在于:ARIMA 关注均值残差是否白噪声,GARCH 关注残差平方是否仍有自相关,VAR 关注滞后阶数与变量平稳性。

  1. 数据准备:统一频率、处理缺失与停牌、对齐交易日,价格转对数收益率。
  2. 平稳性检验:ADF、KPSS 判断是否需要差分;VAR 要求各变量平稳或存在协整。
  3. 模型识别:ARIMA 看 ACF/PACF 或 AIC/BIC 定阶;GARCH 先拟合均值方程再检验 ARCH 效应;VAR 用 AIC/BIC/HQ 选滞后阶数。
  4. 参数估计:ARIMA 常用 MLE,GARCH 用 MLE 或 QMLE,VAR 用 OLS 逐方程估计。
  5. 诊断检验:Ljung-Box 检验残差自相关,ARCH-LM 检验异方差,Jarque-Bera 检验正态性。
  6. 滚动评估:用 walk-forward 方式在样本外比较 MAE、RMSE、VaR 回测等指标。
# 以 Python statsmodels 为例的 ARIMA-GARCH 两阶段骨架
from statsmodels.tsa.arima.model import ARIMA
from arch import arch_model

# 第一阶段:ARIMA 拟合均值
arima_fit = ARIMA(ret, order=(1, 0, 1)).fit()
resid = arima_fit.resid

# 第二阶段:对残差拟合 GARCH(1,1)
garch_fit = arch_model(resid, vol='Garch', p=1, q=1).fit(disp='off')
print(garch_fit.summary())

# VAR 多变量示例
from statsmodels.tsa.api import VAR
var_fit = VAR(df[['ret_a', 'ret_b', 'rate']]).fit(maxlags=5, ic='aic')
print(var_fit.summary())

三、适用场景与选型清单

模型没有绝对优劣,只有是否匹配任务。下面这张清单可作为快速选型参考。

模型 核心对象 典型场景 关键前提 常见输出
ARIMA 单变量条件均值 收益率方向预测、价差均值回归 差分后平稳,残差近似白噪声 点预测与置信区间
GARCH 条件方差 波动率预测、VaR、期权定价 存在 ARCH 效应,方差非负 波动率路径、风险价值
VAR 多变量联合动态 宏观传导、跨资产联动、政策冲击 变量平稳或协整,滞后阶数合理 脉冲响应、方差分解
实操建议:先用 ARIMA 或 VAR 处理均值,再对残差做 ARCH-LM 检验;若显著,再叠加 GARCH。这样既避免盲目堆模型,也便于定位漂移来源。

四、误区与复盘:入门阶段最容易踩的坑

误区一:把价格直接喂给 ARIMA。价格常非平稳,直接建模容易得到虚假高 R²。应先做 ADF 检验,必要时差分或改用对数收益率。

误区二:忽略 GARCH 的均值方程。GARCH 只解释方差,若均值存在自相关,应先拟合 ARIMA 再对残差建模,否则波动率估计会被均值结构污染。

误区三:VAR 滞后阶数越大越好。阶数过大会导致参数爆炸、过拟合,样本外反而变差。应结合 AIC/BIC 与自由度约束,并检查残差是否白噪声。

误区四:只做一次训练就上线。金融数据分布会随政策、流动性、市场结构变化而漂移。ARIMA 的系数、GARCH 的波动率参数、VAR 的传导关系都可能失效。入门阶段就应建立滚动重估与监控意识,例如固定窗口长度、按季度或按波动率阈值触发重训。

复盘要点:模型诊断不通过时,不要急于换更复杂的模型。先检查数据频率对齐、缺失值处理、异常值截尾、差分阶数与样本区间。多数“模型不灵”其实是数据与流程问题。