Struktura terminowa IV: znaczenie krzywej
Struktura terminowa IV pokazuje implikowaną zmienność według terminów wygaśnięcia. Wyjaśniono krzywe rosnące i odwrócone na podstawie rzeczywistych danych opcyjnych.
Struktura terminowa IV to implikowana zmienność przedstawiona względem terminu wygaśnięcia, z jednym odczytem dla każdego terminu, na podstawie opcji z ceną wykonania zbliżoną do bieżącego kursu akcji. W praktyce występują niemal wyłącznie dwa kształty: nachylenie rosnące w spokojnych warunkach, gdy dalsze terminy mają wyższą wartość, oraz krzywa odwrócona, gdy w najbliższym miesiącu przypada określone wydarzenie. Oba przedstawione niżej kształty zbudowano na podstawie danych dla poszczególnych kontraktów opcyjnych, a nie na podstawie schematu podręcznikowego.
Co mierzy struktura terminowa IV
Implikowana zmienność to annualizowana skala ruchu, którą cena opcji implikuje dla akcji bazowej. Jest kwotowana dla każdego kontraktu, dlatego jedna akcja ma w dowolnym momencie setki odczytów: po jednym dla każdej ceny wykonania i każdego terminu wygaśnięcia dostępnego na rynku. Po ustaleniu ceny wykonania w pobliżu bieżącego kursu i zmianie terminu wygaśnięcia odczyty układają się w krzywą. Ta krzywa stanowi strukturę terminową.
Sposób doboru próby ma większe znaczenie, niż wynikałoby z większości wyjaśnień. Każdy panel obejmuje kontrakty, dla których wartość bezwzględna delty mieści się między 0.35 a 0.65. Jest to standardowy sposób określania opcji z ceną wykonania w pobliżu kursu rynkowego bez wskazywania jednej konkretnej ceny wykonania. Następnie dla każdego przedziału terminów wyznaczana jest mediana implikowanej zmienności. Zastosowano medianę, a nie średnią. Jeden nieaktualny kwotowany kurs dla kontraktu o niewielkim obrocie może wygenerować nieprawdopodobny odczyt, a średnia przeniosłaby go do wyniku.
Poniżej przedstawiono krzywą dla sześciu płynnych walorów podczas sesji w czerwcu 2026 roku.
Dokładny kod SQL dla każdej liczby
WITH (
SELECT quantileDeterministic(0.5)(toFloat64(implied_volatility), cityHash64(ticker))
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'KO', 'JNJ', 'PG')
AND date >= toDate('2026-06-01')
AND date < toDate('2026-07-01')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.03 AND 3
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND days_to_expiry BETWEEN 5 AND 20
) AS front_band_iv
SELECT multiIf(days_to_expiry <= 20, '5-20 days',
days_to_expiry <= 45, '21-45 days',
days_to_expiry <= 90, '46-90 days',
days_to_expiry <= 180, '91-180 days',
'181-365 days') AS expiry_band,
round(100 * quantileDeterministic(0.5)(toFloat64(implied_volatility), cityHash64(ticker)), 1) AS median_iv_pct,
round(100 * (quantileDeterministic(0.5)(toFloat64(implied_volatility), cityHash64(ticker)) - front_band_iv), 1) AS pts_vs_front_band,
count() AS contract_count
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'KO', 'JNJ', 'PG')
AND date >= toDate('2026-06-01')
AND date < toDate('2026-07-01')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.03 AND 3
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND days_to_expiry BETWEEN 5 AND 365
GROUP BY expiry_band
ORDER BY min(days_to_expiry)Mediana implikowanej zmienności wyniosła 19.6% w przedziale 5-20 days oraz 21.5% w przedziale 181-365 days, czyli o 1.9 punktów wyżej niż w najbliższym terminie. Kształt ten ma nazwę zapożyczoną z rynków futures: contango, czyli sytuację, w której późniejszy termin dostawy ma wyższą cenę. Odwrócona krzywa to backwardation.
Dlaczego krzywa zwykle rośnie
Za normalny kształt odpowiadają dwa mechanizmy.
Pierwszym jest liczba wydarzeń. Kontrakt wygasający za dziewięć dni obejmuje dziewięć dni ryzyka kalendarzowego. W przypadku spółki o dużej kapitalizacji, dla której w tym okresie nie zaplanowano żadnego wydarzenia, są to głównie zwykłe sesje. Kontrakt wygasający za rok obejmuje cztery raporty kwartalne, kilka posiedzeń banków centralnych oraz każdą niezaplanowaną informację w tym czasie. Większa liczba znanych niewiadomych przypadających na kontrakt podnosi annualizowaną wartość, za którą rynek jest gotowy zapłacić.
Drugim jest zachowanie samej zmienności. Zmienność zrealizowana występuje klastrami: spokojne tygodnie następują po spokojnych tygodniach, a gwałtowne po gwałtownych. Gdy rynek jest spokojny, opcje z krótkim terminem wygaśnięcia są wyceniane blisko dzisiejszego spokojnego odczytu, natomiast opcje wygasające za rok są wyceniane bliżej długoterminowej średniej, która jest wyższa. Po szoku działa to samo wyliczenie w odwrotną stronę. W sesjach po krachu najbliższy termin ma najwyższą implikowaną zmienność na całym rynku, a krzywa odwraca się na całej długości. Dalsze miesiące pozostają zakotwiczone blisko zwyczajowego poziomu.
Co odwraca krzywą: określone wydarzenie
Zaplanowany raport wynikowy jest najbardziej przejrzystym przykładem odwrócenia krzywej. Raport zostaje opublikowany po zamknięciu rynku w znanym terminie. Każdy termin wygaśnięcia przypadający po tej dacie obejmuje związaną z nim zmianę kursu, a każdy termin przypadający wcześniej — nie. Najbliższy termin obejmujący wydarzenie ma najmniej zwykłych sesji, na które można rozłożyć ten ruch, dlatego jego annualizowany odczyt rośnie najbardziej. Opcja sześciomiesięczna rozkłada to samo wydarzenie na około 125 sesji i niemal go nie odzwierciedla.
NVIDIA opublikowała wyniki po zamknięciu rynku w środę, 26 lutego 2025 roku. Panel przedstawia całą krzywą dwukrotnie: na ostatniej sesji przed publikacją, 25 lutego, oraz na pierwszej sesji po niej, 27 lutego.
Dokładny kod SQL dla każdej liczby
SELECT multiIf(days_to_expiry <= 20, '5-20 days',
days_to_expiry <= 45, '21-45 days',
days_to_expiry <= 90, '46-90 days',
days_to_expiry <= 180, '91-180 days',
'181-365 days') AS expiry_band,
round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
toDate(date) = toDate('2025-02-25')), 1) AS iv_before_print_pct,
round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
toDate(date) = toDate('2025-02-27')), 1) AS iv_after_print_pct,
round(100 * (quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
toDate(date) = toDate('2025-02-25'))
- quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
toDate(date) = toDate('2025-02-27'))), 1) AS iv_drop_pts
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NVDA'
AND date >= toDate('2025-02-25')
AND date < toDate('2025-02-28')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.05 AND 5
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND days_to_expiry BETWEEN 5 AND 365
GROUP BY expiry_band
HAVING countIf(toDate(date) = toDate('2025-02-25')) >= 3
AND countIf(toDate(date) = toDate('2025-02-27')) >= 3
ORDER BY min(days_to_expiry)Odczyt w przedziale 5-20 days wyniósł 84.9% na sesji przed publikacją oraz 66.4% na sesji po publikacji, co oznacza zmianę o 18.5 punktów. Odczyt w przedziale 181-365 days zmienił się między tymi samymi dwoma zamknięciami o 1 punktów, czyli znacznie mniej niż w najbliższym przedziale. Jeden instrument bazowy, jedno wydarzenie i odmienne zachowanie na obu końcach krzywej. To załamanie na krótkim końcu to spadek IV, a struktura terminowa pokazuje je z wyprzedzeniem.
Obserwowanie budowy i załamania krzywej
Jedna sesja przed raportem i jedna po nim dają jedynie obraz sytuacji. Budowa różnicy trwa tygodniami i jest widoczna jako zwiększająca się luka między obu końcami krzywej.
Dokładny kod SQL dla każdej liczby
SELECT toDate(date) AS session_date,
round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 5 AND 20), 1) AS front_iv_pct,
round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 91 AND 180), 1) AS back_iv_pct,
round(100 * (quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 5 AND 20)
- quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 91 AND 180)), 1) AS front_minus_back_pts
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NVDA'
AND date >= toDate('2025-02-10')
AND date < toDate('2025-03-15')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.05 AND 5
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND ((days_to_expiry BETWEEN 5 AND 20) OR (days_to_expiry BETWEEN 91 AND 180))
GROUP BY session_date
HAVING countIf(days_to_expiry BETWEEN 5 AND 20) >= 3
AND countIf(days_to_expiry BETWEEN 91 AND 180) >= 3
ORDER BY session_dateRóżnica między przedziałami wynosiła 12.4 punktów na pierwszej sesji badanego okresu oraz 3.3 punktów na ostatniej, w ciągu 24 sesji. Należy obserwować kształt krótkiego końca, a nie jego poziom. Rośnie on w miarę zbliżania się raportu, osiąga maksimum w sesjach wokół publikacji, a następnie w ciągu jednej sesji wraca niżej. Dalszy koniec pozostaje niemal bez zmian przez cały okres. Wyniki spółki i greckie współczynniki opcyjne opisują wpływ tego samego wydarzenia na vegę i thetę poszczególnych kontraktów.
Jak często krzywa jest odwrócona?
Odwrócenie krzywej nie jest rzadkością, ale udział roku, w którym dany walor pozostaje w tym stanie, znacznie różni się między tickerami.
Dokładny kod SQL dla każdej liczby
WITH daily AS (
SELECT underlying_symbol,
toDate(date) AS session_date,
quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 5 AND 30) AS front_iv,
quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 91 AND 180) AS back_iv
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('NVDA', 'AAPL', 'MSFT', 'AMZN', 'KO', 'JNJ', 'PG', 'SPY', 'XOM', 'WMT')
AND date >= toDate('2025-08-01')
AND date < toDate('2026-08-01')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.03 AND 5
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND ((days_to_expiry BETWEEN 5 AND 30) OR (days_to_expiry BETWEEN 91 AND 180))
GROUP BY underlying_symbol, session_date
HAVING countIf(days_to_expiry BETWEEN 5 AND 30) >= 3
AND countIf(days_to_expiry BETWEEN 91 AND 180) >= 3
)
SELECT underlying_symbol AS ticker,
count() AS sessions,
round(100 * countIf(front_iv > back_iv) / count(), 1) AS inverted_pct,
round(100 * quantileDeterministic(0.5)(front_iv - back_iv,
cityHash64(concat(underlying_symbol, toString(session_date)))), 1) AS median_spread_pts
FROM daily
GROUP BY underlying_symbol
ORDER BY inverted_pct DESCW ciągu 251 sesji w dwunastu miesiącach do 31 lipca 2026 roku XOM miało odczyt w najbliższym przedziale wyższy niż w przedziale od 91 do 180 dni podczas 68.5% z nich, w porównaniu z 19.5% dla SPY. Mediana różnicy wyniosła odpowiednio 1.4 punktów i -2.1 punktów. Walory, dla których regularnie występują zaplanowane wydarzenia, spędzają większą część roku z odwróconą krzywą. Szeroki fundusz indeksowy przez większość czasu pozostaje w contango, a odwrócenia koncentrują się wokół wyprzedaży. Ranga IV mierzy coś innego: położenie dzisiejszego poziomu względem własnego poprzedniego roku, a nie kształt krzywej między terminami wygaśnięcia.
Wpływ płaskiej lub odwróconej krzywej na calendar spread
Calendar spread polega na sprzedaży opcji z bliskim terminem wygaśnięcia i zakupie opcji z dalszym terminem przy tej samej cenie wykonania. Diagonal działa tak samo, ale obejmuje dwie różne ceny wykonania. W obu przypadkach pozycja jest długa względem implikowanej zmienności dalszego terminu i krótka względem implikowanej zmienności najbliższego terminu. Z tego powodu struktura terminowa jest jej głównym parametrem, a nie drugorzędnym szczegółem.
Gdy krzywa rośnie, opcja z bliskim terminem jest sprzedawana przy niższej implikowanej zmienności niż zmienność opcji z dalszym terminem, która jest kupowana. Gdy najbliższy miesiąc jest odwrócony przed wydarzeniem, relacja ta się odwraca, a pozycja jest otwierana na krzywej, która ma przestrzeń do zbieżności. Później krótki koniec załamuje się w kierunku dalszego końca, dalszy koniec zmienia się niewiele, a różnica między odczytami wraca do zwykłego kształtu. Ostateczny wynik pozycji zależy również od skali ruchu akcji, czego krzywa nie pokazuje. Tę część problemu opisuje strona dotycząca oczekiwanego ruchu.
Płaska krzywa jest trudnym przypadkiem. Nie ma nachylenia, które można wykorzystać w żadnym kierunku, dlatego wynik zależy niemal wyłącznie od ścieżki kursu akcji i upływu czasu.
FAQ dotyczące struktury terminowej IV
Czym jest struktura terminowa IV w opcjach?
Jest to implikowana zmienność przedstawiona według daty wygaśnięcia dla opcji z ceną wykonania w pobliżu kursu rynkowego. W przypadku sześciu płynnych walorów w czerwcu 2026 roku mediana wyniosła 19.6% w przedziale 5-20 days oraz 21.5% w przedziale 181-365 days.
Co oznacza odwrócona struktura terminowa IV?
Odwrócona krzywa ma najwyższą implikowaną zmienność w najbliższych terminach wygaśnięcia. Pojawia się, gdy określone wydarzenie przypada w najbliższym miesiącu, a także w sesjach po gwałtownej wyprzedaży, gdy kontrakty z bliskim terminem są wyceniane na podstawie niedawnych dużych ruchów, natomiast dalsze terminy pozostają bliżej długoterminowej średniej.
Dlaczego implikowana zmienność w najbliższym miesiącu jest tak wysoka przed publikacją wyników?
Kontrakt z bliskim terminem ma bardzo mało zwykłych sesji, na które można rozłożyć jeden duży oczekiwany ruch overnight. W efekcie jego annualizowana wartość rośnie, aby uwzględnić ten ruch. Odczyt dla przedziału 5-20 days dla NVIDIA wyniósł 84.9% na sesji przed publikacją raportu z 26 lutego 2025 roku oraz 66.4% na sesji po publikacji.
Czy struktura terminowa jest tym samym co volatility skew?
Nie. Skew porównuje implikowaną zmienność między cenami wykonania w ramach jednego terminu wygaśnięcia. Struktura terminowa utrzymuje poziom moneyness w przybliżeniu na stałym poziomie i porównuje odczyty między terminami wygaśnięcia. Volatility skew opisuje wymiar cen wykonania tej samej powierzchni.
Każda wartość przedstawiona powyżej pochodzi z zapisanego zapytania obejmującego implikowaną zmienność poszczególnych kontraktów. Zapytanie SQL można rozwinąć pod każdym panelem. Tę samą krzywą można wykreślić dla dowolnego tickera w terminalu Strasmore.