내재변동성으로 예상 변동폭 계산하기
주가와 IV로 예상 변동폭을 계산하는 공식, 스트래들 간편식, 실제 변동과의 차이를 확인하고 옵션시장의 기대 범위를 해석합니다.
예상 변동폭은 옵션시장이 일정 기간 동안 주가에 반영한 변동 범위다. 이를 결정하는 입력값이 내재변동성이다. 계산식은 주가에 내재변동성을 곱한 뒤, 기간을 365로 나눈 값의 제곱근을 곱하는 방식이다. 내재변동성이 30%인 100달러 주식의 30일 예상 변동폭은 약 8.60달러, 즉 8.6%다. 0.30에 30을 365로 나눈 값의 제곱근을 곱하면 0.086이 되기 때문이다. 이 수치는 일표준편차 범위다. 방향성에 대한 예측이 아니며, 주가가 이를 넘어설 수 없다는 의미도 아니다.
내재변동성으로 예상 변동폭 계산하기
내재변동성은 옵션 가격에 반영된 수익률의 연환산 표준편차다. 내재변동성은 항상 연간 수치로 표시된다. 따라서 30%라는 수치는 1년 동안의 범위를 나타내며, 그보다 짧은 기간은 이 수치에서 환산해야 한다. 변동성은 시간의 제곱근에 비례해 조정된다. 그래서 일수는 단순히 나누는 것이 아니라 제곱근 기호 안에 들어간다.
예상 변동폭 = 가격 × IV × √(일수 ÷ 365)
브로커가 표시하는 값과 계산 결과가 일치하는지는 두 가지 관행에 따라 달라진다. 365일을 기준으로 달력일을 적용하는 방식이 개인 투자자 시장의 표준이다. 반면 일부 트레이딩 데스크는 252일을 기준으로 거래일을 적용한다. 같은 IV를 사용하면 이 방식에서 범위가 조금 더 넓게 나온다. 계산 결과는 정규분포를 가정할 때 결과의 약 68%가 포함되는 1표준편차 범위다. 이 값을 두 배로 늘리면 2표준편차 범위가 되며, 결과의 약 95%를 포함한다.
입력한 IV가 실제로 높은 수준인지 여부는 별도의 문제다. 30% IV가 높은가에서는 단일 수치를 시장 자체의 분포와 비교한다.
범위가 거래일수의 제곱근에 따라 커지는 이유
한 종목과 한 거래 세션을 고정한 뒤 기간만 바꾸면 공식의 구조가 자연스럽게 드러난다. 2026년 7월 중순 Apple의 등가격 부근 계약을 만기까지 남은 기간별로 구분하면 다음과 같다.
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT multiIf(days_to_expiry <= 7, '1 week',
days_to_expiry <= 14, '2 weeks',
days_to_expiry <= 45, '1 month',
days_to_expiry <= 120, '3 months',
days_to_expiry <= 240, '6 months',
'1 year') AS horizon,
round(avg(days_to_expiry), 0) AS avg_days,
round(100 * avg(toFloat64(implied_volatility)), 1) AS iv_pct,
round(100 * avg(toFloat64(implied_volatility)) * sqrt(avg(days_to_expiry) / 365), 2) AS expected_move_pct,
round(avg(toFloat64(underlying_close)) * avg(toFloat64(implied_volatility))
* sqrt(avg(days_to_expiry) / 365), 2) AS expected_move_usd,
round(avg(toFloat64(underlying_close)), 2) AS underlying_price,
formatDateTime(max(date), '%b %e, %Y') AS as_of
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = (SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date <= toDate('2026-07-15'))
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 1 AND 400
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY horizon
HAVING count() >= 3
ORDER BY avg_daysJul 15, 2026 기준으로 1 week 구간의 평균 만기까지 남은 기간은 5일이었고, 28% 내재변동성이었다. 이에 따른 예상 변동폭은 3.17%, 주가 $327.8를 기준으로 $10.41였다. 1 year 구간의 평균 만기까지 남은 기간은 292일이었고, 28.4% IV였다. 예상 변동폭은 25.44%, 금액으로는 $83.39였다.
핵심은 절대 수준보다 비율에 있다. 거래일수를 네 배로 늘리면 종목이나 IV 수준과 관계없이 예상 변동폭은 두 배가 된다. 4의 제곱근이 2이기 때문이다. 1개월 범위를 12배 해 연간 범위를 계산하면 연간 변동폭을 약 3.5배 과대평가하게 된다. 정확한 배수는 12의 제곱근인 3.46이다.
스트래들 간편 계산법과 약 20% 낮게 나타나는 이유
시장 자체가 예상하는 변동폭을 더 빠르게 확인하는 방법이 있으며, 계산도 필요하지 않다. 등가격 스트래들을 조회하면 된다. 이는 동일한 행사가격과 만기를 가진 콜옵션과 풋옵션을 의미하며, 두 옵션의 프리미엄을 합산한다. 많은 트레이딩 데스크는 이 합계를 예상 변동폭으로 제시한다.
두 방법은 동일한 수치를 산출하지 않지만, 그 차이가 어느 한쪽의 오류를 뜻하지는 않는다. 스트래들은 주가가 행사가격에서 얼마나 절대적으로 벗어난 가격으로 마감하는지를 반영하므로, 시장이 예상하는 평균 변동폭을 나타낸다. 반면 공식은 표준편차 하나를 산출한다. 정규분포에서는 평균 절대편차가 표준편차의 0.798배이므로, 스트래들 가격은 공식의 결과보다 약 20% 낮게 나타난다. 스트래들 가격에 1.25를 곱하면 두 수치가 일치한다. 1.25는 0.798의 역수다.
앞서 제시한 $100 가상의 사례에 적용해 보자. 공식은 $8.60을 산출한다. 해당 주식의 등가격 스트래들 가격은 약 $6.86이 된다. 0.798 × 8.60 = 6.86이기 때문이다. $6.86에 1.25를 곱하면 다시 $8.58에 도달한다. 두 가지 방법이 하나의 수치를 제시한다. 각 방법이 어떤 통계치를 나타내는지 알면 된다. 옵션 체인 살펴보기에서 두 프리미엄의 위치를 확인할 수 있다.
예상 변동폭이 의미하지 않는 것
- 방향성을 뜻하지 않는다. 밴드는 현재 가격을 중심으로 대칭을 이루며, 옵션시장은 어느 방향인지를 가격에 반영하는 것이 아니라 변동폭을 가격에 반영한다.
- 보장을 뜻하지 않는다. 68%라는 수치는 정규분포를 전제로 한다. 실제 수익률은 꼬리가 더 두꺼우므로, 모형이 허용하는 것보다 극단적인 결과가 더 자주 나타난다.
- 장벽을 뜻하지 않는다. 이 모형에서는 세 구간 중 한 구간가량이 1 표준편차 밴드 밖에서 마감된다. 밴드 밖에 도달하는 것은 예외가 아니라 일반적인 결과다.
- 고정된 값을 뜻하지 않는다. 내재변동성은 매 거래일 재평가되므로, 특정 만기의 예상 변동폭도 매일 새로 산출된다.
실적 발표 후에는 어떤 일이 일어나는가
예정된 실적 발표일은 내재변동성이 사전에 상승했다가 뉴스가 공개된 다음 거래일에 하락하는 현상이 가장 뚜렷하게 나타나는 경우다. 이러한 패턴을 IV crush라고 한다. 예상 변동폭도 같은 일정에 따라 급격히 축소된다. NVDA의 2023년 5월 말 실적 발표는 아래 패널의 첫 거래일 장 마감 후에 나왔다.
모든 수치 뒤에 숨겨진 정확한 SQL
WITH
(SELECT avg(toFloat64(implied_volatility))
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NVDA'
AND date = toDate('2023-05-24')
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05) AS iv_report_day,
(SELECT avg(toFloat64(underlying_close))
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NVDA'
AND date = toDate('2023-05-24')
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05) AS px_report_day
SELECT date,
formatDateTime(date, '%b %e') AS session_label,
round(100 * avg(toFloat64(implied_volatility)), 1) AS iv_pct,
round(100 * avg(toFloat64(implied_volatility)) * sqrt(avg(days_to_expiry) / 365), 2) AS expected_move_pct,
round(100 * avg(toFloat64(implied_volatility)) / iv_report_day, 1) AS iv_pct_of_report_day,
round(100 * (avg(toFloat64(underlying_close)) / px_report_day - 1), 2) AS move_from_report_day_pct
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NVDA'
AND date BETWEEN toDate('2023-05-24') AND toDate('2023-06-09')
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY date
HAVING count() >= 3
ORDER BY date실적 발표 당일인 May 24에 근접 등가격 내재변동성은 115.1%로 측정됐고, 만기까지의 예상 변동폭은 30.54%였다. 다음 거래일 같은 방식으로 측정한 값은 해당 수치의 42.9%에 그쳤다. Jun 9 기준 내재변동성은 39.2%로 나타났으며, 주가는 실적 발표 당일 종가에서 1.71%의 위치에 있었다.
이 조합은 익숙한 불만의 배경이 된다. 트레이더가 실적 발표에 따른 주가 방향을 정확히 예측하고도 롱 옵션에서 손실을 볼 수 있다. 해당 계약의 가격에 반영됐던 변동성 입력값이 불확실성이 해소되는 순간 하향 조정되기 때문이다. 실적이 그릭스에 미치는 영향에서 해당 포지션의 나머지 측면을 설명한다.
예상 변동폭은 실제 변동폭과 부합하는가?
이 주장은 검증할 수 있으므로 직접 검증했다. 2026년 6월 중순까지 2년 동안 매주 수요일, 유동성이 높은 종목 여섯 개를 대상으로 25~40일 후 만기인 계약의 등가격 근처 내재변동성을 확인했다. 이를 이후 기간의 예상 변동폭으로 환산한 뒤, 최소 30일의 달력일이 지난 첫 거래일까지 주가가 실제로 얼마나 움직였는지 측정했다.
모든 수치 뒤에 숨겨진 정확한 SQL
WITH obs AS (
SELECT underlying_symbol AS ticker,
date AS obs_date,
avg(toFloat64(implied_volatility)) AS iv,
avg(toFloat64(underlying_close)) AS spot
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('NVDA', 'AAPL', 'MSFT', 'XOM', 'SPY', 'KO')
AND date BETWEEN toDate('2024-06-12') AND toDate('2026-06-17')
AND toDayOfWeek(date) = 3
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 25 AND 40
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY ticker, obs_date
HAVING count() >= 4 AND avg(toFloat64(implied_volatility)) > 0.01
),
px AS (
SELECT underlying_symbol AS ticker,
date AS px_date,
avg(toFloat64(underlying_close)) AS close_px
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('NVDA', 'AAPL', 'MSFT', 'XOM', 'SPY', 'KO')
AND date BETWEEN toDate('2024-06-12') AND toDate('2026-07-25')
AND days_to_expiry BETWEEN 5 AND 60
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.02
GROUP BY ticker, px_date
),
moves AS (
SELECT obs.ticker AS ticker,
obs.obs_date AS obs_date,
any(obs.iv) AS iv,
any(obs.spot) AS spot,
argMin(px.close_px, px.px_date) AS end_px,
min(dateDiff('day', obs.obs_date, px.px_date)) AS elapsed_days
FROM obs
INNER JOIN px ON obs.ticker = px.ticker
WHERE px.px_date >= addDays(obs.obs_date, 30)
AND px.px_date <= addDays(obs.obs_date, 36)
GROUP BY ticker, obs_date
)
SELECT ticker,
count() AS windows_tested,
round(quantileDeterministic(0.5)(100 * iv * sqrt(elapsed_days / 365), cityHash64(obs_date)), 2) AS implied_move_pct,
round(quantileDeterministic(0.5)(100 * abs(end_px / spot - 1), cityHash64(obs_date)), 2) AS realized_move_pct,
round(100 * countIf(abs(end_px / spot - 1) > iv * sqrt(elapsed_days / 365)) / count(), 1) AS realized_over_implied_pct
FROM moves
GROUP BY ticker
ORDER BY implied_move_pct DESCNVDA은 여섯 종목 중 가장 넓은 범위를 반영했다. 103개 구간에서 내재 변동폭 중앙값은 13.3%, 실제 변동폭 중앙값은 6.77%였다. 변동이 가장 잔잔했던 쪽에서는 SPY이 4.37%의 예상 변동폭과 2.68%의 실제 변동폭을 반영했다.
마지막 열이 핵심이다. 1표준편차 범위는 약 32%의 경우에 이탈할 것으로 예상되므로, 기준은 0이 아니라 이 수치여야 한다. NVDA개 구간 중 23.3%에서는 옵션이 반영한 범위를 벗어났고, SPY개 구간 중 24.3%에서도 같은 결과가 나타났다. 각 종목의 두 중앙값과 그 차이를 나란히 비교하면 된다. 그 차이가 어느 방향으로 나타나는지가 옵션이 실제 발생한 변동보다 더 큰 변동을 가격에 반영했는지에 대한 논거 전부를 보여준다. 가장 넓은 내재 변동폭을 보이는 종목을 선별하는 작업은 별개의 문제이며, 내재변동성이 가장 높은 종목 순위에서 이를 확인할 수 있다.
데이터 참고 사항 및 정의
- 등가격 근처란 해당 거래일 기초자산 종가에서 5% 이내의 행사가격을 의미한다. 내재변동성이 수렴했고 거래량이 0이 아닌 계약을 대상으로 한다.
- 예상 변동폭은 전체 기간에 걸쳐 365일을 기준으로 달력일을 계산한다. 실제 변동폭은 관측일 종가와 최소 30일의 달력일이 지난 첫 거래일 종가 사이의 백분율 거리로 산출하며, 부호는 제거한다.
- 관측치는 주간 단위인 반면 선행 구간은 30일이므로 인접한 구간이 겹친다. 따라서 각 관측치는 서로 독립적으로 추출된 표본이 아니다.
예상 변동폭 FAQ
내재변동성에서 예상 변동폭은 어떻게 계산합니까?
주가에 내재변동성을 소수로 표시한 값을 곱한 뒤, 일수를 365로 나눈 값의 제곱근을 곱합니다. 내재변동성 40%인 주가 $50 종목의 45일 예상 변동폭은 다음과 같습니다. 50 × 0.40 × √(45 ÷ 365) = $7.02이며, 약 14% 범위에 해당합니다.
등가격 스트래들 가격은 예상 변동폭과 같습니까?
비슷하지만 동일하지는 않습니다. 스트래들 가격은 예상 평균 변동폭을 반영하며, 이는 표준편차 한 단위의 약 0.798배에 해당합니다. 스트래들 프리미엄에 1.25를 곱하면 해당 공식이 산출하는 표준편차 한 단위 수치를 얻을 수 있습니다.
주가는 예상 변동폭 안에 머뭅니까?
대체로 그렇지만, 이 모형은 약 32%의 경우 예상 범위를 벗어날 것으로 봅니다. 앞서 검증한 주간 기간을 기준으로 23.3%의 NVDA 기간은 내재 범위를 벗어나 종료됐고, 24.3%의 SPY 기간은 그렇지 않았습니다.
실적 발표 직후 예상 변동폭이 축소되는 이유는 무엇입니까?
예상 변동폭은 내재변동성의 직접적인 함수입니다. 내재변동성은 예정된 실적 발표를 앞두고 상승하며, 결과가 확인되면 하락합니다. 위 패널에서 NVDA의 실적 발표 다음 거래일은 발표 당일 수치의 42.9%를 기록했습니다.
예상 변동폭이 넓을수록 더 나은 기회입니까?
범위가 넓다는 의미일 뿐입니다. 예상 변동폭이 크다는 것은 옵션 시장이 더 큰 불확실성을 가격에 반영하고 있다는 뜻이며, 이러한 불확실성을 담은 계약은 그에 비례해 더 비쌉니다. 범위의 폭만으로 해당 가격의 적정성을 판단할 수는 없습니다.
이 페이지의 모든 패널은 SQL이 첨부된 저장 쿼리입니다. 패널을 하나 열고 ticker를 바꾼 뒤 Strasmore 터미널에서 동일한 내재변동성 대비 실현변동성 검정을 실행하면 됩니다.