Gamma翻转位是什么?如何计算和验证
了解Gamma翻转位如何由行权价、Gamma和未平仓合约构建,掌握模型假设、零点含义及核查方法,避免误读其对市场波动的指示。
Gamma翻转位是预估的做市商总Gamma穿越零点时的标的价格。在该价格上方,现有期权持仓结构意味着对冲资金流倾向于抑制价格变动。在该价格下方,资金流则倾向于放大价格变动。这个水平是一个模型输出。它基于公开期权数据,并加入了一个重要假设:各方分别持有什么仓位。因此,理解其构建方式更有价值。
Gamma翻转位由哪些因素构成
Gamma是标的价格变动时,期权Delta的变化率,详见什么是期权Gamma。管理对冲组合的交易台会随着Delta漂移买卖标的资产,具体机制见Delta对冲如何运作。Gamma决定标的每变动一个点,对冲仓位需要调整多少。将期权链中每份合约的Gamma相加,并为每份合约赋予符号和权重,就得到Gamma敞口,通常写作GEX。翻转位是该总量的一个特定读数,即总量穿越零点时对应的标的价格。
计算需要四项输入:
- 每个行权价和到期日对应的每份合约Gamma,采用Black-Scholes模型计算。
- 符号约定。通常假设做市商卖出看涨期权、买入看跌期权,因此看涨期权Gamma以负号计入,看跌期权Gamma以正号计入。
- 每份合约的权重。公开发布的水平通常使用未平仓合约数。
- 缩放步骤:先乘以每份合约100股的合约乘数,再乘以现货价格的平方和0.01,得到标的每变动1%时Delta的美元总额。
符号约定值得单独说明。假设情况相反,即做市商买入看涨期权、卖出看跌期权,那么总量中的每个数字都会变号。但零点不会移动。改变的只是翻转位哪一侧被定义为正值。
第一步:行权价梯度上的每份合约Gamma
每份合约的Gamma并不会在整条期权链上保持不变。它通常在平值附近达到峰值,并向两侧下降。下方图表固定使用一个过去的交易日,即数据中记录的2026年6月最后一个交易日,并计算收盘价上下6%范围内、到期日为20至45天的期权在各行权价上的平均每份合约Gamma。
| 行权价 | 看涨期权伽马 | 看跌期权伽马 |
|---|---|---|
| 705 | 0.00523 | 0.00512 |
| 710 | 0.00575 | 0.00589 |
| 715 | 0.00653 | 0.00678 |
| 720 | 0.00766 | 0.00776 |
| 725 | 0.00844 | 0.00888 |
| 730 | 0.00946 | 0.01002 |
| 735 | 0.0107 | 0.01137 |
| 740 | 0.01198 | 0.01239 |
| 745 | 0.01268 | 0.01344 |
| 750 | 0.01377 | 0.0142 |
| 755 | 0.01379 | 0.01446 |
| 760 | 0.01364 | 0.01404 |
| 765 | 0.01253 | 0.01204 |
| 770 | 0.01118 | 0.0112 |
| 775 | 0.00929 | 0.00957 |
| 780 | 0.00745 | 0.00814 |
每个数字背后的完整 SQL
SELECT
toString(toInt32(strike_price)) AS strike,
round(avgIf(toFloat64(gamma), lower(substring(option_type, 1, 1)) = 'c'), 5) AS call_gamma,
round(avgIf(toFloat64(gamma), lower(substring(option_type, 1, 1)) = 'p'), 5) AS put_gamma
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date <= '2026-06-30'
)
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND modulo(toInt32(strike_price), 5) = 0
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.06
GROUP BY strike_price
HAVING countIf(lower(substring(option_type, 1, 1)) = 'c') > 0
AND countIf(lower(substring(option_type, 1, 1)) = 'p') > 0
ORDER BY strike_price在该区间的最低行权价处,平均看涨期权Gamma为0.00523;在最高行权价处为0.00745;峰值位于两者之间的16个行权价上。模型中,同一行权价和到期日的看涨期权Gamma与看跌期权Gamma相同,因此图中的两条线彼此重合。区分两者的是符号约定,而不是Gamma本身。
第二步:符号、权重与曲线转向位置
单份合约的敞口很小。假设某个行权价有100份合约,Gamma为0.02,而标的价格为600美元。将0.02乘以100份合约、100股的合约乘数、600的平方,再乘以0.01,得到标的每变动1%时约72万美元的Delta。这就是下一张图使用的单位,图中以百万美元表示。
该图沿用同一固定交易日,展示截至45天内所有到期日的行权价梯度。每个行权价的贡献按照上述约定赋予符号,并以该交易日的合约成交量加权;累计列则从最低行权价向上累加。
| 行权价 | 行权价伽马(百万美元) | 累计伽马(百万美元) |
|---|---|---|
| 705 | 42.4 | 42.4 |
| 710 | 130.8 | 173.2 |
| 715 | 41 | 214.2 |
| 720 | 99.8 | 314 |
| 725 | 200.1 | 514.1 |
| 730 | 253.4 | 767.5 |
| 735 | 442.2 | 1209.7 |
| 740 | 1162.1 | 2371.8 |
| 745 | 1536.8 | 3908.6 |
| 750 | -4878.8 | -970.2 |
| 755 | -881.6 | -1851.8 |
| 760 | -395.7 | -2247.5 |
| 765 | -115.3 | -2362.8 |
| 770 | -43.8 | -2406.6 |
| 775 | -26.8 | -2433.4 |
| 780 | -14 | -2447.4 |
| 785 | -5.6 | -2453 |
| 790 | -2.5 | -2455.5 |
每个数字背后的完整 SQL
SELECT
strike,
strike_gamma_musd,
round(sum(strike_gamma_musd) OVER (ORDER BY strike_num), 1) AS running_gamma_musd
FROM
(
SELECT
toInt32(strike_price) AS strike_num,
toString(toInt32(strike_price)) AS strike,
round(sum(multiIf(lower(substring(option_type, 1, 1)) = 'c', -1.0, 1.0)
* toFloat64(gamma) * volume * 100
* pow(toFloat64(underlying_close), 2) * 0.01) / 1e6, 1) AS strike_gamma_musd
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date <= '2026-06-30'
)
AND iv_converged = 1
AND volume > 0
AND days_to_expiry <= 45
AND modulo(toInt32(strike_price), 5) = 0
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.06
GROUP BY strike_price
)
ORDER BY strike_num区间最低行权价贡献标的每变动1%时42.4百万美元的Delta,最高行权价贡献-2.5百万美元。整个12%的区间合计为-2455.5百万美元。从左向右观察累计线:当按看跌期权加权的行权价占主导时,曲线向上攀升;当按看涨期权加权的行权价开始占据平衡时,曲线转向。曲线转向对应的价格就是翻转位估计值。整个过程都是读者可以手动复核的记账计算,这正是重点。
该水平不代表什么
上述构建过程没有观察任何做市商。未平仓合约数只能说明某份合约存在,并不能说明做市商持有哪一边。开源GEX仪表板背后的项目在其README中明确说明了这一限制,并将该输出描述为基于未平仓合约数计算的Black-Scholes近似值:
并非对实际做市商仓位的衡量
(项目README,截至2026年9月)
覆盖范围是第二个缺口。该仪表板背后的免费数据源不提供现金指数代码SPX、XSP、NDX、RUT、DJX和VIX的期权链接口,而市场参与者最常引用这些代码的翻转位。针对其中任何一个代码发布的水平,都是在其他地方计算的,可能基于付费期权链,也可能基于ETF代理。SPX和SPY期权追踪同一指数,名义规模比例约为十比一;基于其中一个构建的水平,必须重新缩放后才能描述另一个。
曲线本身是第三个问题。严格的翻转位计算应在每个候选标的价格下重新评估每份合约的Gamma,并寻找所得函数的零点。上面的梯度代理没有进行任何重新定价,而是读取某一收盘时点的持仓平衡。本页图表还使用成交量而不是未平仓合约数进行加权,因为成交量是这份每日Greeks数据提供的每份合约权重。形状可能相同,但权重不同。
为什么不同数据商会为同一指数发布不同的水平
上述每一项输入都涉及选择,不同数据商的设定也不同。到期日窗口是差异最明显的一项。下图使用同一交易日的四个到期日区间,重新计算同一估计值。
| 到期天数区间 | 现货收盘价 | 翻转估算值 |
|---|---|---|
| 0 to 1 days | 746.3 | 745 |
| 2 to 7 days | 746.3 | 744 |
| 8 to 30 days | 746.3 | 746 |
| 31 to 90 days | 746.3 | 745 |
每个数字背后的完整 SQL
SELECT
dte_bucket,
round(any(spot), 2) AS spot_close,
round(argMax(strike, running), 2) AS flip_estimate
FROM
(
SELECT
dte_bucket,
bucket_order,
spot,
strike,
sum(net_gamma) OVER (PARTITION BY dte_bucket ORDER BY strike) AS running
FROM
(
SELECT
multiIf(days_to_expiry <= 1, '0 to 1 days',
days_to_expiry <= 7, '2 to 7 days',
days_to_expiry <= 30, '8 to 30 days',
'31 to 90 days') AS dte_bucket,
multiIf(days_to_expiry <= 1, 1,
days_to_expiry <= 7, 2,
days_to_expiry <= 30, 3, 4) AS bucket_order,
toFloat64(strike_price) AS strike,
any(toFloat64(underlying_close)) AS spot,
sum(multiIf(lower(substring(option_type, 1, 1)) = 'c', -1.0, 1.0)
* toFloat64(gamma) * volume * 100) AS net_gamma
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date <= '2026-06-30'
)
AND iv_converged = 1
AND volume > 0
AND days_to_expiry <= 90
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.15
GROUP BY dte_bucket, bucket_order, strike
)
)
GROUP BY dte_bucket, bucket_order
ORDER BY bucket_order零至一天的区间将估计值置于745,而收盘价为746.3。三十一至九十天的区间将估计值置于745。同一套持仓、同一个交易日、同一个公式,却得到四个答案。将所有挂牌到期日相加的仪表板,与只计算最近月合约的仪表板,并未描述同一个量,但两者都不一定错误。
其他参数也同样会产生差异:
- 权重:前一结算价时的未平仓合约数、盘中更新的未平仓合约数,或成交量。
- 行权价区间:在截断之前,计算范围延伸到多深的虚值期权。
- 符号约定:它会重新标记两侧,但不会移动交叉点。
- 快照时间。
- 水平是直接基于指数期权计算,还是基于重新缩放后的ETF代理计算。
为什么该水平会在交易时段内移动
当日到期的未平仓合约会在交易时段内产生和注销。零日到期(0DTE)区间是持仓变化最快的部分,目前占指数期权成交量的较大份额,相关内容见0DTE期权及其风险。上午9:45 ET计算的水平,与下午2:00 ET计算的同一水平,所依据的是现货价格附近行权价的不同未平仓合约数;而这些行权价的每份合约Gamma最大。盘中更新数据的数据商会发布一个全天移动的水平。只在前一收盘时点进行快照的数据商,则会发布一个保持不变的水平。
该估计值是否会逐日变化
在2026年6月的21个交易日中,同一梯度估计值与收盘价之间的距离每天都在变化。
| 日期 | 交易时段标签 | 现货收盘价 | 翻转估算值 |
|---|---|---|---|
| 2026-06-01 | Jun 1 | 756.58 | 757 |
| 2026-06-02 | Jun 2 | 759.63 | 759 |
| 2026-06-03 | Jun 3 | 750.55 | 753 |
| 2026-06-04 | Jun 4 | 754.56 | 756 |
| 2026-06-05 | Jun 5 | 735.36 | 742.5 |
| 2026-06-08 | Jun 8 | 738.72 | 742.5 |
| 2026-06-09 | Jun 9 | 735.7 | 735 |
| 2026-06-10 | Jun 10 | 722.88 | 729 |
| 2026-06-11 | Jun 11 | 739.48 | 730 |
| 2026-06-12 | Jun 12 | 742.45 | 740 |
| 2026-06-15 | Jun 15 | 753.91 | 754 |
| 2026-06-16 | Jun 16 | 750.75 | 751 |
| 2026-06-17 | Jun 17 | 745.6 | 744 |
| 2026-06-18 | Jun 18 | 746.94 | 746 |
| 2026-06-22 | Jun 22 | 743.67 | 745 |
| 2026-06-23 | Jun 23 | 735.02 | 734 |
| 2026-06-24 | Jun 24 | 737.2 | 732 |
| 2026-06-25 | Jun 25 | 732.7 | 735 |
| 2026-06-26 | Jun 26 | 731.2 | 733 |
| 2026-06-29 | Jun 29 | 740.76 | 739 |
每个数字背后的完整 SQL
SELECT
toString(d) AS date,
formatDateTime(d, '%b %e') AS session_label,
round(any(spot), 2) AS spot_close,
round(argMax(strike, running), 2) AS flip_estimate
FROM
(
SELECT
d,
spot,
strike,
sum(net_gamma) OVER (PARTITION BY d ORDER BY strike) AS running
FROM
(
SELECT
date AS d,
toFloat64(strike_price) AS strike,
any(toFloat64(underlying_close)) AS spot,
sum(multiIf(lower(substring(option_type, 1, 1)) = 'c', -1.0, 1.0)
* toFloat64(gamma) * volume * 100) AS net_gamma
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date BETWEEN '2026-06-01' AND '2026-06-30'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry <= 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.15
GROUP BY d, strike
)
)
GROUP BY d
ORDER BY d在Jun 1,估计值为757,收盘价为756.58。在Jun 30,估计值为746,而收盘价为746.3。两条线同步变化,这是以成交量集中位置为锚的统计量应有的表现。真正需要观察的是两者之间的差距。
如何检验已发布的翻转位是否合理
- 确认包含哪些到期日,以及在截断前计算范围延伸到多深的虚值期权。
- 确认使用何种权重,以及该权重对应的快照时间。
- 确认计算基于指数本身,还是基于重新缩放后的ETF代理。
- 在同一交易日重建行权价梯度,观察自己的转向位置是否落在相近区域。两个严谨的构建结果相差30点,说明差异来自方法,而不是市场。
- 注意精度。指数行权价梯度通常以5点或更大的间距排列,Greeks数据按日提供,因此精确到美分的水平,比其基础数据所支持的精度更高。
常见问题
期权中的Gamma翻转位是什么?
它是总做市商Gamma的估计值穿越零点时对应的标的价格。计算时,为每份合约的Gamma赋予符号,以未平仓合约数加权,再乘以合约乘数并汇总整条期权链。该估计基于公开期权数据,并不反映做市商库存的实际情况。
Gamma翻转位与GEX是同一个概念吗?
不是。GEX是总Gamma数值本身,通常表示为标的每变动1%时Delta对应的美元金额。翻转位则是该总量穿越零点时对应的单一标的价格。GEX是一条曲线,翻转位是曲线上的一个点。
为什么不同仪表板显示的同一指数Gamma翻转位不同?
因为它们采用了不同的输入:到期日窗口、行权价区间、权重及其快照时间、符号约定,以及水平是基于指数期权还是重新缩放后的ETF代理。上面的到期日图表仅改变一项输入,就从同一交易日得出四个不同的估计值。
Gamma翻转位会在交易日内变化吗?
对于会进行盘中更新的构建方式,会变化。当日到期合约的未平仓合约数会在交易时段内产生和注销,而最接近现货价格的行权价具有最大的Gamma权重。只在前一收盘时点进行快照的水平,会保持不变,直到下一次快照。
本页每张图表下方都附有完整且精确的SQL。您可以在Strasmore终端上换用其他代码或交易日重建该梯度,观察转向位置落在哪里。