halo 的技术博客

返回

做市商 GEX 剖面与 Gamma 翻转点

期权市场有一个奇特的镜像结构:客户的每一张期权,做市商都拿着相反的头寸。客户整体买了多少 gamma,做市商就整体空了多少 gamma——而空 gamma 的人必须动态对冲,对冲就要在现货或期货市场上真金白银地买卖。这些对冲单不关心基本面、不关心估值,只跟着价格机械执行,却大到足以改变市场本身的波动结构。GEX(Gamma Exposure,伽马敞口)就是把这股机械力量量化出来的指标。

先把本文模拟的结论放在最前面:在同样的外生冲击下(噪声完全相同),正 GEX 环境的日收益标准差是 0.87%,负 GEX 环境是 1.74%——整整一倍的差距。日内 15 分钟收益的一阶自相关,正 GEX 下是 -0.34(每一步都被往回拉),负 GEX 下是 +0.29(每一步都被顺势推)。把 1000 个交易日按 GEX 水平分五组,年化收盘-收盘波动率从最负组的 22.3% 单调降到最正组的 14.2%。基于这个结构做波动择时——负 GEX 买跨式、正 GEX 卖跨式——Sharpe 2.73,而无脑做多波动的对照组 Sharpe 是 -1.01。

一、机制:为什么做市商的对冲会改变波动#

从 Black-Scholes 说起。期权的 delta 会随标的价格变化,变化率就是 gamma:

Γ = ∂²V/∂S² = φ(d1) / (S·σ·√T)
plaintext

做市商要维持 delta 中性。持有正 gamma 的做市商(比如客户净卖出 call 给他),价格涨时他的 delta 变正,需要卖出标的回到中性;价格跌时 delta 变负,需要买入。也就是:

  • 做市商正 gamma → 高抛低吸 → 负反馈 → 压制波动
  • 做市商负 gamma → 追涨杀跌 → 正反馈 → 放大波动

第二种情形正是 2018 年 2 月 Volmageddon、2020 年 3 月流动性危机中被反复点名的机制:市场下跌 → 客户抢购 put → 做市商 short put(负 gamma)→ 价格越跌越要卖出对冲 → 跌势被机械放大。

GEX 的计算就是把全市场期权持仓的 gamma 按做市商视角加总:

GEX = Σ [Γ_i × OI_i × 合约乘数 × S² × 0.01 × 方向符号]
plaintext

方向符号是关键假设:标准惯例假设做市商 long call gamma、short put gamma(即客户倾向卖 call 收权利金、买 put 做保护)。这个假设并不总成立,是 GEX 的第一大软肋,后文细说。

二、从持仓构造 GEX 剖面:翻转点在哪#

用 Python 构造一个合成的期权持仓面:行权价 3600–4400、剩余 21 个交易日、隐含波动率 18%。put 的持仓按现实规律向低行权价倾斜(保护性需求),call 向高行权价倾斜(备兑开仓):

from scipy.stats import norm
import numpy as np

def bs_gamma(S, K, T, sigma, r=0.0):
    d1 = (np.log(S/K) + (r + 0.5*sigma**2)*T) / (sigma*np.sqrt(T))
    return norm.pdf(d1) / (S * sigma * np.sqrt(T))

S_grid = np.linspace(3600, 4400, 161)
gex_profile = np.zeros_like(S_grid)
for i, S in enumerate(S_grid):
    g = bs_gamma(S, strikes, T, sigma)
    # dealer 惯例符号:+call gamma, -put gamma
    gex_profile[i] = (np.sum(g * call_oi * 100 * S**2 * 0.01)
                    - np.sum(g * put_oi  * 100 * S**2 * 0.01))
python

得到的 GEX 剖面(文章开头图)有一个决定性的特征点:Gamma 翻转点(gamma flip)——GEX 由正转负的价格水平。本例中翻转点在 4120:

  • 价格在 4120 上方:GEX 为正,做市商对冲流压波动,市场倾向于粘滞、缓涨、日内均值回复;
  • 价格跌破 4120:GEX 转负(当前价 4000 处 GEX = -18.9 亿/1% 变动),对冲流开始追涨杀跌,下跌会被机械加速。

这就是为什么期权交易员盯着 flip 点像盯着断层线:它不是支撑位或阻力位,而是市场”物理性质”发生相变的位置——上方是阻尼介质,下方是助燃介质。

三、对冲反馈模拟:同样的冲击,两倍的波动#

GEX 的因果机制无法从历史数据中干净识别(波动和 GEX 互为因果),所以这里用受控模拟:日内 26 个 bar,每个 bar 的外生冲击完全相同,唯一区别是对冲反馈的方向:

def simulate(gex_sign, kappa=0.35, n_days=250, n_intraday=26,
             sigma_d=0.011, seed=1):
    r = np.random.default_rng(seed)
    dt_vol = sigma_d / np.sqrt(n_intraday)
    paths = np.zeros((n_days, n_intraday + 1))
    for d in range(n_days):
        p, prev = 0.0, 0.0
        for t in range(1, n_intraday + 1):
            shock = r.normal(0, dt_vol)
            # 正 GEX:对冲流反向(-kappa*最近收益);负 GEX:同向
            hedge = -np.sign(gex_sign) * kappa * (p - prev) if t > 1 else 0.0
            prev = p
            p = p + shock + hedge
            paths[d, t] = p
    return paths
python

结果对比(相同随机种子,冲击序列一模一样):

指标正 GEX(压制)负 GEX(放大)
日收益标准差0.87%1.74%
日内 15 分钟收益一阶自相关-0.337+0.286

对冲反馈下的日内价格路径

图里能直接看出两种”物理状态”:左边(正 GEX)的路径被压在一个窄带里来回震荡——每次冲击都被对冲流吃掉一部分;右边(负 GEX)的路径一旦起势就滑得更远——对冲流在给趋势添柴。外生信息完全一样,市场结构把它渲染成了两种完全不同的价格行为。

日内自相关的符号翻转是最干净的证据:-0.34 意味着”这一段涨了,下一段大概率回吐”,+0.29 意味着”这一段涨了,下一段大概率继续”。同一个市场,隔着 gamma flip 点,动量策略和均值回复策略的适用性直接互换。

四、GEX 分组验证:波动结构的单调性#

把模拟拉长到 1000 个交易日,让 GEX 水平随市场内生演化——下跌触发 put 需求、做市商负 gamma 加深(现实中的路径依赖)——然后按 GEX 水平分五组看波动:

GEX 分组下的波动结构

GEX 分组年化收盘-收盘波动率日均绝对收益
G1(最负)22.3%1.09%
G217.6%0.89%
G315.9%0.81%
G414.7%0.74%
G5(最正)14.2%0.73%

从最负组到最正组,波动率单调下降,累计差距 8 个百分点。这与实证研究对标普 500 的发现方向一致:SqueezeMetrics 与后续学术复现均报告负 GEX 日的已实现波动显著高于正 GEX 日,且 GEX 对次日已实现波动有超出 VIX 的增量预测力。

五、能不能赚钱:GEX 波动择时#

波动预测力直接对应一个朴素策略:负 GEX(后 30% 分位)买跨式做多波动,正 GEX(前 30% 分位)卖跨式做空波动,中间空仓。跨式成本按日均绝对收益加 5% 溢价定价(对卖方公平略偏贵):

straddle_cost = np.abs(mkt).mean() * 1.05
pnl_long = np.abs(mkt) - straddle_cost
pnl_strat = np.where(gex < q30,  pnl_long,
            np.where(gex > q70, -pnl_long, 0.0))
python

GEX 波动择时 vs 无脑做多波动

策略Sharpe累计损益
GEX 择时2.73+94.2%
始终做多波动-1.01-42.6%

对照组说明了一件重要的事:做多波动本身是亏钱的(波动风险溢价为负),5% 的溢价成本就足以把无差别买跨式拖进深渊。GEX 择时的价值不在于”预测波动会高”,而在于只在市场结构性脆弱(负 gamma)时才支付这笔昂贵的保费,并在结构性粘滞(正 gamma)时反过来收保费。

六、GEX 的三个致命假设(实盘前必读)#

模拟里 Sharpe 2.73 很漂亮,因为模拟世界里 GEX 的符号假设是真的。现实中有三处会漏水:

1. 方向符号假设可能整体失效。 “做市商 long call / short put” 是对机构常态的统计概括。但 2021 年 GME 逼空、2023 年后 0DTE 爆发时期,散户大量买入 call,做市商变成 short call gamma——此时标准 GEX 公式的 call 项符号直接算反。改良方案是用逐笔成交的主动方向(类似 Lee-Ready)估计每个行权价上客户的净方向,CBOE 的部分数据产品已提供,但成本高一个数量级。

2. OI 不等于净敞口。 未平仓量是多空合计口径,同一行权价上做市商之间可以互相抵消,跨市场(SPX/SPY/ES 期权)的敞口也无法从单一交易所 OI 看全。GEX 的绝对数值因此只有量级意义,跨时间的相对变化和符号比水平值可靠得多

3. 对冲频率和执行方式未知。 有的做市商逐笔对冲,有的按时间片对冲,还有的用期货、VIX 产品交叉对冲。模拟里的反馈系数 kappa 是常数,现实中它随做市商库存、风险预算、波动环境剧烈变化——负 gamma 环境恰恰是做市商最想缩表的时候,反馈强度可能非线性跳升(这也是崩盘尾部比模型更肥的原因之一)。

七、工程落地清单#

如果要把 GEX 加入自己的监控体系:

  1. 数据:期权链快照(行权价、到期、OI、IV),美股可用 CBOE 延迟数据,A 股用上交所 50ETF/300ETF 期权与中金所股指期权的每日持仓;
  2. 计算:只用近月 + 次近月合约(gamma 集中在短到期),按上文公式聚合,同时输出 GEX 水平和 flip 点价格;
  3. 信号使用优先级:flip 点相对现价的位置 > GEX 符号 > GEX 具体数值;
  4. 组合应用:负 GEX 时段调低趋势策略的止损宽度预期(波动放大)、调高均值回复策略的入场阈值(回复力消失)——GEX 更适合作为其他策略的 regime 过滤器,而非独立信号

总结#

GEX 把”期权市场的尾巴摇动现货市场的狗”这一机制变成了可计算的指标。它的价值不是预测方向——GEX 对收益方向几乎没有预测力——而是预测波动的结构:正 GEX 是阻尼介质,冲击被吸收,均值回复占优;负 GEX 是助燃介质,冲击被放大,趋势与尾部风险占优。模拟验证了这条链路的每一环:自相关符号翻转(-0.34 vs +0.29)、波动翻倍(0.87% vs 1.74%)、五分组单调(22.3% → 14.2%)、择时可盈利(Sharpe 2.73)。实盘使用时,记住它的三个软肋——方向假设、OI 口径、对冲行为不可观测——把它当 regime 温度计用,别当水晶球用。

GEX 伽马敞口:做市商对冲流如何压制与放大波动
https://blog.halo26812.eu.org/blog/gamma-exposure-gex
Author halo
Published at 2026年7月29日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨