3. ARCH模型原理:从条件异方差到参数估计
好,咱们今天来聊聊ARCH模型。说实话,我刚入行那会儿,看到“异方差”三个字就头大。但后来在实际项目中吃过亏——用普通模型预测股票波动率,结果惨不忍睹。嗯,今天我就把这块硬骨头给你啃明白。
3.1 条件异方差:波动率为什么会“扎堆”?
先问个问题:你观察过股票收益率吗?有没有发现一个现象——
- 大涨大跌之后,往往跟着更大的波动
- 风平浪静的时候,市场也相对安静
这就是波动率聚集效应。说白了,大的变化倾向于引发更大的变化。
传统的线性模型(比如ARMA)假设方差是常数。但金融数据显然不满足这个假设。我当年做期权定价时,用常数方差模型算出的VaR,回测时直接被打脸——市场剧烈波动时,模型完全低估了风险。
核心概念:条件异方差是指,给定过去信息,当前收益率的方差是随时间变化的。用数学语言说:
Var(rt | rt-1, rt-2, ...) ≠ 常数
3.2 ARCH(q)模型:让方差“动”起来
1982年,Robert Engle提出了ARCH模型。他的想法很直接:用过去的残差平方来预测当前的方差。
模型长这样:
rt = μ + εt
εt = σt · zt,其中 zt ~ N(0,1)
σt² = α0 + α1εt-1² + α2εt-2² + ... + αqεt-q²
我来拆解一下:
- rt:当前收益率
- μ:均值方程(通常是个常数或ARMA)
- εt:残差项,也就是“意外冲击”
- σt²:条件方差,它由过去q期的残差平方决定
- α0 > 0,αi ≥ 0:保证方差为正
我的经验:q值一般取1~3就够了。我见过有人硬上ARCH(10),结果参数估计不稳定,预测效果反而更差。记住:简单模型往往更可靠。
3.3 参数估计:最大似然法的实战细节
估计ARCH模型,最常用的是最大似然估计(MLE)。为什么?因为OLS在这里不好使——残差平方之间相关,违反了OLS的基本假设。
似然函数长这样:
L = ∏ (1 / √(2πσt²)) · exp(-εt² / (2σt²))
取对数后:
log L = -½ ∑ [log(2π) + log(σt²) + εt² / σt²]
实际估计时,我习惯用Python的arch库。给你看个例子:
import numpy as np
import pandas as pd
from arch import arch_model
# 模拟数据
np.random.seed(42)
n = 1000
returns = np.random.normal(0, 1, n) * np.sqrt(0.1 + 0.8 * np.random.chisquare(1, n))
# 拟合ARCH(1)模型
model = arch_model(returns, vol='ARCH', p=1)
result = model.fit()
print(result.summary())
输出结果里,你会看到:
- alpha[1]:就是α₁,衡量过去冲击对当前方差的影响
- omega:就是α₀,基础方差水平
- Log Likelihood:对数似然值,越大越好
避坑指南:我曾经在估计ARCH模型时,发现alpha[1]的p值很大(不显著)。后来检查发现,是因为数据中存在异常值。建议你在建模前先做异常值处理,否则估计结果会严重偏误。
3.4 检验方法:如何判断数据需要ARCH?
不是所有数据都适合用ARCH模型。在建模前,我们需要先做ARCH效应检验。
最常用的是拉格朗日乘子检验(LM test),也叫Engle's ARCH test。步骤很简单:
- 先拟合一个均值模型(比如ARMA),得到残差序列
- 对残差平方做自回归:εt² = β₀ + β₁εt-1² + ... + βqεt-q² + ut
- 检验所有β系数是否同时为0
Python实现:
from statsmodels.stats.diagnostic import het_arch
# 假设residuals是均值模型的残差
stat, p_value, _, _ = het_arch(residuals, nlags=5)
print(f'LM统计量: {stat:.4f}')
print(f'p值: {p_value:.4f}')
if p_value < 0.05:
print('存在显著的ARCH效应')
else:
print('没有足够的证据表明存在ARCH效应')
判断标准:p值小于0.05,说明数据存在条件异方差,适合用ARCH模型。反之,用普通模型就够了。
3.5 知识体系总览
下面这张图,把ARCH模型的整个逻辑串起来了:
3.6 实战中的几个要点
最后,分享几个我在项目中积累的经验:
| 要点 | 说明 | 我的建议 |
|---|---|---|
| 阶数选择 | q值不宜过大 | 先用AIC/BIC准则,q一般不超过5 |
| 数据频率 | 日频数据效果最好 | 周频或月频的ARCH效应往往不显著 |
| 参数约束 | α₀>0, αᵢ≥0 | 如果估计出负值,说明模型设定有问题 |
| 模型诊断 | 检查残差是否还有ARCH效应 | 对标准化残差再做一次LM检验 |
一个小技巧:我习惯在估计ARCH模型后,画一下条件方差序列。如果条件方差看起来跟实际波动率走势吻合,说明模型抓住了主要特征。如果条件方差太平滑,可能需要考虑更高阶的模型。
好了,ARCH模型的原理就讲到这里。说白了,它就是让方差“活”起来——用过去的冲击来预测未来的波动。下一节我们会看到,ARCH模型有个“亲戚”叫GARCH,它更强大,也更常用。但基础打牢了,后面就顺了。
公众号:蓝海资料掘金营,微信deep3321