第四章:传统预测模型

好,咱们进入正题。这一章我打算聊聊那些「老派但管用」的模型。你可能会问:都什么年代了,还学ARIMA、GARCH这些?

嗯,我理解你的想法。但说实话,我在量化交易这行摸爬滚打这么多年,见过太多人一上来就上LSTM、Transformer,结果连数据的基本特性都没搞清楚。传统模型就像基本功——你练不好扎马步,就别想打醉拳。

4.1 ARIMA模型:时间序列的「老大哥」

ARIMA,全称是自回归积分滑动平均模型。名字挺唬人,其实逻辑很简单:用过去的数据预测未来的数据。

我个人习惯把ARIMA拆成三部分来看:

  • AR(自回归):用过去几天的值预测今天。比如昨天IV是20%,今天可能也是20%附近。
  • I(差分):让数据变平稳。隐含波动率经常有趋势,差分就是去掉这个趋势。
  • MA(滑动平均):用过去的预测误差来修正当前预测。

我在项目中遇到过一个问题:直接用原始IV数据跑ARIMA,结果惨不忍睹。后来发现,IV数据有明显的「均值回复」特性,必须先做差分处理。

核心要点:ARIMA的三个参数(p,d,q)怎么选?

  • p:看自相关图(ACF),拖尾则选AR
  • d:做单位根检验(ADF),不平稳就差分
  • q:看偏自相关图(PACF),拖尾则选MA
# 我常用的ARIMA建模流程
from statsmodels.tsa.arima.model import ARIMA
import pmdarima as pm

# 自动搜索最优参数
model = pm.auto_arima(
    iv_data, 
    start_p=1, start_q=1,
    max_p=5, max_q=5,
    seasonal=False,
    trace=True
)
print(model.summary())

避坑指南:我曾经用auto_arima直接跑全量数据,结果跑了半小时没出结果。后来发现数据量太大,先做了降采样,每5分钟取一个点,速度就快多了。

4.2 GARCH模型:波动率的「情绪捕捉器」

ARIMA有个致命弱点:它假设方差是恒定的。但隐含波动率这东西,说白了就是市场的「恐慌指数」——它会聚集,会爆发,也会突然消失。

GARCH模型就是专门干这个的。它不仅能预测均值,还能预测方差的变化。

你想想看,当市场出现黑天鹅时,IV会瞬间飙升。ARIMA根本反应不过来,但GARCH可以,因为它把「过去的波动」也当作输入。

from arch import arch_model

# 构建GARCH(1,1)模型
model = arch_model(
    iv_returns,  # 注意:这里用收益率,不是原始IV
    vol='Garch', 
    p=1, 
    q=1
)
results = model.fit()
print(results.summary())

注意:GARCH模型对异常值非常敏感。我建议在建模前先做一次异常值检测,把那些超过3倍标准差的数据点处理掉。否则模型会「过度学习」这些极端事件,导致正常行情下预测偏差很大。

我记得有一次做期权套利策略,用GARCH预测的IV作为开仓信号。结果发现,GARCH在低波动环境下表现很好,但一旦市场出现跳空,它的预测就会滞后。后来我加了「跳跃项」才解决这个问题。

4.3 HAR-RV模型:实战派的「三板斧」

HAR-RV模型是我个人比较偏爱的。为什么?因为它简单、直观、而且效果不差。

HAR的全称是Heterogeneous Autoregressive,中文叫「异质自回归模型」。名字很学术,但思想很朴素:

  • 短期交易者关注过去1天的波动
  • 中期交易者关注过去1周的波动
  • 长期交易者关注过去1个月的波动

说白了,就是把不同时间尺度上的波动信息揉在一起,做一个线性回归。

# HAR-RV模型的实现
import numpy as np
from sklearn.linear_model import LinearRegression

def har_rv_features(rv, periods=[1, 5, 22]):
    """构建HAR特征"""
    features = []
    for p in periods:
        # 计算滚动平均
        feat = np.concatenate([
            np.full(p-1, np.nan),
            np.convolve(rv, np.ones(p)/p, mode='valid')
        ])
        features.append(feat)
    return np.column_stack(features)

# 建模
X = har_rv_features(realized_vol)
y = realized_vol[1:]  # 预测下一期
model = LinearRegression()
model.fit(X[:-1], y)

实战经验:HAR-RV模型在股指期权上的表现优于个股期权。我猜是因为股指的波动结构更「规整」,而个股容易受公司事件影响,导致波动模式不稳定。

4.4 模型对比与评估

好了,三个模型都介绍完了。你可能会问:到底哪个最好?

我的答案是:看场景。

评估维度 ARIMA GARCH HAR-RV
预测精度(短期) ★★☆☆☆ ★★★★☆ ★★★★★
预测精度(长期) ★★★☆☆ ★★☆☆☆ ★★★★☆
计算速度 ★★★★★ ★★★☆☆ ★★★★★
对异常值的鲁棒性 ★★☆☆☆ ★★☆☆☆ ★★★★☆
可解释性 ★★★★☆ ★★★☆☆ ★★★★★

我个人习惯用这样的评估流程:

  1. 回测:用过去3年的数据做滚动预测,看RMSE和MAE
  2. 压力测试:专门挑出2020年3月(新冠暴跌)和2022年(加息周期)来测试
  3. 经济意义检验:预测的IV是否合理?有没有出现负值或超过100%的荒谬结果?

一个小技巧:我经常把三个模型的预测结果做一个「集成」。比如取中位数,或者用最近一个月的表现做加权平均。效果往往比单个模型好10%-15%。

4.5 本章知识体系

下面这张图是我梳理的本章核心逻辑,你可以对照着回顾一下:

传统IV预测模型知识体系 隐含波动率预测 ARIMA模型 GARCH模型 HAR-RV模型 自回归(AR) 差分(I) 滑动平均(MA) 波动聚集 条件异方差 杠杆效应 日度波动 周度波动 月度波动 评估:RMSE / MAE / 压力测试 / 经济意义

这张图把三个模型的核心思想和评估方法串起来了。你可以看到,ARIMA偏重时间序列的线性结构,GARCH关注波动率的动态变化,而HAR-RV则从多时间尺度切入。评估时不能只看单一指标,要结合回测、压力测试和经济意义综合判断。


公众号:蓝海资料掘金营,微信deep3321