正在加载中...

展开本页目录
算法教程GARCH-广义自回归条件异方差

GARCH-广义自回归条件异方差

No.046 · 在线教程

GARCH(Generalized Autoregressive Conditional Heteroskedasticity)模型用于刻画时间序列中“波动聚集”现象,即大波动后仍可能出现大波动、小波动后仍可能出现小波动。该方法广泛用于金融收益率、经济波动率以及风险管理场景。与…

GARCH-广义自回归条件异方差

1. 方法概述

GARCH(Generalized Autoregressive Conditional Heteroskedasticity)模型用于刻画时间序列中“波动聚集”现象,即大波动后仍可能出现大波动、小波动后仍可能出现小波动。该方法广泛用于金融收益率、经济波动率以及风险管理场景。与仅关注条件均值的线性模型不同,GARCH 直接对条件方差进行建模,可用于解释和预测波动率的动态变化。

设时间序列为 \(\{y_t\}_{t=1}^T\),在均值方程与波动方程框架下,可写为

$$ y_t = \mu_t + \varepsilon_t, \tag{1} $$

$$ \varepsilon_t = z_t\sqrt{h_t},\quad z_t\sim i.i.d.(0,1), \tag{2} $$

其中 \(h_t=\mathrm{Var}(\varepsilon_t\mid\mathcal{F}_{t-1})\) 为条件方差。

2. 数据准备与收益率构造

系统支持“直接收益率序列”与“价格序列转收益率”两种输入方式。若输入价格序列 \(P_t\),可构造对数收益率或简单收益率:

$$ r_t = \ln P_t - \ln P_{t-1}, \tag{3} $$

$$ r_t = \frac{P_t-P_{t-1}}{P_{t-1}}. \tag{4} $$

在程序实现中,还可对收益率乘以缩放系数 \(s>0\),得到建模序列

$$ y_t = s\,r_t. \tag{5} $$

3. GARCH(p,q) 模型

3.1 均值方程

系统支持常数均值或零均值两种设定:

$$ \mu_t = \mu \quad (\text{constant}), \tag{6} $$

$$ \mu_t = 0 \quad (\text{zero}). \tag{7} $$

3.2 方差方程

GARCH(p,q) 的条件方差递推为

$$ h_t = \omega + \sum_{i=1}^{p}\alpha_i\varepsilon_{t-i}^2 + \sum_{j=1}^{q}\beta_j h_{t-j}, \tag{8} $$

并满足参数约束

$$ \omega>0,\quad \alpha_i\ge 0,\quad \beta_j\ge 0, \tag{9} $$

$$ \sum_{i=1}^{p}\alpha_i + \sum_{j=1}^{q}\beta_j < 1. \tag{10} $$

式(10)保证模型协方差平稳。定义波动持续性(persistence)为

$$ \rho = \sum_{i=1}^{p}\alpha_i + \sum_{j=1}^{q}\beta_j. \tag{11} $$

当 \(\rho\) 接近 1 时,冲击衰减较慢,波动具有更强持续性。

4. 参数估计与信息准则

在正态假设下,单期对数似然为

$$ \ell_t(\theta)= -\frac{1}{2}\Big[\ln(2\pi)+\ln h_t+\frac{\varepsilon_t^2}{h_t}\Big], \tag{12} $$

总对数似然为

$$ \ell(\theta)=\sum_{t=1}^{T}\ell_t(\theta). \tag{13} $$

参数 \(\theta\) 通过极大似然估计获得,模型比较可使用 AIC 与 BIC:

$$ \mathrm{AIC}=2k-2\ell(\hat\theta), \tag{14} $$

$$ \mathrm{BIC}=k\ln T-2\ell(\hat\theta), \tag{15} $$

其中 \(k\) 为参数个数。

5. 诊断检验

为检验残差分布和剩余异方差,系统输出以下统计量。

5.1 Jarque-Bera 正态性检验

$$ JB=\frac{T}{6}\left(S^2+\frac{(K-3)^2}{4}\right), \tag{16} $$

其中 \(S\) 为偏度,\(K\) 为峰度。

5.2 Ljung-Box 序列相关检验

对标准化残差(及其平方)进行检验:

$$ Q(m)=T(T+2)\sum_{k=1}^{m}\frac{\hat\rho_k^2}{T-k}, \tag{17} $$

其中 \(\hat\rho_k\) 为样本自相关系数。

5.3 ARCH-LM 检验

基于残差平方回归构造统计量

$$ LM = T\,R^2, \tag{18} $$

用于检验剩余 ARCH 效应是否显著。

6. 波动率预测

在估计参数 \(\hat\theta\) 下,未来条件方差按递推式继续向前计算:

$$ \hat h_{T+s} = \hat\omega + \sum_{i=1}^{p}\hat\alpha_i\hat\varepsilon_{T+s-i}^2 + \sum_{j=1}^{q}\hat\beta_j\hat h_{T+s-j}, \quad s=1,2,\ldots,H. \tag{19} $$

预测条件波动率为

$$ \widehat{\sigma}_{T+s}=\sqrt{\hat h_{T+s}}. \tag{20} $$

程序同时给出测试集上的方差预测误差代理指标,例如

$$ \mathrm{MSE}_{var}=\frac{1}{n}\sum_{t}(\varepsilon_t^2-\hat h_t)^2, \tag{21} $$

$$ \mathrm{MAE}_{var}=\frac{1}{n}\sum_{t}|\varepsilon_t^2-\hat h_t|, \tag{22} $$

$$ \mathrm{QLIKE}=\frac{1}{n}\sum_t\left[\ln \hat h_t + \frac{\varepsilon_t^2}{\hat h_t}\right]. \tag{23} $$

7. 符号说明表

符号 含义
\(y_t\) 建模序列(收益率或经处理后的收益率)
\(\mu_t\) 条件均值
\(\varepsilon_t\) 残差项
\(h_t\) 条件方差
\(\omega,\alpha_i,\beta_j\) GARCH 参数
\(p,q\) ARCH 阶与 GARCH 阶
\(\rho\) 波动持续性(参数和)
\(\ell\) 对数似然
\(k\) 参数个数
\(H\) 预测步长
\(\widehat{\sigma}_{T+s}\) 预测条件波动率

8. 与代码实现的对应关系

本系统输出目录采用“时间戳文件夹”结构,包含 xlsx、图表与复现脚本,便于论文中直接引用结果。

8.1 Excel 工作表说明

Sheet 名称 主要内容 论文用途
RawData_Preview 原始数据前若干行 数据来源与样本描述
Processed_Series 全样本收益率、残差、条件方差、条件波动率、标准化残差、训练/测试标记 核心结果明细表
Parameters 参数估计、标准误、t 值、p 值 参数显著性分析
FitSummary 对数似然、AIC/BIC、持续性、测试误差指标等 模型比较与总体结论
Diagnostics JB、Ljung-Box、ARCH-LM 等诊断统计 模型有效性检验
Forecast 未来步条件方差与条件波动率预测 风险预测结果
Charts_Index 图表文件路径索引 图表引用管理

8.2 图表说明

图文件 含义 论文用途
returns_series_*.png 收益率序列图 展示波动聚集现象
conditional_volatility_*.png 条件波动率时序图 展示波动动态变化
standardized_residuals_*.png 标准化残差时序图 残差稳定性观察
acf_pacf_z2_*.png 标准化残差平方的 ACF/PACF 剩余波动结构检验
qq_std_resid_*.png 标准化残差 QQ 图 分布假设检验
forecast_volatility_*.png 未来波动率预测曲线 前瞻性风险分析

8.3 实现说明与注意事项

  • 当前模块真实核心位于:
    • 具体的算法2/GARCH-广义自回归条件异方差/core/calculator.py
    • 具体的算法2/GARCH-广义自回归条件异方差/ui/results_widget.py
  • 程序优先尝试 arch 包;若环境缺失,则自动回退到基于 scipy.optimize 的正态 GARCH(p,q) 极大似然实现;
  • 因此若文档或论文写明“使用 arch 包估计”,应先确认本次结果不是回退路径;
  • 结果目录按统一口径保存到模块 results/ 下的时间戳文件夹,并额外支持结果页导出 repro_garch_<时间戳>.py
  • Diagnostics 中既包含标准化残差的 Ljung-Box,也包含 ARCH-LM,用于检查剩余异方差;
  • Forecast 输出的是条件方差和条件波动率,不应误写成收益率本身的点预测;
  • 当前图表核心文件包括 conditional_volatility*.pngforecast_volatility*.png,并由 Charts_Index 统一登记;
  • Charts_Index 使用相对路径,便于结果目录整体复制与归档。

9. 论文写作模板

正文可按“模型设定—参数估计—诊断检验—预测结果”组织。先给出式(8)的 GARCH 方差方程及参数约束,再报告参数估计、AIC/BIC 与持续性 \(\rho\),随后结合 Diagnostics 中的 JB、Ljung-Box 与 ARCH-LM 说明模型拟合质量,最后基于 Forecast 表和预测波动率曲线解释未来风险变化。若进行模型比较,可将不同 \((p,q)\) 设定下的 AIC/BIC 与预测指标放入同一张对比表。

9.1 方法描述模板

“本文采用 GARCH(\(p,q\)) 模型刻画收益率序列的条件异方差特征。均值方程与方差方程分别如式(6)–(8) 所示,参数通过极大似然估计获得,并利用 AIC/BIC 进行模型比较。进一步地,基于标准化残差的 Ljung-Box、Jarque-Bera 与 ARCH-LM 检验评价模型是否充分刻画了波动结构。”

9.2 结果解释模板段落

“结果表明,模型估计得到的波动持续性 \(\rho\) 为 ,说明冲击对波动的持续影响程度为 。Forecast 表显示未来 \(H\) 期条件波动率呈 变化趋势;结合 conditional_volatilityforecast_volatility 图,可见样本内波动聚集现象与样本外风险演化路径均较为清晰。”

9.3 图表题注模板

  • 图 1 收益率序列与波动聚集现象。
  • 图 2 条件波动率时序图。
  • 图 3 标准化残差平方的 ACF/PACF 图。
  • 图 4 未来条件波动率预测曲线。

10. 结果解释与使用注意事项

GARCH 适用于具有条件异方差特征的时间序列,尤其是金融收益率序列。若输入为价格数据,应先转收益率再建模。参数解释需结合数据频率与样本区间进行,不宜脱离场景直接比较绝对值。对于分布厚尾明显的数据,可在后续版本中扩展 t 分布或偏态分布设定,并进行稳健性对比。

11. 单篇终审补充

11.1 图题与表题对齐建议

  • 本文档应优先对应真实算法目录 具体的算法2/GARCH-广义自回归条件异方差
  • 若需要“结果表 + repro”闭环,代表性结果目录建议绑定 具体的算法2/GARCH-广义自回归条件异方差/results/GARCH(1,1)分析结果_20260329_165534_988259
  • 表题应直接对应 GARCH(1,1)分析结果_20260329_165534_988259.xlsx 的真实工作表:RawData_PreviewProcessed_SeriesParametersFitSummaryDiagnosticsForecastCharts_Index
  • 图题应优先绑定同轮实体图文件:returns_series_20260329_165538.pngconditional_volatility_20260329_165538.pngstandardized_residuals_20260329_165538.pngacf_pacf_z2_20260329_165538.pngqq_std_resid_20260329_165538.pngforecast_volatility_20260329_165538.png。这些图当前保存在相邻结果目录 GARCH(1,1)分析结果_20260329_165538_253257 中。

11.2 终审说明

  • GARCH 旧批次结果里曾出现过相邻时间戳并存现象,但当前代表目录已经形成单目录闭环;正文与附录应以当前单目录证据为准。
  • 复现脚本可对应 repro_garch_20260329_165536.py,其 SRC_FILE 实际写为 repro_inputs/sample_data.csv,属于“脚本所在结果目录下的 repro_inputs 相对路径”口径。
  • 如果论文需要完全一致的单目录证据,后续可再做一次人工导出;但当前单篇终审应如实写明“表格、图、repro 为同轮相邻时间戳产物”。

11.3 全量强化补充

  • 当前 GARCH 文档需要按真实磁盘现状修正:具体的算法2/GARCH-广义自回归条件异方差/results/GARCH(1,1)分析结果_20260329_165534_988259 已经形成单目录闭环,不再需要依赖相邻目录补图。
  • 该目录首层主工作簿为 GARCH(1,1)分析结果_20260329_165534_988259.xlsx,真实工作表为 RawData_PreviewProcessed_SeriesParametersFitSummaryDiagnosticsForecastCharts_Index
  • 当前同一目录下的实体图位于 charts/ 子目录,真实文件为 returns_series_20260329_165534.pngconditional_volatility_20260329_165534.pngstandardized_residuals_20260329_165534.pngacf_pacf_z2_20260329_165534.pngqq_std_resid_20260329_165534.pngforecast_volatility_20260329_165534.png
  • 同一目录内同时存在 repro_garch_20260329_165536.pyrepro_inputs/sample_data.csv,脚本关键输入写法为 SRC_FILE = 'repro_inputs/sample_data.csv'。因此当前最稳妥的主证据目录就是 165534_988259,而不是旧文写的“表、图、repro 分散在相邻目录”。
  • 相邻目录 具体的算法2/GARCH-广义自回归条件异方差/results/GARCH(1,1)分析结果_20260329_165538_253257 确实也存在另一套同结构工作簿与图,但那是另一轮同类结果,不应用来补主目录的缺项。
  • 因此论文与附录应直接按 165534_988259 单目录写:主结果表、charts/ 图、repro_garch_20260329_165536.pyrepro_inputs/sample_data.csv 都在同一证据包内。

12. 软件实现核查补充(2026-07)

  • 当前实现的主结果目录应写作 具体的算法2/GARCH-广义自回归条件异方差/results/GARCH(1,1)分析结果_20260329_165534_988259,不要再混入相邻 165538_253257 目录。
  • 论文正文应围绕 RawData_PreviewProcessed_SeriesParametersFitSummaryDiagnosticsForecastCharts_Index 来写,图则对应 returns_series_20260329_165534.pngconditional_volatility_20260329_165534.pngstandardized_residuals_20260329_165534.pngacf_pacf_z2_20260329_165534.pngqq_std_resid_20260329_165534.pngforecast_volatility_20260329_165534.png
  • repro_garch_20260329_165536.py + repro_inputs/sample_data.csv 已经和主目录闭环,文中可以直接按这个口径说明。
  • 如果后续要补论文附录,优先补 GARCH(1,1) 这一轮主目录,不要把相邻轮次图表拿来充数。