第四章:传统预测模型
好,咱们进入正题。这一章我打算聊聊那些「老派但管用」的模型。你可能会问:都什么年代了,还学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 |
|---|---|---|---|
| 预测精度(短期) | ★★☆☆☆ | ★★★★☆ | ★★★★★ |
| 预测精度(长期) | ★★★☆☆ | ★★☆☆☆ | ★★★★☆ |
| 计算速度 | ★★★★★ | ★★★☆☆ | ★★★★★ |
| 对异常值的鲁棒性 | ★★☆☆☆ | ★★☆☆☆ | ★★★★☆ |
| 可解释性 | ★★★★☆ | ★★★☆☆ | ★★★★★ |
我个人习惯用这样的评估流程:
- 回测:用过去3年的数据做滚动预测,看RMSE和MAE
- 压力测试:专门挑出2020年3月(新冠暴跌)和2022年(加息周期)来测试
- 经济意义检验:预测的IV是否合理?有没有出现负值或超过100%的荒谬结果?
一个小技巧:我经常把三个模型的预测结果做一个「集成」。比如取中位数,或者用最近一个月的表现做加权平均。效果往往比单个模型好10%-15%。
4.5 本章知识体系
下面这张图是我梳理的本章核心逻辑,你可以对照着回顾一下:
这张图把三个模型的核心思想和评估方法串起来了。你可以看到,ARIMA偏重时间序列的线性结构,GARCH关注波动率的动态变化,而HAR-RV则从多时间尺度切入。评估时不能只看单一指标,要结合回测、压力测试和经济意义综合判断。
公众号:蓝海资料掘金营,微信deep3321