내재변동성 스마일 분석

내재변동성 스마일이란

옵션 시장에서 내재변동성(Implied Volatility, IV)은 블랙-숄즈 모델에 시장 가격을 역산하여 얻는 변동성입니다. 이론적으로 동일 만기의 모든 행사가(strike)에서 IV가 같아야 하지만, 현실에서는 그렇지 않습니다. 행사가별 IV를 그래프로 그리면 U자형 곡선이 나타나는데, 이를 변동성 스마일(Volatility Smile)이라 부릅니다.

특히 주식·지수 옵션에서는 외가격(OTM) 풋옵션의 IV가 콜옵션보다 높아 좌측이 치솟는 변동성 스큐(Volatility Skew)가 관찰됩니다. 이는 1987년 블랙먼데이 이후 시장 참가자들이 하방 리스크에 더 높은 프리미엄을 요구하기 때문입니다. 이 비대칭 구조를 정량적으로 분석하면 시장 심리 파악수익 기회 포착이 동시에 가능합니다.

스마일 vs 스큐 vs 서피스

변동성 구조는 세 가지 차원으로 분류됩니다.

  • 변동성 스마일(Smile) — 단일 만기에서 행사가별 IV. 외가격 양쪽이 높아 웃는 모양입니다. 외환(FX) 옵션에서 전형적으로 나타납니다.
  • 변동성 스큐(Skew) — 단일 만기에서 IV가 한쪽으로 기울어진 형태. 주식·지수 옵션에서 일반적이며, 낮은 행사가 쪽의 IV가 높습니다.
  • 변동성 서피스(Surface) — 행사가 × 만기 2차원 평면 위에 IV를 매핑한 3D 곡면. 옵션 프라이싱의 가장 완전한 정보를 담고 있습니다.

퀀트 트레이더에게 변동성 서피스는 단순한 시각화가 아니라 차익거래 기회를 탐지하는 핵심 도구입니다.

파이썬으로 내재변동성 계산하기

블랙-숄즈 모델에서 IV를 역산하는 코드입니다. scipy.optimize의 뉴턴-랩슨법을 사용합니다.

import numpy as np
from scipy.stats import norm
from scipy.optimize import brentq

def black_scholes_call(S, K, T, r, sigma):
    """블랙-숄즈 콜옵션 이론가"""
    d1 = (np.log(S / K) + (r + 0.5 * sigma**2) * T) / (sigma * np.sqrt(T))
    d2 = d1 - sigma * np.sqrt(T)
    return S * norm.cdf(d1) - K * np.exp(-r * T) * norm.cdf(d2)

def implied_volatility(market_price, S, K, T, r, 
                       option_type="call"):
    """
    시장 가격에서 내재변동성 역산
    Brent 방법으로 sigma를 탐색
    """
    def objective(sigma):
        if option_type == "call":
            return black_scholes_call(S, K, T, r, sigma) - market_price
        else:
            # Put-Call Parity
            call_price = black_scholes_call(S, K, T, r, sigma)
            put_price = call_price - S + K * np.exp(-r * T)
            return put_price - market_price
    
    try:
        return brentq(objective, 0.001, 5.0, xtol=1e-8)
    except ValueError:
        return np.nan

# 예시: BTC 옵션
S = 85000    # 현재가
K = 90000    # 행사가
T = 30/365   # 잔존 만기(30일)
r = 0.045    # 무위험이자율
market_price = 2150  # 시장 콜옵션 가격

iv = implied_volatility(market_price, S, K, T, r)
print(f"내재변동성: {iv:.2%}")  # 예: 62.34%

변동성 스마일 시각화와 해석

여러 행사가에 대해 IV를 계산하고 그래프로 그리면 시장 심리를 한눈에 파악할 수 있습니다.

import pandas as pd
import matplotlib.pyplot as plt

def plot_volatility_smile(options_df, S, T, r):
    """
    옵션 체인 데이터에서 변동성 스마일 시각화
    options_df: strike, market_price, option_type 컬럼 필요
    """
    ivs = []
    for _, row in options_df.iterrows():
        iv = implied_volatility(
            row["market_price"], S, row["strike"], 
            T, r, row["option_type"]
        )
        ivs.append(iv)
    
    options_df["iv"] = ivs
    
    # 머니니스(Moneyness)로 정규화
    options_df["moneyness"] = options_df["strike"] / S
    
    calls = options_df[options_df["option_type"] == "call"]
    puts = options_df[options_df["option_type"] == "put"]
    
    plt.figure(figsize=(10, 6))
    plt.plot(calls["moneyness"], calls["iv"], "b-o", label="Call IV")
    plt.plot(puts["moneyness"], puts["iv"], "r-o", label="Put IV")
    plt.xlabel("Moneyness (K/S)")
    plt.ylabel("Implied Volatility")
    plt.title("Volatility Smile")
    plt.legend()
    plt.grid(True, alpha=0.3)
    plt.savefig("vol_smile.png", dpi=150)
    
    return options_df

스마일의 형태에서 읽을 수 있는 시장 정보는 다음과 같습니다.

  • 스마일이 가파르다 → 시장이 극단적 움직임(테일 리스크)을 크게 우려합니다.
  • 좌측 스큐가 심하다 → 하방 보호 수요가 강합니다. 기관 투자자의 풋 매수 압력이 높습니다.
  • 스마일이 평탄하다 → 시장이 정규분포에 가까운 움직임을 예상합니다.
  • 우측이 높아진다 → 상방 기대감이 큽니다. 숏 스퀴즈나 급등 가능성을 반영합니다.

스큐 지표를 활용한 매매 전략

변동성 스큐를 정량화하면 체계적인 변동성 기반 매매가 가능합니다. 대표적인 스큐 지표 두 가지를 소개합니다.

1. 25-델타 리스크 리버설(Risk Reversal)

def risk_reversal_25d(iv_25d_call, iv_25d_put):
    """
    25-델타 리스크 리버설 = IV(25Δ Call) - IV(25Δ Put)
    양수: 상승 기대, 음수: 하락 우려
    """
    return iv_25d_call - iv_25d_put

def skew_trading_signal(rr_series, lookback=20):
    """
    RR의 z-score로 매매 신호 생성
    RR이 평소보다 극단적이면 평균 회귀 기대
    """
    mean = rr_series.rolling(lookback).mean()
    std = rr_series.rolling(lookback).std()
    z = (rr_series - mean) / std
    
    signals = pd.Series(0, index=rr_series.index)
    signals[z > 1.5] = -1   # RR 과도하게 높음 → 숏
    signals[z < -1.5] = 1   # RR 과도하게 낮음 → 롱
    return signals

2. 변동성 스프레드(Butterfly)

def butterfly_spread(iv_25d_call, iv_25d_put, iv_atm):
    """
    버터플라이 = (IV_25Δ_Call + IV_25Δ_Put) / 2 - IV_ATM
    스마일의 곡률(curvature)을 측정
    높을수록 시장이 큰 움직임을 예상
    """
    return (iv_25d_call + iv_25d_put) / 2 - iv_atm

버터플라이 값이 역사적 평균 대비 높으면 시장이 큰 변동을 예상하는 것이고, 낮으면 안정적 횡보를 기대하는 것입니다. 이 정보를 꼬리 위험 헤지 전략의 진입 타이밍으로 활용할 수 있습니다.

변동성 서피스 구축과 차익거래 탐지

행사가와 만기 두 축으로 IV를 매핑한 변동성 서피스에서 무차익 조건(no-arbitrage condition)을 위반하는 영역이 바로 수익 기회입니다.

from scipy.interpolate import RBFInterpolator

def build_vol_surface(strikes, maturities, ivs):
    """
    RBF 보간으로 매끄러운 변동성 서피스 구축
    """
    points = np.column_stack([strikes, maturities])
    rbf = RBFInterpolator(points, ivs, kernel="thin_plate_spline")
    
    # 서피스 격자 생성
    k_grid = np.linspace(min(strikes), max(strikes), 50)
    t_grid = np.linspace(min(maturities), max(maturities), 50)
    K, T = np.meshgrid(k_grid, t_grid)
    grid_points = np.column_stack([K.ravel(), T.ravel()])
    
    IV_surface = rbf(grid_points).reshape(K.shape)
    return K, T, IV_surface

def detect_calendar_arbitrage(iv_surface, t_grid):
    """
    캘린더 차익거래 탐지
    조건 위반: 총 분산(IV² × T)이 만기에 대해 감소하면 차익거래 존재
    """
    total_var = iv_surface**2 * t_grid[:, np.newaxis]
    violations = np.diff(total_var, axis=0) < 0
    return violations

캘린더 차익거래는 총 분산(total variance = IV² × T)이 만기에 대해 단조증가해야 한다는 조건을 이용합니다. 이 조건이 위반된 행사가-만기 조합에서 캘린더 스프레드를 구성하면 이론적으로 무위험 수익을 얻을 수 있습니다.

실전 적용 시 주의사항

  • 유동성 필터 — 외가격 깊은 옵션은 스프레드가 넓어 IV 계산이 부정확합니다. 거래량과 미결제약정이 충분한 행사가만 사용하세요.
  • 배당·금리 조정 — 주식 옵션은 배당 스케줄을 반영해야 스마일이 정확합니다. 암호화폐 옵션은 이 문제가 없어 분석이 상대적으로 간단합니다.
  • 모델 한계 — 블랙-숄즈 기반 IV는 정규분포를 가정합니다. 실제 시장은 점프와 팻테일이 존재하므로 엔트로피 기반 분석을 보완적으로 활용하면 효과적입니다.
  • 실시간 데이터 — 변동성 서피스는 시장이 열린 동안 계속 변합니다. 스냅샷 기반이 아닌 스트리밍 업데이트가 필수적입니다.
  • 거래 비용 — 차익거래 신호가 포착되더라도 옵션의 비드-애스크 스프레드가 수익을 초과하면 실행 불가합니다. 넷 수익 기준으로 평가하세요.

마무리 — 스마일이 알려주는 시장의 공포와 탐욕

내재변동성 스마일은 옵션 시장 참가자들의 집단 심리를 수치화한 것입니다. 스큐가 가파를수록 공포가 크고, 평탄할수록 자신감이 높습니다. 이 정보를 체계적으로 추적하고 정량화하면 방향성 매매부터 변동성 차익거래까지 다양한 전략에 활용할 수 있습니다.

핵심은 스마일을 단순히 '관찰'하는 데 그치지 않고, 리스크 리버설·버터플라이 같은 지표로 정량화하여 규칙 기반 매매 시스템에 통합하는 것입니다. 변동성은 가격만큼이나 중요한 트레이딩 자산이며, 스마일 분석은 그 첫걸음입니다.

위로 스크롤
WordPress Appliance - Powered by TurnKey Linux