波动率是金融衍生品定价与风险管理的核心。现代波动率模型主要分为三大流派:ARCH模型族(确定性的方差演化)、随机波动率模型(引入额外随机过程)以及机器学习方法(数据驱动的非线性模式)。以下从原理、代表模型、优缺点及适用场景进行深度对比。
条件方差表示为过去残差平方的线性组合:
σ²t = α₀ + α₁ε²t-1 + … + αqε²t-q。
能捕捉波动聚集,但需要较多滞后阶数。
引入条件方差自回归项:σ²t = ω + α ε²t-1 + β σ²t-1。
简洁高效,是业界基准模型。但无法刻画杠杆效应。
对数条件方差,允许非对称响应(杠杆效应)。
无需参数正约束,能捕捉好消息/坏消息的不对称冲击。
通过哑变量区分正负残差,直接建模非对称性。
在股票指数中表现优异,是实证常用模型。
将波动率本身视为一个潜在随机过程,通常使用对数正态或OU过程。
yt = σt εt, ln σ²t = μ + φ (ln σ²t-1 − μ) + ηt
两个独立噪声项,灵活性高。
允许收益与波动冲击相关(ρ < 0),捕捉杠杆效应。估计通常需要粒子滤波或MCMC。
引入多个波动率因子,适合刻画不同时间尺度波动成分(短期+长期)。
利用深度神经网络、树模型等从历史数据中学习波动率模式,无需强假设。
循环神经网络,捕捉长程依赖。输入订单流、收益率、成交量等,输出波动率预测。
基于特征工程(技术指标、波动率历史分位)的集成方法,可解释性较好。
近年用于波动率预测,并行处理时间序列,捕捉全局依赖。但数据需求大。
| 维度 | ARCH模型族 | 随机波动率 (SV) | 机器学习 |
|---|---|---|---|
| 理论基础 | 条件方差确定性函数 | 潜在随机过程 | 数据驱动 / 函数逼近 |
| 参数估计 | 极大似然 (QMLE) | MCMC / 粒子滤波 / SMC | 梯度下降 / 贝叶斯优化 |
| 杠杆效应 | EGARCH / GJR 可处理 | 通过相关系数ρ自然引入 | 需特征设计或网络结构 |
| 长记忆性 | FIGARCH / HYGARCH | 长记忆SV (ARFIMA) | LSTM / Transformer可捕获 |
| 计算效率 | 高 (秒级) | 中低 (分钟~小时) | 中 (训练耗时, 推理快) |
| 可解释性 | 高 (参数含义明确) | 中 (潜在波动率可解释) | 低 (需SHAP等工具) |
| 典型应用 | 风险度量、对冲、VaR | 期权定价、衍生品 | 高频预测、另类数据 |
from arch import arch_model # 拟合 GARCH(1,1) model = arch_model(returns, vol='Garch', p=1, q=1) res = model.fit(update_freq=0) print(res.params) # 预测波动率 forecasts = res.forecast(horizon=5)
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense model = Sequential([ LSTM(64, input_shape=(60, 5), return_sequences=True), LSTM(32), Dense(1, activation='softplus') ]) model.compile(optimizer='adam', loss='mse') # 假设 X_train, y_train 已准备 model.fit(X_train, y_train, epochs=20, batch_size=64)