halo 的技术博客

返回

1976 年 Fischer Black 观察到一件怪事:当股票下跌时,它的波动率往往比同等幅度上涨时跳得更凶。这违背了「波动只取决于幅度、不取决于方向」的直觉,也直接打脸了当时所有对称的波动率模型。这就是杠杆效应(leverage effect)——名字来自「股价跌→公司权益贬值→杠杆率上升→风险更大」的机制(当然现实里还有波动率反馈等别的解释,但现象是铁打的)。

标准 GARCH(1,1) 的方程是对称的:

σt2=ω+αεt12+βσt12\sigma_t^2 = \omega + \alpha\,\varepsilon_{t-1}^2 + \beta\,\sigma_{t-1}^2

注意这里只有 εt12\varepsilon_{t-1}^2——平方抹掉了符号,所以「跌 3%」和「涨 3%」对明天方差的贡献一模一样。本文用 GJR / TGARCH(Glosten-Jagannathan-Runkle, 1993) 的阈值项把方向加回来,从零模拟带杠杆效应的数据,再用 MLE 把它精确还原出来。

一、阈值项:给「坏消息」加一记重拳#

GJR-GARCH 在 α\alpha 项后加一个只对负冲击生效的阈值项:

σt2=ω+αεt12+γεt12I(εt1<0)+βσt12\sigma_t^2 = \omega + \alpha\,\varepsilon_{t-1}^2 + \gamma\,\varepsilon_{t-1}^2\,I(\varepsilon_{t-1}<0) + \beta\,\sigma_{t-1}^2

其中 I()I(\cdot) 是指示函数:只有上一期收益为负时才取 1。于是:

  • 利好(εt1>0\varepsilon_{t-1}>0):σt2=ω+αεt12+βσt12\sigma_t^2 = \omega + \alpha\,\varepsilon_{t-1}^2 + \beta\,\sigma_{t-1}^2
  • 利空(εt1<0\varepsilon_{t-1}<0):σt2=ω+(α+γ)εt12+βσt12\sigma_t^2 = \omega + (\alpha+\gamma)\,\varepsilon_{t-1}^2 + \beta\,\sigma_{t-1}^2

只要 γ>0\gamma>0同等幅度的坏消息就会推高更多方差γ\gamma 就是杠杆效应的强度刻度。

二、News Impact Curve:非对称的 V 形#

把上式画成「过去冲击 εt1\varepsilon_{t-1} → 下一期方差 σt2\sigma_t^2」的曲线,对称 GARCH 是对称的 U 形,GJR 则是左半边更陡的 V 形——负半轴被 γ\gamma 抬高了:

新闻冲击曲线:GJR(绿)在负半轴明显更陡,对称 GARCH(橙虚线)左右对称

这条曲线是判断「你的数据有没有杠杆效应」最直观的体检表。如果实测的 V 形左右不对称,那就别用对称 GARCH。

三、Python:模拟 + 高斯 MLE 拟合#

下面模拟一个真值 γ=0.09\gamma=0.09 的 GJR 过程,再用 scipy.optimize 做极大似然估计,分别拟合「非对称 GJR」和「强制 γ=0 的对称 GARCH」:

四、结果:模型精确还原真值,且显著优于对称#

拟合输出(对数似然值为全样本累计):

  • GJR 拟合ω^=1.12×106, α^=0.060, γ^=0.090, β^=0.880\hat\omega=1.12\times10^{-6},\ \hat\alpha=0.060,\ \hat\gamma=0.090,\ \hat\beta=0.880,LL = 14142.0
  • 对称 GARCH 拟合:强制 γ=0\gamma=0,LL = 14089.2
  • 对数似然增益 = +52.8——在 4000 个观测下,这是压倒性的证据:对称模型被显著拒绝;
  • 用各自模型过滤出的条件方差按「过去收益符号」分组,利空后的均值方差 / 利好后的均值方差:GJR ≈ 1.06,对称 ≈ 0.98——非对称模型确实学到了「坏消息更狠」,对称模型则左右无差。

左:GJR 对数似然更高;右:GJR 残差条件方差在利空后更高,对称模型≈1

再看原始数据的散点:横轴是昨天的收益,纵轴是今天的平方收益,按正负着色——左半边(坏消息)的点明显整体偏高,bin 均值线在负区翘起:

过去收益 vs 次日平方收益的杠杆散点:负收益后次日波动更大

五、实盘三类真实陷阱#

陷阱一:波动率反馈 vs 杠杆效应,别混为一谈。 上面模拟用的是「收益冲击 → 波动」的单向 GJR 结构,但真实市场里存在波动率反馈:波动上升本身会压低价格,制造负收益,于是「跌」和「波动升」互为因果。纯 GJR 把它当成单向,会高估杠杆效应、低估反馈。严谨做法是用隔夜收益(剔除交易时段波动反馈)单独估计杠杆项,或与 Heston 类联立模型对照。

陷阱二:残差不是高斯的,用 t 分布或偏 t。 我们用高斯 MLE 很方便,但金融收益有厚尾 + 左偏——用正态似然会系统性低估极端事件的方差,并把 β\beta 估得偏高(用条件方差去「硬扛」本该由厚尾解释的部分)。真实落地务必用 Student-t 或偏 t 分布的似然,并把自由度 νν 一起估出来;否则你的 VaR/CVaR 会失真。

陷阱三:初值与局部最优。 GARCH 类的似然面在 (α,β)(\alpha,\beta) 接近 1 时极平坦,朴素初值常卡在边界(如 β=0.99\beta=0.99)。上面用了「无条件是方差」做 σ0\sigma_0 初值、并把参数框在合理界内;实战还要多组初值跑几遍取最优,否则你以为估到「真值」,其实只是局部极值。

六、落地路径与诚实结论#

真实复现时:

  • 数据:日收益即可(GJR 不需要高频),但样本要跨越多空 regime,至少 2000 个交易日;
  • 分布:默认用 Student-t 似然,自由度一起估;若做期权,考虑对上行/下行分别建模;
  • 用途γ^\hat\gamma 直接告诉你「你的标的对坏消息有多敏感」——γ\gamma 大的资产(如小盘、加密)该给更宽的止损和更高的危机保证金;它也是波动率风险溢价偏度风险溢价的建模基石;
  • 组合进预测:把 GJR 条件方差接进上一篇文章的 HAR-RV,可同时建模「非对称 + 长记忆」,是实盘波动率预测的标配。

结论:杠杆效应是真实存在的,标准对称 GARCH 看不见它。GJR/TGARCH 用一行阈值项 I(εt1<0)I(\varepsilon_{t-1}<0) 就把方向信息请了回来——我们的 MLE 把真值 γ=0.090\gamma=0.090 原样还原,对数似然比对称模型高出 52.8,条件方差在利空后确实更高。但记住:它假设「冲击→波动」是单向的、残差是高斯的、似然面是单峰的——这三条里任何一条在实盘被打破,你估出的 γ\gamma 都可能是幻觉。先换 t 分布、再核查波动率反馈、多组初值收尾,杠杆效应才会从论文里的 0.09 变成你风控里真能用的刻度。

阈值 GARCH 与杠杆效应:坏消息为什么比好消息更搅动波动
https://blog.halo26812.eu.org/blog/threshold-garch-leverage
Author halo
Published at 2026年7月12日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨