实证方法教程 / garch

GARCH 波动率模型

把面板案例聚合成时间维度后演示序列方法

这节课解决什么适合时间维度足够长、关心动态关系、冲击响应或平稳性的序列问题。
先准备哪些变量因变量
会看到哪张表garch_results.csv
论文里怎么克制解释必须说明样本频率、时间跨度、滞后选择和小样本限制。

GARCH 波动率模型是什么?

GARCH 波动率模型回答的是时间序列的方差为什么会一段时间高、一段时间低。它常用于金融收益率、价格波动和风险度量,重点是条件方差而不是均值效应。

先用一句话理解

把 GARCH 想成市场有平静期和风暴期。今天波动很大,明天往往也更容易波动大;模型把这种波动聚集写进条件方差。

什么时候用

判断项教科书式判断
适合用在收益率或误差存在波动聚集,方差随时间变化。
先不要用在研究平均处理效应,或序列没有明显条件异方差。
最关键的前提先处理均值方程,再检查残差平方是否有 ARCH 效应。
读表顺序先看 alpha/beta 和持久性,再看标准化残差诊断。
论文表述边界GARCH 解释风险和波动,不解释因果政策效应。

把它和相近方法分清楚

容易混淆的对象怎么区分初学者记法
ARIMA建模均值的时间依赖。关注 y 的预测。
GARCH建模条件方差的时间依赖。关注波动风险。
Newey-West修正自相关/异方差标准误。不建模波动过程。

核心直觉和模型公式

GARCH(1,1)

最常见的 GARCH(1,1) 写成:

\[r_t=\mu+\varepsilon_t,\quad \varepsilon_t=\sigma_t z_t\]
\[\sigma_t^2=\omega+\alpha\varepsilon_{t-1}^2+\beta\sigma_{t-1}^2\]

过去冲击平方和过去方差共同决定今天的条件方差。

公式里的符号怎么读

符号含义在本页怎么理解
r_t收益率/序列变化常见建模对象。
σ_t²条件方差t 时点预期波动大小。
α冲击反应昨天冲击对今天波动的影响。
β波动持久性昨天方差对今天方差的影响。
α+β持久性越接近 1,波动越持久。

专业使用口径

专业 GARCH 报告要证明波动建模是必要的。

口径专业写法
ARCH 效应检查残差平方是否自相关。
均值方程先处理收益率均值结构。
持久性报告 alpha+beta,说明波动冲击衰减速度。
残差诊断标准化残差应不再有明显 ARCH 结构。

一步一步做:从问题到结果的五步

步骤这一页具体做什么做到什么程度才算读懂
1. 画收益率和波动图看是否有波动聚集。GARCH 从波动现象出发。
2. 设定均值方程处理平均变化。均值残差进入方差模型。
3. 检验 ARCH看残差平方是否相关。没有 ARCH 效应不必复杂化。
4. 估计 GARCH读取 alpha、beta 和条件方差。重点是波动动态。
5. 做残差诊断标准化残差和残差平方应更接近白噪声。诊断不过要调整模型。

结果怎么读:先读口径,再读数字

本页案例读表时,先记住这个口径:年度聚合观测 = 6;面板案例按 year 聚合。

读表顺序本页怎么读不要这样读
先看 alpha新冲击对波动影响多强。反映短期反应。
再看 beta波动延续性多强。反映持久性。
然后看 alpha+beta波动是否高度持久。接近 1 表示冲击慢慢消退。
最后看诊断标准化残差是否干净。否则模型没有吸收波动结构。

初学者最容易错在哪里

误读为什么错
把 GARCH 当均值回归错。核心是条件方差。
不检验 ARCH 效应错。使用理由不清。
忽略均值方程风险高。均值设定会影响残差。
只报系数不解释波动持久性不够。alpha+beta 是关键。

先看这个案例的结论

  • 年度聚合观测 = 6;面板案例按 year 聚合。
  • ln Patent 年趋势 = 0.0993;年度均值趋势斜率。
  • DFI 年趋势 = 22.3130;数字金融指数年度变化。
  • 这些数字来自页面里的结果表;写论文时先解释数值含义,再讨论理论含义。

变量要求和案例口径

字段口径
数据CSMAR 风格 A 股企业创新面板
原始样本196 家上市公司,2015-2020 年,约 1200 个公司-年观测;各方法有效样本以本页输出表 N 为准
因变量patent_count;回归页通常使用 ln(1 + patent_count)
核心解释变量dfi_index,数字普惠金融指数;部分案例输出展示的是标准化后的 dfi_index
控制变量roa、lev、size、growth、cashflow、tobinq、top1、dual、board、indep、soe、age
输出文件garch_results.csv
角色要求因变量
依赖包无额外 Stata 社区包要求

实际代码

下面是本页案例里的最小 Stata 代码。它的作用是帮助你看清变量怎么进入模型、结果文件怎么生成,而不是要求你在网页里手动运行。

import delimited "$DATA_PATH", clear varnames(1) encoding(UTF-8)
gen ln_patent1 = ln(1 + patent_count)
egen firm_id = group(stkcd)
xtset firm_id year

global y ln_patent1
global count_y patent_count
global x dfi_index
global controls roa lev size growth cashflow tobinq top1 dual board indep soe age
gen post = year >= 2018
bysort firm_id: egen pre_dfi = mean(cond(year < 2018, dfi_index, .))
quietly summarize pre_dfi, detail
gen treat = pre_dfi >= r(p50)
gen did = treat * post
gen high_patent = patent_count > 2
gen running_dfi = dfi_index - 260
gen rdd_treat = running_dfi >= 0

collapse (mean) $y, by(year)
tsset year
arch $y, arch(1) garch(1)
export delimited using "$JOB_DIR/garch_results.csv", replace

实际输出表

这张表是本方法页配套案例的输出结果,用来把前面的公式、变量口径和代码对应到实际数字。

指标数值解释
样本1200 obs / 196 firms / 2015-2020来自共用案例 CSV
因变量ln(1 + patent_count)企业创新产出
核心解释变量dfi_index数字普惠金融指数
输出文件garch_results.csvempirical-wizard 对应方法产物
年度聚合观测6面板案例按 year 聚合
ln Patent 年趋势0.0993年度均值趋势斜率
DFI 年趋势22.3130数字金融指数年度变化

案例图

这是一张由同一份案例数据生成的页面内诊断图。

GARCH 波动率模型 的共用案例输出图。
GARCH 波动率模型 的共用案例输出图。

论文里怎么写

本文将企业面板按年份聚合后使用GARCH 波动率模型进行时间序列诊断。结果见 garch_results.csv。由于本教学案例年度观测较少,该页重点展示代码和解释框架,正式论文需要更长时间序列。

检查清单

  • 先确认收益率或残差存在波动聚集,再估计 GARCH。
  • 检查 α、β 和 α+β,判断冲击是否持久影响波动率。
  • GARCH 解释的是条件方差,不是均值方程里的平均影响。

返回教程库 · 查看共用案例