감마 플립 레벨이란 무엇인가
감마 플립 레벨은 추정 딜러 감마가 영을 통과하는 기초자산 가격을 의미합니다. 본문에서는 행사가와 미결제약정을 활용해 이 수치를 산출하는 방법과 시장 헤징 흐름에 미치는 영향력을 상세히 설명합니다.
감마 플립 레벨(gamma flip level)은 추정된 총 딜러 감마(aggregate dealer gamma)가 0을 통과하는 기초자산 가격을 의미합니다. 이 가격 위에서는 기존 옵션 북(options book)이 시장 움직임에 역행하는 헤징 흐름을 유도하며, 아래에서는 시장 움직임에 순응하는 흐름을 유도합니다. 이 레벨은 공개된 옵션 데이터와 '누가 무엇을 보유하고 있는가'에 대한 하나의 큰 가정에 기반하여 산출된 모델 결과값이므로, 이 수치가 어떻게 도출되는지 이해하는 것이 중요합니다.
감마 플립 레벨의 구성 요소
감마는 기초자산이 움직일 때 옵션의 델타(delta)가 변하는 비율로, 옵션 감마의 정의에서 다룹니다. 헤지된 포트폴리오를 운용하는 데스크는 델타가 변함에 따라 기초자산을 매수하거나 매도하는데, 이 메커니즘은 델타 헤징의 작동 원리에 설명되어 있습니다. 감마는 기초자산이 1포인트 움직일 때마다 헤지 물량을 얼마나 조정해야 하는지를 결정합니다. 체인 내 모든 계약의 감마를 부호와 가중치를 적용해 합산하면 감마 익스포저(GEX, gamma exposure)가 산출됩니다. 감마 플립은 이 총합이 0을 통과하는 특정 기초자산 가격을 의미합니다.
산출에는 네 가지 입력값이 사용됩니다.
- 블랙-숄즈(Black-Scholes) 계산식에 따른 각 행사가(strike) 및 만기별 계약당 감마.
- 부호 관례. 일반적인 모델은 딜러가 콜옵션 매도 및 풋옵션 매수 포지션을 취하고 있다고 가정하므로, 콜 감마는 음수, 풋 감마는 양수로 합산합니다.
- 계약당 가중치. 공개된 레벨은 미결제약정(open interest)을 사용합니다.
- 스케일링 단계: 100주 단위 계약 승수를 적용한 뒤, 현물 가격의 제곱에 0.01을 곱하여 기초자산 1% 변동당 델타 달러 총액을 산출합니다.
부호 관례는 다시 살펴볼 필요가 있습니다. 반대로 딜러가 콜옵션을 매수하고 풋옵션을 매도한다고 가정하면, 총합의 모든 수치는 부호가 바뀝니다. 하지만 0을 통과하는 지점은 변하지 않습니다. 바뀌는 것은 어느 쪽이 양수 영역이 되는지뿐입니다.
1단계: 행사가 사다리에 따른 계약당 감마
계약당 감마는 옵션 체인 전반에서 일정하지 않습니다. 등가격(at the money) 부근에서 정점을 찍고 양방향으로 갈수록 감소합니다. 아래 패널은 과거 특정 세션(본 데이터에 포함된 2026년 6월 마지막 세션)을 기준으로, 종가 대비 6% 이내에 있는 각 행사가의 20~45일 만기 옵션 감마 평균값을 나타냅니다.
| 행사가(Strike) | 콜 감마(Call Gamma) | 풋 감마(Put 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해당 범위의 최하단 행사가에서 평균 콜 감마는 0.00523이며, 최상단 행사가에서는 0.00745입니다. 그 사이 16개의 행사가에 걸쳐 감마가 높아지는 구간이 형성됩니다. 모델상 동일한 행사가와 만기에서 콜 감마와 풋 감마의 수치는 동일하며, 이것이 패널에서 두 시리즈가 겹쳐 보이는 이유입니다. 양측을 구분 짓는 것은 감마 자체가 아니라 부호 관례입니다.
2단계: 부호, 가중치, 그리고 곡선의 변곡점
계약 하나당 익스포저는 작습니다. 기초자산 가격이 600달러일 때 감마가 0.02인 계약 100개를 예로 들어보겠습니다. 0.02에 100계약, 100주 승수, 600의 제곱, 0.01을 곱하면 1% 변동당 약 72만 달러의 델타가 산출됩니다. 이것이 다음 패널의 단위이며, 백만 달러 단위로 표시됩니다.
이 패널은 동일한 세션의 행사가 사다리를 만기 45일까지 추적합니다. 각 행사가의 기여도는 앞서 언급한 관례에 따라 부호가 결정되고, 해당 세션의 거래량(volume)으로 가중치가 부여되며, 누적 합계는 최하단 행사가부터 위로 올라가며 계산됩니다.
| 행사가(Strike) | 행사가 감마(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에서 이 한계를 명시하며, 산출물을 블랙-숄즈 근사치로 정의합니다.
실제 마켓 메이커 포지션의 측정치가 아님
(2026년 9월 기준, 프로젝트 README)
두 번째 공백은 커버리지입니다. 해당 대시보드의 무료 데이터 소스는 현금 지수 심볼인 SPX, XSP, NDX, RUT, DJX, VIX에 대한 옵션 체인 엔드포인트를 제공하지 않으며, 이들은 실무자들이 감마 플립 레벨을 가장 활발하게 논하는 심볼들입니다. 이들에 대해 게시된 레벨은 유료 체인이나 ETF 프록시(proxy)를 통해 다른 곳에서 계산된 것입니다. SPX와 SPY 옵션은 약 10대 1의 명목 비율로 동일 지수를 추종하므로, 한쪽을 기준으로 산출된 레벨은 다른 쪽을 설명하기 위해 재조정되어야 합니다.
세 번째는 곡선 자체의 문제입니다. 제대로 된 감마 플립은 모든 후보 기초자산 가격에서 각 계약의 감마를 재평가하여 해당 함수의 0점을 찾아야 합니다. 위에서 사용한 사다리 프록시는 아무것도 재평가하지 않으며, 단지 특정 종가 시점의 북(book) 잔액을 읽을 뿐입니다. 또한 이 패널들은 미결제약정 대신 거래량을 가중치로 사용하는데, 이는 일일 그리스(greeks) 데이터가 제공하는 계약당 가중치가 거래량이기 때문입니다. 형태는 같지만 가중치가 다릅니다.
왜 공급자마다 동일 지수에 대해 다른 레벨을 게시하는가
위의 모든 입력값은 선택의 영역이며, 공급자들은 이를 다르게 설정합니다. 만기 범위(expiration window)가 가장 큰 차이를 만듭니다. 아래 패널은 동일한 세션의 동일한 추정치를 만기 캘린더의 네 가지 구간으로 나누어 재계산한 결과입니다.
| 만기 잔존일(DTE) 구간 | 현물 종가(Spot Close) | 플립 추정치(Flip Estimate) |
|---|---|---|
| 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_order0~1일 구간의 추정치는 종가 746.3 대비 745입니다. 31~90일 구간의 추정치는 745입니다. 하나의 북, 하나의 세션, 하나의 공식으로 네 가지 답이 나옵니다. 모든 상장 만기를 합산하는 대시보드와 당월물에서 멈추는 대시보드는 서로 다른 양을 설명하고 있으며, 둘 다 틀린 것은 아닙니다.
다른 변수들도 마찬가지로 작동합니다.
- 가중치: 전일 종가 기준 미결제약정, 장중 갱신된 미결제약정, 또는 거래량.
- 행사가 밴드: 합산 시 외가격(out of the money)을 어디까지 포함할 것인가.
- 부호 관례: 0 통과 지점을 이동시키지 않고 양측의 명칭만 바꿈.
- 스냅샷 시간.
- 지수 옵션 직접 산출 여부 또는 재조정된 ETF 프록시 사용 여부.
왜 장중에 레벨이 움직이는가
당일 만기 옵션의 미결제약정은 장중에 생성되고 소멸됩니다. 0~1일 구간은 북에서 가장 빠르게 움직이는 부분이며, 현재 지수 옵션 거래량의 상당 부분을 차지합니다. 이 주제는 0DTE 옵션과 그 위험에서 다룹니다. 오전 9시 45분(ET)에 계산된 레벨과 오후 2시(ET)에 계산된 레벨은 현물 가격과 가장 가까운 행사가의 미결제약정이 다르기 때문에 차이가 발생합니다. 장중 갱신을 제공하는 공급자는 장중 내내 변하는 레벨을 게시하고, 전일 종가 기준으로 한 번만 스냅샷을 찍는 공급자는 고정된 레벨을 게시합니다.
추정치는 일별로 변하는가
2026년 6월의 21개 세션 동안, 동일한 사다리 추정치는 매일 변하는 종가와의 거리를 추적합니다.
| 날짜 | 세션 구분 | 현물 종가(Spot Close) | 플립 추정치(Flip Estimate) |
|---|---|---|---|
| 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에 위치했습니다. 두 시리즈는 함께 움직이는데, 이는 거래가 집중되는 곳에 고정된 통계치가 보이는 일반적인 현상입니다. 그 사이의 간극이 바로 사람들이 실제로 읽고 있는 부분입니다.
게시된 감마 플립 레벨을 검증하는 방법
- 어떤 만기가 포함되었는지, 외가격 합산 시 어디서 절단(truncation)되는지 확인하십시오.
- 어떤 가중치를 사용하며, 그 가중치가 언제 스냅샷된 것인지 확인하십시오.
- 지수 자체에서 계산되었는지, 아니면 ETF 프록시를 재조정했는지 확인하십시오.
- 동일 세션에서 사다리를 직접 재구성하여 변곡점이 비슷한 위치에 있는지 확인하십시오. 두 개의 정직한 산출 결과가 30포인트 차이가 난다면, 그것은 시장이 아니라 방법론에 대한 정보를 주는 것입니다.
- 정밀도를 확인하십시오. 지수 행사가 사다리는 5포인트 이상의 간격으로 배치되어 있고 그리스 데이터는 일일 단위이므로, 소수점 단위까지 표시된 레벨은 그 기반 데이터보다 더 정밀한 척하는 것일 뿐입니다.
FAQ
옵션에서 감마 플립 레벨이란 무엇인가?
총 딜러 감마 추정치가 0을 통과하는 기초자산 가격입니다. 이 추정치는 각 계약의 감마에 부호를 부여하고, 미결제약정으로 가중치를 두며, 계약 승수를 적용하여 체인 전체를 합산하여 도출합니다. 이는 딜러의 실제 인벤토리에 대한 관점이 아니라 공개된 옵션 데이터에서 나옵니다.
감마 플립은 GEX와 같은 것인가?
아닙니다. GEX는 총 감마 수치 자체를 의미하며, 보통 1% 변동당 델타 달러로 표시됩니다. 플립은 그 총합이 0을 통과하는 단일 기초자산 가격입니다. GEX는 곡선이며, 플립은 그 곡선 위의 한 점입니다.
왜 두 대시보드가 동일 지수에 대해 서로 다른 감마 플립 레벨을 보여주는가?
만기 범위, 행사가 밴드, 가중치 및 스냅샷 시간, 부호 관례, 지수 옵션 사용 여부 등 입력값이 다르기 때문입니다. 위의 만기 패널은 단 하나의 입력값만 변경해도 한 세션에서 네 가지 다른 추정치를 생성합니다.
감마 플립 레벨은 장중에 변하는가?
장중 갱신되는 모델의 경우 그렇습니다. 당일 만기 옵션의 미결제약정은 장중에 생성 및 소멸되며, 현물 가격과 가장 가까운 행사가가 가장 큰 감마 가중치를 갖기 때문입니다. 전일 종가 기준으로 한 번만 스냅샷을 찍는 레벨은 다음 스냅샷 전까지 고정됩니다.
이 페이지의 모든 패널은 그 아래에 정확한 SQL을 포함하고 있습니다. Strasmore 터미널에서 다른 심볼이나 다른 세션으로 사다리를 재구성하여 변곡점이 어디에 위치하는지 확인해 보십시오.