ガンマ・フリップ水準とは?
ガンマ・フリップ水準の意味と、権利行使価格別のガンマや建玉からの計算方法を解説します。推定値を検証するポイントも確認できます。
ガンマ・フリップ水準とは、ディーラーの推定合計ガンマがゼロを横切る原資産価格です。その価格を上回ると、現在のオプション・ブックは値動きに逆らうヘッジフローを示します。下回ると、値動きに追随するフローを示します。この水準は、公開オプションデータに、保有者と保有内容に関する大きな仮定を一つ加えて作るモデル出力です。重要なのは、その構築方法です。
ガンマ・フリップ水準の構成要素
ガンマとは、原資産が動いたときにオプションのデルタが変化する割合です。詳しくはオプションのガンマとはを参照してください。ヘッジ付きのブックを運用するデスクは、デルタの変化に応じて原資産を売買します。その仕組みはデルタヘッジの仕組みで説明しています。ガンマは、値動き一ポイント当たりにヘッジをどれだけ変更する必要があるかを決めます。権利行使価格と満期ごとに、チェーンに含まれる全契約のガンマを符号とウェイト付きで合計すると、ガンマ・エクスポージャー(通常はGEXと表記)になります。フリップとは、この合計値がゼロを通過する原資産価格という、特定の一つの読み方です。
必要な入力は四つです。
- 各権利行使価格・満期における契約当たりのガンマ。Black-Scholes計算から取得します。
- 符号の定義。通常の構築では、ディーラーがコールをショートし、プットをロングしていると仮定します。そのため、コールのガンマは合計にマイナス、プットのガンマはプラスで入ります。
- 契約ごとのウェイト。公表水準では建玉を使います。
- スケーリング。100株の契約乗数を掛け、さらに現物価格の二乗と0.01を掛けます。これにより、1%の値動き当たりのデルタ総額をドルで示します。
符号の定義は、もう一度確認する必要があります。逆に、ディーラーがコールをロングし、プットをショートしていると仮定すると、合計値のすべての数字の符号が反転します。ゼロを横切る価格は変わりません。変わるのは、水準のどちら側をプラスと呼ぶかです。
第一段階:権利行使価格ごとの契約当たりガンマ
契約当たりのガンマは、チェーン全体で一定ではありません。アット・ザ・マネー付近で最大となり、そこから上下に離れるほど低下します。下のパネルは、特定の過去の一セッションに固定しています。このデータに収録された2026年6月の最終セッションを対象とし、終値から6%以内の各権利行使価格について、満期まで20~45日の契約当たりガンマを平均しています。
| 権利行使価格 | コール・ガンマ | プット・ガンマ |
|---|---|---|
| 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この範囲の最下限の権利行使価格では、平均コール・ガンマは0.00523です。最上限では0.00745で、16個の権利行使価格にわたり、その間に山が形成されています。同じ権利行使価格・満期では、モデル上、コールとプットのガンマは同じ値です。そのため、パネルの二つの系列は重なります。両者を分けるのはガンマではなく、符号の定義です。
第二段階:符号、ウェイト、カーブの転換点
一契約のエクスポージャーは小さいものです。原資産が600ドルのとき、ガンマ0.02で100契約の権利行使価格を考えます。0.02に100契約、100株の契約乗数、600の二乗、0.01を掛けると、1%の値動き当たりおよそ72万ドルのデルタになります。次のパネルは、この単位を百万ドルで示しています。
このパネルは、同じ固定セッションについて、満期45日までの全満期を対象に権利行使価格の並びを示します。各権利行使価格の寄与には、上記の定義に基づく符号を付け、そのセッションの取引契約数量でウェイト付けしています。累積列は、最も低い権利行使価格から上向きに積み上げています。
| 権利行使価格 | 権利行使価格別ガンマ MUSD | 累積ガンマ MUSD |
|---|---|---|
| 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百万ドルのデルタを寄与し、最上限は-2.5百万ドルを寄与します。12%の範囲全体では、合計は-2455.5百万ドルです。累積線を左から右へ見てください。プットのウェイトが優勢な権利行使価格では上昇し、コールのウェイトが優勢になって均衡を取ると反転します。この反転する価格がフリップ推定値です。各段階は、読者が手計算で再現できる集計作業にすぎません。そこが重要です。
この水準では分からないこと
この構築方法では、ディーラーを直接観測していません。建玉から分かるのは、契約が存在することだけです。マーケットメーカーがその契約のどちら側を保有しているかは分かりません。オープンソースのGEXダッシュボードのプロジェクトは、READMEでこの限界を明示し、出力を建玉から計算したBlack-Scholes近似として説明しています。
実際のマーケットメーカーのポジションを示すものではない
(プロジェクトREADME、2026年9月時点)
二つ目の不足はカバレッジです。このダッシュボードの基盤となる無料データソースには、現物指数シンボルのオプション・チェーン用エンドポイントがありません。対象はSPX、XSP、NDX、RUT、DJX、VIXです。これらは実務家がフリップ水準を頻繁に参照するシンボルそのものです。これらの水準として公表されたものは、別の場所で、有料のチェーンデータまたはETFプロキシを使って計算されています。SPXとSPYのオプションは同じ指数を追跡しますが、想定元本はおよそ10対1です。一方を基にした水準を他方に適用するには、再スケーリングが必要です。
三つ目はカーブそのものです。適切なフリップ計算では、候補となる原資産価格ごとに全契約のガンマを再評価し、そこから得られる関数のゼロ点を探します。上の権利行使価格ラダーによる近似では、再評価を行いません。一つの終値時点でのブックの需給バランスを読んでいます。ここでのパネルは、建玉ではなく取引数量でウェイト付けしています。この日次ギリシャ指標データでは、契約ごとのウェイトとして取引数量を使っているためです。形状は同じでも、ウェイトは異なります。
同じ指数について二つのベンダーが異なる水準を公表する理由
上記の入力はすべて選択項目です。ベンダーごとに設定が異なります。最も大きな違いは満期の対象範囲です。下のパネルでは、同じセッションについて、満期カレンダーを四つの区分に分けて同じ推定値を再計算しています。
| 満期までの日数バケット | スポット終値 | フリップ推定値 |
|---|---|---|
| 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満期まで0~1日の区分では、終値746.3に対して推定値は745です。満期まで31~90日の区分では、推定値は745です。一つのブック、一つのセッション、一つの計算式でも、答えは四つになります。上場されている全満期を合計するダッシュボードと、最前限月で止めるダッシュボードは、同じ数量を示していません。どちらも間違いではありません。
その他の設定も同様です。
- ウェイト。前日清算値時点の建玉、日中に更新した建玉、または取引数量。
- 権利行使価格の範囲。合計に含める範囲を、アウト・オブ・ザ・マネーのどこまで広げるか。
- 符号の定義。交差点を動かさず、両側の呼び方だけを変えます。
- スナップショットの時刻。
- 水準を指数オプションから直接計算するか、再スケーリングしたETFプロキシから計算するか。
水準がセッション中に動く理由
同日満期の建玉は、セッション中に新たに作られ、消滅します。満期まで0~1日の区分はブックの中で最も速く動く部分です。現在では指数オプション取引数量の大きな割合を占めています。詳しくは0DTEオプションとそのリスクを参照してください。米東部時間午前9時45分に計算した水準と、午後2時に計算した同じ水準では、現物価格に近い権利行使価格の建玉が異なります。そこでは契約当たりガンマが最大です。日中に更新するベンダーは、セッション中に動く水準を公表します。前日終値時点で一度だけスナップショットを取るベンダーは、次の更新まで変わらない水準を公表します。
推定値は日々変化するのか
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 dJun 1には、終値756.58に対して推定値は757となりました。Jun 30には、終値746.3に対して推定値は746となりました。二つの系列が連動するのは、取引数量が集中する場所を基準にした統計値だからです。実際に読むべきなのは、両者の差です。
公表されたフリップ水準の妥当性を確認する方法
- 対象となる満期と、合計を打ち切るまでにどこまでアウト・オブ・ザ・マネーを含めるかを確認します。
- どのウェイトを使い、そのウェイトをいつ取得したかを確認します。
- 指数そのものから計算したのか、ETFプロキシから計算して再スケーリングしたのかを確認します。
- 同じセッションのラダーを再構築し、転換点が同じ付近になるか確認します。正当な二つの構築方法で30ポイント離れた場合、市場ではなく手法の違いを示しています。
- 精度の表示を確認します。指数の権利行使価格ラダーは5ポイント以上の間隔で、ギリシャ指標は日次データです。そのため、セント単位で示された水準は、計算の基礎にある情報より細かい精度です。
よくある質問
オプションにおけるガンマ・フリップ水準とは何ですか?
ディーラーの合計ガンマの推定値がゼロを横切る原資産価格です。各契約のガンマに符号を付け、建玉でウェイト付けし、契約乗数でスケーリングしたうえで、チェーン全体を合計して算出します。ディーラーの在庫に関する見解ではなく、公開オプションデータから得られます。
ガンマ・フリップはGEXと同じものですか?
いいえ。GEXは合計ガンマそのもので、通常は1%の値動き当たりのデルタをドルで示します。フリップは、その合計値がゼロを通過する原資産価格です。GEXはカーブであり、フリップはその上の一点です。
同じ指数について二つのダッシュボードが異なるガンマ・フリップ水準を示すのはなぜですか?
満期の対象範囲、権利行使価格の範囲、ウェイトとその取得時刻、符号の定義、指数オプションを使うか再スケーリングしたETFプロキシを使うかが異なるためです。上の満期パネルでは、一つの入力だけを変えることで、同じセッションから四つの異なる推定値が得られます。
ガンマ・フリップ水準は取引時間中に変化しますか?
日中に更新する構築方法では、変化します。同日満期の建玉はセッション中に新たに作られ、消滅します。現物価格に近い権利行使価格ほど、ガンマのウェイトが大きくなります。前日終値時点で一度だけスナップショットを取った水準は、次の更新まで変わりません。
このページの各パネルには、その下に対応するSQLを正確に掲載しています。Strasmore terminalで別のシンボルまたは別のセッションについてラダーを再構築し、転換点がどこに現れるか確認してください。