设收益率序列 rt 满足:
rt = μ + εt , εt = σt · zt
其中 zt ~ i.i.d. N(0,1) (或标准化t分布),σt 为条件波动率。
条件方差 σt2 依赖于过去残差平方:
σt2 = ω + α1 · εt-12
约束:ω > 0 , α1 ≥ 0 (保证方差为正)。
若 α1 = 0 则为常数方差。
大的 εt-12 导致大的 σt2,从而高波动后跟高波动,形成聚集效应。ARCH(1) 通过 α1 捕捉该现象。
对于样本 t=1,…,T,条件对数似然:
ℓ(θ) = -½ Σ [ ln(2π) + ln(σt²) + εt² / σt² ]
其中 θ = (μ, ω, α₁)。
通常忽略常数项,最大化:
ℓ(θ) ∝ -½ Σ [ ln(σt²) + εt² / σt² ]
# Python · ARCH(1) 伪代码 (MLE)
import numpy as np
from scipy.optimize import minimize
def arch1_loglik(theta, r):
mu, omega, alpha1 = theta
eps = r - mu
T = len(eps)
sigma2 = np.zeros(T)
sigma2[0] = omega / (1 - alpha1) # 无条件方差初始化
for t in range(1, T):
sigma2[t] = omega + alpha1 * eps[t-1]**2
ll = -0.5 * np.sum(np.log(sigma2[1:]) + eps[1:]**2 / sigma2[1:])
return -ll # 极小化负对数似然
# 约束: omega>0, 0<=alpha1<1
bounds = [(None, None), (1e-6, None), (0, 0.999)]
res = minimize(arch1_loglik, [0, 0.01, 0.3], args=(r,), bounds=bounds, method='L-BFGS-B')
mu_hat, omega_hat, alpha1_hat = res.x
| 检验方法 | 原假设 H₀ | 统计量 | 决策准则 |
|---|---|---|---|
| Ljung-Box (z²) | 残差平方无自相关 | Q(m) ~ χ²(m) | p > 0.05 不拒绝 |
| ARCH-LM (m阶) | 无 ARCH 效应 | LM = T·R² ~ χ²(m) | p > 0.05 接受 H₀ |
| Jarque-Bera (z) | 正态性 | JB ~ χ²(2) | 金融数据常拒绝,但一致性仍可 |
| 参数显著性 (t检验) | α₁ = 0 | t = α₁ / se(α₁) | |t| > 1.96 拒绝 |