<jupyter_start><jupyter_text>ARCH模型  原理讲解  产生背景通常认为，横截面数据容易存在异方差，而时间序列数据常存在自相关。然而，Engle（1982）指出，时间序列数据也常存在一种特殊的异方差，即“自回归条件异方差”（Autoregressive Conditional Heteroskedasticity，简记 ARCH）Bollerslev（1986）对 ARCH 进行了推广，称为“ Generalized ARCH“，简记 GARCH考察美国道琼斯股指在1953—1990年期间日收益率的波动，参见下图从图可以看出，股指日收益率在某一段时间内剧烈波动，而在另一段时间内风平浪静。从理论上，这可以抽象为，当本期或过去若干期的波动（方差）较大时，未来几期的波动（方差）很可能也较大；反之亦然。换言之，方差大的观测值似乎集聚在一起，而方差小的观测值似乎也集聚在一起。这被称为“波动性集聚“（ volatility clustering）或“扎堆“。  ARCH 模型的性质考虑一般的线性回归模型:$$y_{t}=x_{t}^{\prime} \boldsymbol{\beta}+\varepsilon_{t}\tag{1}$$记扰动项 $\varepsilon_{t}$ 的条件方差为$\sigma_{t}^{2} \equiv \operatorname{Var}\left(\varepsilon_{t} | \varepsilon_{t-1}, \cdots\right)$，其中 $\sigma_{t}^{2}$ 的下标 $t$ 表示条件方差可以随时间而变。受到波动性集聚现象的启发，假设 $\sigma_{t}^{2}$ 取决于上一期扰动项之平方：$$\sigma_{t}^{2}=\alpha_{0}+\alpha_{1} \varepsilon_{t-1}^{2}\tag{2}$$这就是“ ARCH(1)扰动项”。更一般地，假设 $\sigma_{t}^{2}$ 依赖于前 $p$ 期扰动项之平方:$$\sigma_{t}^{2}=\alpha_{0}+\alpha_{1} \varepsilon_{t-1}^{2}+\cdots+\alpha_{p} \varepsilon_{t-p}^{2}\tag{3}$$就是“ ARCH(p)扰动项”。不失一般性，以 ARCH(1)扰动项为例，来考察 ARCH 扰动项的性质。假设扰动项 $\varepsilon_{t}^{2}$ 的生成过程为:$$\varepsilon_{t}=v_{t} \sqrt{\alpha_{0}+\alpha_{1} \varepsilon_{t-1}^{2}}\tag{4}$$其中，$v_{t}$ 为白噪声，并将其方差标准化为 1，即 $\operatorname{Var}\left(v_{t}\right)=\mathrm{E}\left(v_{t}^{2}\right)=1$。假定 $v_{t}$ 与$\epsilon _ { t - 1 }$相互独立，而且$\alpha _ { 0 } > 0$，$0 < \alpha _ { 1 } < 1$（为了保证 $\sigma_{t}^{2}$ 为正，且 {$\varepsilon_{t}^{2}$} 为平稳过程）。序列 {$\varepsilon_{t}^{2}$} 具有怎样的性质呢？下面我们来考察其条件期望、无条件期望、条件方差、无条件方差及序列相关。由于 $v _ { t }$ 与 $\epsilon _ { t - 1 }$ 相互独立，$\epsilon_t$ 的条件期望为 $\operatorname{Var}\left(\varepsilon_{t} | \varepsilon_{t-1}\right)=\alpha_{0}+\alpha_{1} \varepsilon_{t-1}^{2}$扰动项 $\epsilon _ { t }$ 完全满足古典模型关于"同方差"与"无自相关"的假定。事实上，虽然 $\epsilon _ { t }$ 存在条件异方差，却是白噪声！因此，高斯-马尔可夫定理成立，OLS 是最佳线性无偏估计( BLUE)。然而，OLS 显然忽略了条件异方差这一重要信息。如果我们跳出线性估计的范围，则可以找到更优的非线性估计，即最大似然估计。  ARCH 模型的 MLE 估计考虑在 $\varepsilon_{1}$ 给定情况下的条件最大似然估计法。假设 $\varepsilon_{t} \sim N\left(0, \sigma_{t}^{2}\right),$ 而 $\sigma_{t}^{2}=\alpha_{0}+\alpha_{1} \varepsilon_{t-1}^{2},$ 可得似然函数:$$L=\prod_{t=2}^{T} \frac{1}{\sqrt{2 \pi\left(\alpha_{0}+\alpha_{1} \varepsilon_{t-1}^{2}\right)}} \exp \left\{-\frac{\varepsilon_{t}^{2}}{2\left(\alpha_{0}+\alpha_{1} \varepsilon_{t-1}^{2}\right)}\right\}\tag{5}$$$$\ln L=-\frac{T-1}{2} \ln 2 \pi-\frac{1}{2} \sum_{t=2}^{T} \ln \left(\alpha_{0}+\alpha_{1} \varepsilon_{t-1}^{2}\right)-\frac{1}{2} \sum_{t=2}^{T} \frac{\varepsilon_{1}^{2}}{\alpha_{0}+\alpha_{1} \varepsilon_{t-1}^{2}}\tag{6}$$  arch 检验残差平方的自回归模型  arch 模块实现arch 模块是一个计算波动率模型和其他金融计量模型的 python 第三方库参考网址：[Introduction to ARCH Models](https://arch.readthedocs.io/en/latest/univariate/introduction.htmlarch.univariate.arch_model)<jupyter_code>from arch import arch_model
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
from pylab import mpl

stock = pd.read_excel('../数据/上证指数与沪深300.xlsx')
stock['sz收益率'] = 100*np.log(stock['sz']/stock['sz'].shift(1))
stock = stock.dropna()   #删除缺失值
stock = stock.reset_index(drop=True)

# 防止图形中文文字乱码
mpl.rcParams['font.sans-serif'] = ['SimHei']   # 以黑体的字体显示中文
mpl.rcParams['axes.unicode_minus'] = False   # 解决保存图像是负号'-'显示为方块的问题

plt.title('上证指数收益率', fontsize=14)   # 标题，fontsize 为字体大小
# 常见线的属性有：color, label, linewidth, linestyle, marker 等
pic = plt.plot(stock['日期'], stock['sz收益率'], color='blue')
model_arch = arch_model(y=stock['sz收益率'], mean='Constant', lags=0, vol='GARCH',p=1,
                       o=0, q=1, dist='normal')   # 构建 ARCH（1)模型
res = model_arch.fit()
res.summary()
pic = res.plot()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.2290960451977401, 'fraction_numerical': 0.03305084745762712, 'mean_word_length': 7.01131221719457, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 6, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '101441', 'license': 'MIT', 'n_tokens_mistral': 1998, 'n_tokens_neox': 2130, 'n_words': 190, 'path': '金融时间序列/ARCH模型.ipynb', 'repo_name': 'Bingohong/econometrics', 'size': '3540'}