Strasmore Research
학습 Matt Connor작성자 Matt Connor

역사적 내재변동성 IV 데이터 확보 방법 및 출처

역사적 내재변동성(IV, Implied Volatility) 데이터의 산출 원리를 이해하고 데이터 시리즈 간 차이가 발생하는 이유를 분석합니다. 무료 및 유료 데이터 소스를 비교하며 직접 쿼리를 실행하여 IV를 추출하는 구체적인 방법과 모델별 입력값의 차이를 상세히 설명합니다.

역사적 내재변동성 데이터의 본질

역사적 내재변동성(IV, Implied Volatility) 데이터는 기록되는 것이 아니라 산출되는 것이며, 이 사실 하나가 왜 IV가 가격 이력보다 구하기 어려운지를 설명해 줍니다. IV는 옵션의 시장 가격을 가격 결정 모델에 역으로 대입하여 모델의 산출값이 화면상의 가격과 일치할 때까지 계산해 얻는 수치입니다. 거래소는 이를 테이프(시세 기록)에 출력하지 않으므로, 모든 공개된 IV 이력에는 모델, 호가, 계약 선정 및 보간법에 관한 선택이 반영되어 있습니다. 바로 이러한 선택들이 동일한 대상을 측정한다고 주장하는 두 데이터 시리즈 간의 모든 차이를 만들어냅니다.

정의를 먼저 확인하고 싶다면, 내재변동성이란 무엇인가내재변동성은 어떻게 계산되는가에서 그 메커니즘을 다루고 있습니다. 이어지는 내용은 이 데이터가 어디에 존재하며, 두 가지 버전을 어떻게 구분하는지에 대한 설명입니다.

역사적 내재변동성(IV) 데이터는 왜 가격 데이터보다 확보하기 어려운가?

일일 종가는 관측된 값입니다. 거래가 체결(print)되었고 모든 데이터 제공업체가 동일한 수치를 보고합니다. 반면 IV 수준은 계산을 통해 산출되며, 그 계산에 필요한 네 가지 입력값이 출처마다 다릅니다.

  • 모델: 유럽형 블랙-숄즈(Black-Scholes) 모델, 이산 배당을 반영한 미국형 이항 모형(binomial tree), 또는 자체적인 금리 및 차입 가정(borrow assumptions)을 적용한 업체별 변형 모델.
  • 입력 가격: 매수호가(bid), 매도호가(ask), 중간값(mid), 최종 체결가(last trade), 또는 거래소 정산가.
  • 대상 계약: 등가격(at-the-money) 행사가, 특정 내가격(moneyness) 범위, 거래량 또는 미결제약정(open-interest) 필터 적용 여부.
  • 만기 산출 방식: 30일을 전후한 두 만기 사이의 보간법(interpolation), 또는 잔존만기(days-to-expiry) 범위 내 모든 값의 평균.

입력값 하나만 바뀌어도 IV 수준은 변합니다. 네 가지를 모두 바꾸면 신중한 두 데이터 제공업체라 하더라도 같은 세션에서 수 포인트의 변동성 차이를 보일 수 있으며, 둘 다 틀린 것은 아닙니다.

이러한 분산은 단일 종목 내부에서도 발생합니다. 아래 패널은 AAPL의 2026년 6월 데이터를 활용하여 현물 가격 대비 5% 이내의 행사가를 가진 계약만을 추출하고, 잔존만기에 따라 구분한 것입니다.

조회단일 종목, 단일 월물: 만기까지의 기간별 내재 변동성(IV, AAPL, 2026년 6월)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
    dte_band,
    round(100 * quantileDeterministic(0.25)(iv, contract_hash), 1) AS iv_p25_pct,
    round(100 * quantileDeterministic(0.50)(iv, contract_hash), 1) AS iv_median_pct,
    round(100 * quantileDeterministic(0.75)(iv, contract_hash), 1) AS iv_p75_pct,
    count()                                                        AS contract_day_count
FROM
(
    SELECT
        multiIf(days_to_expiry <=   7, '01-07d',
                days_to_expiry <=  21, '08-21d',
                days_to_expiry <=  45, '22-45d',
                days_to_expiry <=  90, '46-90d',
                days_to_expiry <= 180, '91-180d',
                                       '181d+')  AS dte_band,
        toFloat64(implied_volatility)             AS iv,
        cityHash64(ticker)                        AS contract_hash,
        days_to_expiry                            AS dte
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'AAPL'
      AND date >= '2026-06-01'
      AND date <  '2026-07-01'
      AND iv_converged = 1
      AND volume > 0
      AND days_to_expiry > 0
      AND underlying_close > 0
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
)
GROUP BY dte_band
ORDER BY min(dte)
Run this yourself

동일한 기초자산, 동일한 월, 등가격 근처의 행사가만을 대상으로 합니다. 가장 짧은 만기 구간인 01-07d의 IV 중앙값은 29.6%이었습니다. 가장 긴 만기 구간인 181d+28.1%를 기록했습니다. 첫 번째 구간 내부에서만 보더라도 25분위수와 75분위수는 각각 24.9%와 35.8%를 나타냈습니다. 만기에 따른 변동성 형태를 기간 구조(term structure)라 하며, 행사가에 따른 변동성 형태는 변동성 스큐(volatility skew)라고 합니다. 여기서 단 하나의 IV란 존재하지 않습니다. 변동성 곡면(surface)이 존재할 뿐이며, 공시되는 모든 AAPL IV 수치는 그 곡면을 요약한 하나의 값에 불과합니다. 이것이 바로 당사의 AAPL 내재변동성 페이지가 추적하는 데이터입니다.

30일 내재변동성(IV) 차트의 수치가 서로 다른 이유

유동성이 풍부한 기초자산 하나를 선정하여 1년 동안의 세션 데이터를 바탕으로 30일 IV를 세 가지 방식으로 산출해 보겠습니다. 첫 번째 열은 행사가격이 현물 가격의 1% 이내이고 만기가 25일에서 35일 사이인 옵션만을 포함하며, 이는 가장 정밀한 측정치입니다. 두 번째 열은 범위를 현물 가격의 5% 이내, 만기는 20일에서 45일로 확대한 것으로, 모든 세션에서 데이터를 확보해야 할 때 사용하는 사실상의 표준 방식입니다. 세 번째 열은 이 넓은 범위의 데이터에 계약 거래량을 가중치로 적용하여, 실제 거래가 활발했던 행사가격 쪽으로 평균값을 유도합니다.

조회SPY의 30일 IV 산출을 위한 세 가지 방식(단일 데이터셋 기준)
모든 수치 뒤에 숨겨진 정확한 SQL
WITH
    near_money AS
    (
        SELECT
            toMonday(date)                                                 AS week_start,
            toFloat64(implied_volatility)                                  AS iv,
            days_to_expiry                                                 AS dte,
            volume                                                         AS vol,
            abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) AS moneyness
        FROM global_markets.options_greeks
        WHERE underlying_symbol = 'SPY'
          AND date >= '2025-08-01'
          AND date <  '2026-08-01'
          AND iv_converged = 1
          AND volume > 0
          AND underlying_close > 0
          AND days_to_expiry BETWEEN 20 AND 45
          AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
    ),
    weekly AS
    (
        SELECT
            week_start,
            avgIf(iv, dte BETWEEN 25 AND 35 AND moneyness < 0.01) AS tight_atm,
            avg(iv)                                               AS wide_atm,
            sum(iv * vol) / sum(vol)                              AS volume_weighted
        FROM near_money
        GROUP BY week_start
        HAVING countIf(dte BETWEEN 25 AND 35 AND moneyness < 0.01) > 0
    )
SELECT
    toString(week_start) AS week,
    concat(monthName(week_start), ' ', toString(toDayOfMonth(week_start)), ', ', toString(toYear(week_start))) AS week_label,
    round(100 * tight_atm, 1)       AS tight_atm_pct,
    round(100 * wide_atm, 1)        AS wide_atm_pct,
    round(100 * volume_weighted, 1) AS volume_weighted_pct,
    round(100 * (greatest(tight_atm, wide_atm, volume_weighted)
               - least(tight_atm, wide_atm, volume_weighted)), 1) AS spread_pp
FROM weekly
ORDER BY week_start
Run this yourself

관찰 기간의 첫째 주에 July 28, 2025, 세 가지 산출 방식은 각각 16.6%, 16.4%, 16.7%를 기록했습니다. 이들 중 최고치와 최저치 사이의 격차는 0.2 퍼센트포인트였으며, 스프레드(spread) 열은 전체 53주 동안 이 격차의 추이를 추적합니다. 이 세 가지 수치 중 어느 것도 해당 펀드의 '진정한' 30일 IV라고 할 수는 없습니다. 각각은 서로 조금씩 다른 질문에 답하고 있으며, 데이터 제공업체의 차트는 그중 하나를 선택해 산출 방식을 명시하지 않은 채 보여주는 것일 뿐입니다.

계약별 내재변동성(implied volatility, IV) 이력은 얼마나 오래전까지 제공됩니까?

이 패널들의 기반이 되는 데이터셋은 global_markets.options_greeks입니다. 이는 거래일별, 계약별로 한 행씩 구성되며, 내재변동성과 함께 델타(delta), 감마(gamma), 베가(vega), 세타(theta), 로(rho)를 비롯해 행사가격(strike price), 만기일, 잔존만기일, 기초자산 심볼 및 기초자산 종가를 포함합니다. 이는 실시간 체인 스냅샷이 아닌 일일 마감 데이터입니다. 아래 패널은 각 분기별로 최소 하나의 수렴된 IV 행을 보유한 기초자산 종목의 수를 집계합니다.

조회분기별 일일 IV가 수렴된 기초자산 종목
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
    concat(toString(toYear(date)), '-Q', toString(toQuarter(date))) AS quarter,
    uniqExact(underlying_symbol)                                    AS underlyings_covered
FROM global_markets.options_greeks
WHERE iv_converged = 1
  AND volume > 0
  AND underlying_symbol NOT IN ('SPCX')
  AND date < '2026-07-01'
GROUP BY quarter
ORDER BY min(date)
Run this yourself

데이터 범위는 2014-Q2부터 2026-Q2까지 총 49개 분기이며, 가장 최근의 온전한 분기 기준으로 5799개의 기초자산 종목이 수렴된 일일 IV를 보유하고 있습니다.

이와 같은 데이터셋을 조회할 때는 네 가지 필터가 핵심적인 역할을 합니다.

  • iv_converged = 1을 유지하십시오. 솔버(solver)가 항상 해를 찾는 것은 아니며, 수렴되지 않은 행은 낮은 수치가 아니라 피팅(fit) 실패를 의미합니다.
  • volume > 0를 유지하십시오. 거래가 전혀 발생하지 않은 계약은 오래된 호가에서 산출된 IV를 가집니다.
  • underlying_symbol으로 그룹화하십시오. ticker 열은 OCC 계약 코드를 담고 있으므로, 이를 기준으로 그룹화하면 기업별이 아닌 행사가격 및 만기일별로 한 행씩 반환됩니다.
  • 계약을 신중하게 선택하십시오. 등가격(near the money) 근처와 특정 잔존만기일 범위 내의 계약을 선택해야 합니다. 이 단계를 건너뛰면 스큐(skew)와 기간 구조(term structure)가 하나의 수치로 평균화되어 버립니다.

무료 내재변동성(Implied Volatility, IV) API가 존재합니까?

무료 소스는 존재하지만, 각각 특정한 방식으로 제한적입니다.

  • 증권사 플랫폼은 자체 옵션 체인에서 IV를 계산하여 실시간으로 표시합니다. 다운로드 가능한 과거 데이터는 기간이 짧거나 아예 없으며, 해당 수치는 표준이 아닌 각 증권사의 모델에 따른 결과값입니다.
  • 거래소가 발표하는 변동성 지수는 수십 년 치 데이터를 무료로 제공합니다. 다만 이는 특정 바스켓에 대한 단일 혼합 수치이므로, 개별 종목이 아닌 시장 전체의 상황을 보여줍니다.
  • 일반적인 시장 데이터 API는 대부분 가격 정보에서 멈춥니다. 계약별 그리스(Greeks) 지표는 거의 모든 곳에서 별도 상품으로 취급하며, 이를 포함하는 무료 티어는 대개 과거 데이터 없이 실시간 스냅샷만 제공합니다. 당사의 무료 주식 시장 데이터 API 요약 자료에서 오픈 티어가 실제로 제공하는 범위를 확인할 수 있습니다.
  • 벤더가 가격을 책정하는 계약별 과거 데이터는 장기적인 개별 종목 기록을 보유하고 있으며, 월간 또는 연간 단위의 일일 종가(end-of-day) 파일로 판매됩니다. 실시간 옵션 체인은 과거 데이터 세트보다 훨씬 높은 가격에 책정됩니다. 실시간 시장 데이터 비용에서 해당 가격 체계의 구성을 설명합니다.

스냅샷과 일일 종가 데이터의 차이는 가격만큼이나 중요합니다. 오후 4시(ET 기준)에 촬영된 스냅샷은 해당 시점의 호가를 반영합니다. 반면 정산가(settlement price)를 기준으로 작성된 파일은 완전히 다른 입력값을 사용하며, 시장 변동성이 가장 큰 날에 두 데이터의 괴리가 가장 커집니다.

혼합 지수 변동성과 개별 종목 변동성 또한 서로 대체할 수 없습니다. 지수 옵션은 바스켓의 움직임을 가격에 반영하는데, 구성 종목 간의 상쇄 효과로 인해 전체 변동성이 낮아집니다. 개별 종목 옵션은 해당 기업의 독자적인 경로를 가격에 반영합니다. 아래 패널은 동일한 필터를 적용하여 한 달간 주요 종목들을 나란히 비교한 것입니다.

조회만기 20~45일 남은 등가격(near-the-money) IV 중앙값(2026년 6월)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
    underlying_symbol                                              AS symbol,
    round(100 * quantileDeterministic(0.50)(iv, contract_hash), 1) AS median_iv_pct,
    count()                                                        AS contract_day_count
FROM
(
    SELECT
        underlying_symbol,
        toFloat64(implied_volatility) AS iv,
        cityHash64(ticker)            AS contract_hash
    FROM global_markets.options_greeks
    WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'AMZN', 'KO', 'XOM', 'TLT')
      AND date >= '2026-06-01'
      AND date <  '2026-07-01'
      AND iv_converged = 1
      AND volume > 0
      AND underlying_close > 0
      AND days_to_expiry BETWEEN 20 AND 45
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
)
GROUP BY symbol
ORDER BY median_iv_pct DESC
Run this yourself

2026년 6월 동안, 20일에서 45일 만기 구간의 등가격(near-the-money) IV 중앙값은 38.5%의 NVDA에서 10.4%의 TLT까지, 총 8개 종목에 걸쳐 나타났습니다. 동일한 구간, 동일한 필터, 동일한 산출 방식을 적용했습니다. 이러한 순위는 모든 종목에 동일한 계산 방식이 유지될 때만 유효합니다.

IV rank와 IV percentile 산출 시 데이터 출처가 중요한가?

출처는 결과에 결정적인 영향을 미칩니다. IV rank는 특정 기간(통상 1년) 동안의 최고치와 최저치를 기준으로 현재의 내재변동성(IV, Implied Volatility) 수준을 측정하며, IV percentile은 해당 기간 중 현재의 IV보다 낮은 수치를 기록한 날이 전체의 몇 퍼센트인지를 나타냅니다. 두 지표 모두 하나의 시계열 데이터를 처음부터 끝까지 읽어 산출하므로, 시장 상황에 변화가 없더라도 데이터 계열이 바뀌면 지표 값도 변하게 됩니다. 증권사의 중간 호가(mid-quote) 기반 IV를 데이터 제공업체의 결제가(settlement-based) 기반 기록과 이어 붙이면 과거 데이터 중간에 인위적인 단절이 발생하며, 이를 기준으로 산출된 모든 순위는 해당 단절의 영향을 받게 됩니다. IV rank vs IV percentile에서 두 지표의 계산 방식을 상세히 다룹니다. 내재변동성과 실현변동성(historical volatility)을 비교할 때도 동일한 원칙이 적용되며, 관련 내용은 historical volatility vs implied volatility에서 확인할 수 있습니다.

실무적인 표준은 데이터의 일관성 유지입니다. 하나의 데이터 출처, 하나의 모델, 하나의 계약 선정 방식, 그리고 하나의 만기 산정 관례를 선택한 뒤, 이를 전체 분석 기간 동안 동일하게 유지해야 합니다. 부분적으로 여러 업체의 데이터를 짜깁기하여 일치시킨 데이터보다, 비록 타사와는 다소 차이가 있더라도 내부적으로 일관성을 유지한 데이터가 훨씬 가치가 높습니다.

자주 묻는 질문(FAQ)

과거 내재변동성(implied volatility, IV) 데이터는 어디서 구할 수 있습니까?

개별 종목의 장기 이력은 계약별 일일 종가 기준 그리스(greeks) 지표를 월간 또는 연간 파일 형태로 판매하는 옵션 데이터 제공업체를 통해 확보할 수 있습니다. 거래소는 지수 수준의 변동성 이력을 무료로 공개합니다. 증권사 플랫폼은 실시간 IV를 옵션 체인에 표시하지만, 다운로드 가능한 과거 데이터는 거의 제공하지 않습니다. 본 페이지의 패널은 상장된 모든 계약을 대상으로 수렴된 적합(converged fit)을 적용한 계약별 일일 데이터 세트를 기반으로 합니다.

무료 내재변동성 API가 있습니까?

계약별 그리스 지표를 포함하는 무료 등급은 드물며, 존재하더라도 대개 아카이브가 아닌 실시간 스냅샷을 제공합니다. 지수 변동성 이력만이 진정한 의미의 무료 장기 시계열 데이터입니다. 심층적인 개별 종목 이력은 일반적으로 유료 상품입니다.

왜 두 출처의 동일 종목 내재변동성이 다르게 나타납니까?

가격 결정 모델, 입력 호가, 계약 선정 기준 및 만기 보간법(maturity interpolation)이 서로 다르기 때문입니다. 본 페이지의 패널은 동일한 데이터 행 집합에서 세 개의 30일 시계열을 생성하는데, 첫 주에만 0.2 퍼센트포인트의 차이가 발생합니다. 따라서 서로 다른 데이터 제공업체 간의 격차는 오류가 아니라 예상되는 현상입니다.

내재변동성 데이터는 얼마나 과거까지 제공됩니까?

출처에 따라 다르며, 계약별 아카이브는 가격 아카이브보다 모든 곳에서 짧습니다. 본 페이지의 데이터 세트는 2014-Q2부터 시작하며, 그 이후 수렴된 모든 계약에 대한 일일 데이터를 포함하고 있습니다.


본 페이지의 모든 패널은 해당 데이터를 산출한 SQL과 함께 제공됩니다. 패널을 확장하면 어떤 계약이 수치 산정에 포함되었는지 정확히 확인할 수 있습니다. 다른 종목, 다른 기간 또는 다른 산출 방식에 대해 동일한 시계열을 생성하려면 Strasmore 터미널에서 평이한 영어로 요청하십시오.