📑 查看全课大纲(第 16 / 20 节)

ARCH / GARCH 模型及其衍生

约 67 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

异方差的性质与条件异方差模型

小象实战讲义 · 时间序列分析

在时间序列建模中,我们通常假设模型的残差项满足零均值、无自相关和同方差(方差恒定)的经典假设。然而,实际数据,尤其是金融时间序列,常常违背同方差假设,表现出异方差特性——残差的方差随时间变化。忽视异方差会导致参数显著性检验失效、模型预测精度下降。本节将系统讲解异方差的定义、影响、诊断方法,并重点介绍处理异方差的两类核心方法:方差齐性变换和条件异方差模型(ARCH/GARCH 及其衍生模型),帮助您掌握处理波动聚集现象的关键技术。

💡 核心导读

  • 异方差的本质与影响:理解异方差如何导致参数显著性检验犯纳伪错误,使模型推断失效。
  • 异方差的直观诊断:掌握通过残差图、残差平方图识别递增型、递减型和综合型异方差模式。
  • 方差齐性变换:学习在已知异方差函数形式时,通过数学变换(如对数变换)将异方差序列转化为同方差序列的方法。
  • ARCH/GARCH 模型原理:深入理解条件异方差模型如何通过残差平方的自回归/移动平均结构来刻画波动率的时变性。
  • GARCH 模型家族:了解 EGARCH(非对称效应)、IGARCH(单位根)、GARCH-M(风险溢价)等衍生模型的应用场景与模型结构。

异方差的定义、影响与诊断

异方差的定义

在经典的时间序列模型中,我们假定随机误差项 εt\varepsilon_t 满足: εtWN(0,σ2)\varepsilon_t \sim WN(0, \sigma^2) 即零均值、无自相关且方差 σ2\sigma^2 为常数。

异方差 是指随机误差序列的方差会随时间变化: Var(εt)=h(t)\text{Var}(\varepsilon_t) = h(t) 其中 h(t)h(t) 是时间的函数。这意味着 εt\varepsilon_t 的波动幅度并非恒定,而是随时间呈现某种规律性变化。

异方差的影响

忽视异方差的存在会导致严重后果:

  1. 残差方差被严重低估:使用普通最小二乘法(OLS)估计的残差方差 s2s^2 会系统性小于真实方差 σt2\sigma_t^2
  2. 参数显著性检验失效:在回归系数的 t 检验中,检验统计量 t=β^/sβ^t = \hat{\beta}/s_{\hat{\beta}}。当 sβ^s_{\hat{\beta}} 被低估时,t 统计量会被高估,使得我们更容易拒绝“系数为零”的原假设,从而犯第一类错误(去真)——错误地拒绝了系数为零的真原假设,将不显著的变量误判为显著。
  3. 模型拟合精度下降:基于错误方差估计的置信区间和预测区间将不再可靠,最终影响模型的整体预测性能。

异方差的直观诊断

1. 残差图

将残差 εt\varepsilon_t 关于时间 tt 绘制散点图,观察其波动范围。

  • 同方差(方差齐性):残差点随机、均匀地分布在两条平行的水平带内。
  • 异方差
    • 递增型:残差波动范围随时间扩大(如喇叭口张开)。
    • 递减型:残差波动范围随时间缩小(如喇叭口收紧)。
    • 综合型:波动范围呈现先扩大后缩小等复杂模式。

2. 残差平方图

由于 Var(εt)=E(εt2)\text{Var}(\varepsilon_t) = E(\varepsilon_t^2)(当 E(εt)=0E(\varepsilon_t)=0 时),考察残差平方序列 εt2\varepsilon_t^2 是否平稳是诊断异方差的直接方法。如果 εt2\varepsilon_t^2 呈现出明显的趋势或周期性,则表明存在异方差。

示例:美国短期国库券月度收益率 对美国1963年4月至1971年7月短期国库券月度收益率序列进行一阶差分以消除趋势后,其残差图在1969年前后显示出明显的波动率突变,残差平方图也验证了该时段方差显著增大,这是典型的异方差(波动聚集)现象。

异方差的处理方法

处理异方差主要有两种思路,选择取决于我们是否已知异方差函数 h(t)h(t) 的具体形式。

方差齐性变换

适用场景:序列存在异方差,且方差与序列水平(均值)之间存在确定的函数关系,即 σt2=h(μt)\sigma_t^2 = h(\mu_t),其中 h()h(\cdot) 已知。

核心思想:寻找一个转换函数 g()g(\cdot),对原始序列 xtx_t 进行变换,使得变换后的序列 yt=g(xt)y_t = g(x_t) 满足方差齐性。

数学推导: 假设 xtx_t 的均值 μt\mu_t 已知,且 σt2=h(μt)\sigma_t^2 = h(\mu_t)。对转换函数 g(xt)g(x_t)μt\mu_t 处进行一阶泰勒展开: g(xt)g(μt)+g(μt)(xtμt)g(x_t) \approx g(\mu_t) + g'(\mu_t)(x_t - \mu_t) 则变换后序列的方差近似为: Var[g(xt)][g(μt)]2Var(xt)=[g(μt)]2h(μt)\text{Var}[g(x_t)] \approx [g'(\mu_t)]^2 \cdot \text{Var}(x_t) = [g'(\mu_t)]^2 \cdot h(\mu_t) 为使 Var[g(xt)]\text{Var}[g(x_t)] 为常数 CC,需满足: g(μt)=Ch(μt)g'(\mu_t) = \frac{\sqrt{C}}{\sqrt{h(\mu_t)}} 不失一般性,令 C=1C=1,则有: g(μt)=1h(μt)g'(\mu_t) = \frac{1}{\sqrt{h(\mu_t)}} 通过积分即可求解 g()g(\cdot)

常见特例:当 σt=μt\sigma_t = \mu_t,即 h(μt)=μt2h(\mu_t) = \mu_t^2 时,g(μt)=1/μtg'(\mu_t) = 1/\mu_t,解得 g(μt)=ln(μt)g(\mu_t) = \ln(\mu_t)。因此,对原始序列取自然对数变换,即可实现方差齐性。

实战示例:对前述美国短期国库券收益率序列 xtx_t,假设 σt=xt\sigma_t = x_t,进行对数变换 yt=ln(xt)y_t = \ln(x_t)。对 yty_t 进行一阶差分后,新序列的残差图显示波动趋于平稳,且 Ljung-Box 白噪声检验 p 值均大于 0.05,表明确实消除了异方差。最终拟合模型为: ln(xt)=εt,εtWN(0,σ2)\nabla \ln(x_t) = \varepsilon_t, \quad \varepsilon_t \sim WN(0, \sigma^2) 该模型拟合效果良好,且可通过指数变换反推原始序列的预测值。

条件异方差模型

适用场景:异方差函数形式未知,或序列波动呈现“集群效应”(波动在一段时间内持续较高,另一段时间内持续较低),无法用简单函数描述。

核心思想:不对原始序列进行变换,而是直接为时变的方差 σt2\sigma_t^2 本身建立一个时间序列模型。最基础的框架是 ARCH 模型及其推广 GARCH 模型。

ARCH 模型

ARCH(Autoregressive Conditional Heteroskedasticity,自回归条件异方差)模型由 Engle (1982) 提出。其思想是:当期误差的方差 σt2\sigma_t^2 依赖于过去若干期误差的平方。

ARCH(q) 模型结构xt=f(t,xt1,xt2,)+εtεt=σtet,eti.i.d.N(0,1)σt2=ω+α1εt12+α2εt22++αqεtq2\begin{aligned} x_t &= f(t, x_{t-1}, x_{t-2}, \ldots) + \varepsilon_t \\ \varepsilon_t &= \sigma_t e_t, \quad e_t \sim i.i.d. N(0, 1) \\ \sigma_t^2 &= \omega + \alpha_1 \varepsilon_{t-1}^2 + \alpha_2 \varepsilon_{t-2}^2 + \cdots + \alpha_q \varepsilon_{t-q}^2 \end{aligned} 其中:

  • 第一个方程是均值方程,用于提取序列的水平信息(如趋势、周期),f()f(\cdot) 可以是 ARMA 等形式。
  • 第二个方程定义了扰动项 εt\varepsilon_t 由条件标准差 σt\sigma_t 和一个标准正态白噪声 ete_t 相乘构成。
  • 第三个方程是方差方程,表明条件方差 σt2\sigma_t^2 是过去 qq 期扰动平方的线性函数(一个移动平均结构)。要求 ω>0,αi0\omega > 0, \alpha_i \ge 0 以保证方差为正。

模型含义:大的过去扰动(εti2\varepsilon_{t-i}^2 大)会导致大的当期波动(σt2\sigma_t^2 大),从而刻画了金融时间序列中“大波动跟着大波动,小波动跟着小波动”的波动聚集现象。

GARCH 模型

GARCH(Generalized ARCH,广义自回归条件异方差)模型由 Bollerslev (1986) 提出。它解决了 ARCH 模型有时需要很高阶数 qq 才能充分刻画波动持久性的问题。

GARCH(p, q) 模型结构: 均值方程与 ARCH 相同,方差方程变为: σt2=ω+i=1pβiσti2+j=1qαjεtj2\sigma_t^2 = \omega + \sum_{i=1}^{p} \beta_i \sigma_{t-i}^2 + \sum_{j=1}^{q} \alpha_j \varepsilon_{t-j}^2 其中:

  • ω>0,αj0,βi0\omega > 0, \alpha_j \ge 0, \beta_i \ge 0
  • 为保证宽平稳,还需满足 i=1pβi+j=1qαj<1\sum_{i=1}^{p} \beta_i + \sum_{j=1}^{q} \alpha_j < 1

模型含义:GARCH 模型在 ARCH 的基础上,增加了条件方差自身的滞后项 σti2\sigma_{t-i}^2。这使得条件方差具有了“长期记忆性”,能够用更少的参数更灵活地刻画波动的持续性。ARCH(q) 模型是 GARCH(0, q) 的特例。

GARCH 模型的衍生模型

为适应更复杂的金融现实,GARCH 模型发展出多个变体。

1. EGARCH 模型(指数 GARCH)

特点:放松参数非负约束,并能对正负扰动进行非对称反应。 方差方程ln(σt2)=ω+i=1pβiln(σti2)+j=1qαjg(etj)\ln(\sigma_t^2) = \omega + \sum_{i=1}^{p} \beta_i \ln(\sigma_{t-i}^2) + \sum_{j=1}^{q} \alpha_j g(e_{t-j}) 其中 g(et)=θet+γ(etEet)g(e_t) = \theta e_t + \gamma (|e_t| - E|e_t|)

  • 非对称性:当 θ0\theta \neq 0 时,g(et)g(e_t) 对正负 ete_t 的反应不同,能刻画“杠杆效应”(坏消息比好消息引发更大波动)。
  • 参数放松:对 ln(σt2)\ln(\sigma_t^2) 建模,无需对 αj,βi\alpha_j, \beta_i 施加非负约束。

2. IGARCH 模型(积分 GARCH)

特点:用于描述波动率具有单位根特征(持久性极强)的序列。 约束条件:在 GARCH(p, q) 中施加 i=1pβi+j=1qαj=1\sum_{i=1}^{p} \beta_i + \sum_{j=1}^{q} \alpha_j = 1含义:此时无条件方差无穷大,条件方差序列非平稳,类似于均值方程中的随机游走。

3. GARCH-M 模型(GARCH in Mean)

特点:将风险溢价思想引入模型,允许序列的均值依赖于其波动性。 均值方程xt=μ+δσt2+εtx_t = \mu + \delta \sigma_t^2 + \varepsilon_t 含义δ\delta 称为风险溢价参数。δ>0\delta > 0 意味着更高的风险(波动 σt2\sigma_t^2)要求更高的预期收益(均值 μ+δσt2\mu + \delta \sigma_t^2),符合金融学基本理论。

Python 实战:异方差检验与 ARCH 效应诊断

下面我们使用 Python 模拟一个具有 ARCH 效应的残差序列,并进行正式的统计检验。

"""
时间序列分析 5.3 课时配套实战代码
内容:残差异方差性检验 (ARCH-LM 拉格朗日乘数检验与残差平方自相关检验)
"""
import numpy as np
import pandas as pd
from statsmodels.stats.diagnostic import het_arch, acorr_ljungbox

# 固定随机种子,确保结果可复现
np.random.seed(42)
n = 500

# 1. 模拟具备 ARCH(1) 效应的残差过程
# 方差方程: sigma_t^2 = 0.2 + 0.6 * epsilon_{t-1}^2
# 扰动项: epsilon_t = sigma_t * eta_t, 其中 eta_t ~ N(0, 1)
omega = 0.2
alpha = 0.6
epsilon = np.zeros(n)          # 观测到的残差序列
sigma2 = np.zeros(n)           # 条件方差序列
eta = np.random.normal(0, 1, n) # 标准正态新息

# 初始化:使用无条件方差作为初始值
sigma2[0] = omega / (1 - alpha)
epsilon[0] = np.sqrt(sigma2[0]) * eta[0]

# 递归生成 ARCH(1) 过程
for t in range(1, n):
    sigma2[t] = omega + alpha * (epsilon[t-1] ** 2)
    epsilon[t] = np.sqrt(sigma2[t]) * eta[t]

# 将序列包装为 pandas Series,便于后续分析
resid = pd.Series(epsilon, name='residuals')

# 2. Engle's ARCH-LM 检验 (Lagrange Multiplier test)
# 原假设 H0: 残差序列不存在 ARCH 效应(即无异方差)
# 备择假设 H1: 存在 ARCH 效应
# nlags 指定检验考虑的滞后阶数
arch_test_result = het_arch(resid, nlags=5)
lm_statistic = arch_test_result[0]
lm_pvalue = arch_test_result[1]

# 3. 残差平方的 Ljung-Box 白噪声检验 (McLeod-Li 检验)
# 这是另一种诊断 ARCH 效应的方法:如果残差平方存在自相关,则表明存在条件异方差
resid_squared = resid ** 2
lb_test_result = acorr_ljungbox(resid_squared, lags=[5, 10], return_df=True)

# 4. 打印检验结果
print(f"样本数据量: {n}")
print(f"ARCH-LM 检验结果 (考虑5阶滞后):")
print(f"  LM 统计量: {lm_statistic:.4f}")
print(f"  p值: {lm_pvalue:.4e}")
print(f"  结论: 在5%显著性水平下{'拒绝' if lm_pvalue < 0.05 else '不拒绝'}原假设,"
      f"{'存在' if lm_pvalue < 0.05 else '不存在'}显著的 ARCH 效应。")

print(f"\n残差平方序列的 Ljung-Box 检验 (McLeod-Li 方法):")
for lag in [5, 10]:
    q_stat = lb_test_result.loc[lag, 'lb_stat']
    q_pval = lb_test_result.loc[lag, 'lb_pvalue']
    print(f"  滞后{lag}阶: Q({lag}) = {q_stat:.4f}, p值 = {q_pval:.4e}")
    print(f"      波动聚集效应显著: {q_pval < 0.05}")

运行结果:

样本数据量: 500
ARCH-LM 检验结果 (考虑5阶滞后):
  LM 统计量: 50.7098
  p值: 9.9172e-10
  结论: 在5%显著性水平下拒绝原假设,存在显著的 ARCH 效应。

残差平方序列的 Ljung-Box 检验 (McLeod-Li 方法):
  滞后5阶: Q(5) = 54.9566, p值 = 1.3325e-10
      波动聚集效应显著: True
  滞后10阶: Q(10) = 56.8717, p值 = 1.4090e-08
      波动聚集效应显著: True

结果解读

  1. ARCH-LM 检验的 p 值远小于 0.05,强烈拒绝“无异方差”的原假设。
  2. 残差平方序列的 Ljung-Box 检验在滞后 5 阶和 10 阶的 p 值也均小于 0.05,表明残差平方存在显著的自相关性,即波动具有聚集性。
  3. 两项检验结论一致,确认我们模拟的序列存在强烈的条件异方差(ARCH)效应。在实际分析中,若对某个金融时间序列的残差进行此类检验得到类似结果,就应当考虑使用 ARCH/GARCH 类模型进行建模。

📝 动手练一练

  1. 异方差影响分析:假设在一个线性回归模型中,真实残差方差 Var(εt)=t\text{Var}(\varepsilon_t) = t(随时间递增),但我们误用 OLS 并假设同方差进行 t 检验。试定性分析,相较于使用正确的异方差稳健标准误,OLS 的 t 统计量会偏大还是偏小?这会导致犯第一类错误还是第二类错误的概率增加?

  2. 模型识别:观察以下两个场景,判断分别适合采用方差齐性变换还是条件异方差模型,并简述理由。

    • 场景 A:某商品日销售额序列,其残差图显示波动幅度与销售额水平成正比。
    • 场景 B:股指日收益率序列,其残差平方的自相关图显示在滞后 1 阶和 4 阶有显著峰值。

参考答案

  1. OLS 低估了标准误,导致 t 统计量被高估(偏大)。这使得我们更容易拒绝“系数为零”的原假设,从而增加犯第一类错误(去真)的概率:OLS 低估标准误 → t 被高估 → 增加第一类错误(去真)概率,名义显著性水平(size)失真。
    • 场景 A:适合方差齐性变换。因为异方差形式明确(方差与水平成正比),可尝试对数变换。
    • 场景 B:适合条件异方差模型。因为异方差呈现自相关结构(波动聚集),且无明显简单函数形式,适合用 ARCH/GARCH 模型刻画。

本章小结

本节深入探讨了时间序列分析中一个常见但危害巨大的问题——异方差。我们系统地学习了:

  • 异方差的本质:残差方差随时间变化,违背经典假设。
  • 异方差的诊断:通过残差图、残差平方图进行直观判断,并利用 ARCH-LM 检验、残差平方的 Ljung-Box 检验进行统计验证。
  • 异方差的处理
    1. 方差齐性变换:在已知方差与均值函数关系时,通过数学变换(如取对数)消除异方差。
    2. 条件异方差模型:当异方差形式未知或呈现波动聚集时,直接为时变方差建模。
      • ARCH(q):用过去 q 期扰动平方的移动平均来刻画当期波动。
      • GARCH(p, q):在 ARCH 基础上加入方差自身的自回归项,能以更少参数刻画波动持久性,是更常用的模型。
      • 衍生模型:EGARCH(处理非对称杠杆效应)、IGARCH(描述单位根波动)、GARCH-M(引入风险溢价)等,用于解决特定问题。

行动清单

  1. 诊断先行:在完成任何时间序列模型(如 ARIMA)拟合后,务必绘制残差图与残差平方图,并至少进行一项正式的 ARCH 效应检验(如 ARCH-LM)。
  2. 模型选择:若诊断出异方差,根据其表现形式选择处理工具。对于金融收益率等典型波动聚集序列,应优先掌握 GARCH(1,1) 模型的应用。
  3. Python 实践:使用 arch 库的 arch_model 函数练习拟合 GARCH 模型,并比较不同模型(如 GARCH, EGARCH)的拟合效果。

— 小象教研组

配套学习资源与课件
  • 第5章课件:非平稳序列的随机性分析
    下载
  • 第5章配套代码
    下载
  • 时间序列分析推荐书籍(打包)(经典时序分析参考书合集)
    下载
  • 课程配套数据集(全课程实战数据)
    下载
🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加顾问免费领取;想学什么,直接告诉顾问
微信二维码:扫码添加课程顾问微信扫码添加顾问