jak czytać łańcuch opcji kolumna po kolumnie
Łańcuch opcji zawiera wszystkie serie i daty wygaśnięcia dla jednej akcji. Wyjaśniono, co mierzą kolumny bid, ask, wolumen, zmienność implikowana i delta.
6.07
Łańcuch opcji to tabela, którą broker wyświetla dla jednego instrumentu bazowego – akcji lub funduszu: każdą notowaną datę wygaśnięcia, każdy kurs wykonania oraz wiersz bieżących danych dla calla i puta przy każdym kursie. Odczytywanie go polega na znajomości znaczenia każdej kolumny oraz tego, jak dwie współrzędne – data wygaśnięcia i kurs wykonania – lokalizują pojedynczy kontrakt w siatce. Niniejsza strona omawia rzeczywisty łańcuch kolumna po kolumnie, posługując się przykładem trackera S&P 500 – SPY – z dnia 15 lipca 2026 roku.
Co to jest łańcuch opcji?
Każda notowana opcja jest określona przez cztery fakty: symbol instrumentu bazowego, datę wygaśnięcia, cenę wykonania oraz to, czy jest to call czy put. Łańcuch to to zestawienie przekształcone w układ. Selektor u góry pozwala wybrać datę wygaśnięcia. Ceny wykonania biegną następnie środkiem ekranu, calle zajmują kolumny po jednej stronie, a puty kolumny po drugiej. Wybierz jedną datę wygaśnięcia i czytasz płaski wycinek siatki: jeden wiersz na cenę wykonania, jeden zestaw kolumn kwotowań na stronę.
Same kolumny opisują ten jeden kontrakt, a nie akcje bazowe. Pojedynczy instrument bazowy może mieć dziesiątki dat wygaśnięcia i setki cen wykonania, więc pełny łańcuch dla aktywnie handlowanego waloru liczy tysiące wierszy. Brokerzy domyślnie ukrywają większość z nich i otwierają w okolicach pieniądza, czyli regionu, w którym cena wykonania znajduje się najbliżej bieżącego kursu akcji.
Odczytywanie jednego terminu wygaśnięcia, strike po strike'u
Oto rzeczywisty wycinek: opcje call i put na SPY wygasające 21 sierpnia 2026 roku, wycenione na zamknięciu 15 lipca, dla strike'ów otaczających cenę akcji.
Dokładny kod SQL dla każdej liczby
SELECT toString(toUInt32(strike_price)) AS strike,
round(any(underlying_close), 2) AS underlying_price,
round(maxIf(option_close, option_type = 'C'), 2) AS call_last,
round(maxIf(option_close, option_type = 'P'), 2) AS put_last,
round(maxIf(delta, option_type = 'C'), 2) AS call_delta,
round(minIf(delta, option_type = 'P'), 2) AS put_delta
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date = toDate('2026-07-15')
AND expiration_date = toDate('2026-08-21')
AND strike_price BETWEEN 735 AND 770
AND toUInt32(strike_price) % 5 = 0
AND iv_converged
GROUP BY strike_price
HAVING countIf(option_type = 'C') > 0 AND countIf(option_type = 'P') > 0
ORDER BY strike_priceOd razu widoczne są dwa wzorce. Ceny call spadają wraz ze wzrostem strike'u, od $28.82 przy strike'u $735 do $6.1 przy $770: prawo do kupna po niższej cenie jest warte więcej. Ceny put poruszają się w przeciwnym kierunku w tych samych ośmiu wierszach, od $6.07 do $19.16. Te dwie drabiny krzyżują się w pobliżu ceny akcji wynoszącej $754.68, a strike, przy którym call i put są najbliżej siebie, wyznacza poziom pieniężności.
Kolumny delta opisują tę geometrię w innej jednostce. Delta to zmiana ceny opcji przy zmianie instrumentu bazowego o 1 USD, a także służy jako przybliżone oszacowanie prawdopodobieństwa, że kontrakt zakończy się w cenie. Przy strike'u $735 call ma deltę 0.73, a put -0.26. Przy strike'u $770 call spada do 0.34. Call i put w tym samym wierszu mają zawsze delty różniące się o około jeden co do wartości bezwzględnej, co wynika z faktu, że dwa kontrakty pokrywają przeciwne połowy tego samego rozkładu. Pozostałe kolumny wrażliwości są omówione w objaśnieniu greckich parametrów opcji.
Bid, ask i dlaczego nie są jedną ceną
Łańcuch podaje dwie ceny dla każdego kontraktu. Bid to najwyższa cena, jaką kupujący jest obecnie skłonny zapłacić. Ask to najniższa cena, jaką sprzedający zaakceptuje. Różnica między nimi to spread. Zlecenie rynkowe kupna realizuje się po ask, a zlecenie rynkowe sprzedaży po bid, więc spread to realny koszt ponoszony przy wejściu i ponownie przy wyjściu. „Ostatnia" cena wyświetlana w łańcuchu może być sprzed kilku minut i może znajdować się w dowolnym miejscu względem bieżącego kwotowania.
Spready nie są jednolite w całym łańcuchu. Poniżej mediana kwotowanego bid i ask dla tego samego wygaśnięcia dla siedmiu strike'ów call, mierzona podczas sesji regularnej 15 lipca 2026 r.
Dokładny kod SQL dla każdej liczby
SELECT concat('$', toString(toUInt32(toFloat64(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8))) / 1000)), ' call') AS strike,
round(quantileDeterministic(0.5)(toFloat64(bid_price), toUInt64(sip_timestamp)), 2) AS median_bid,
round(quantileDeterministic(0.5)(toFloat64(ask_price), toUInt64(sip_timestamp)), 2) AS median_ask,
round(100 * quantileDeterministic(0.5)(toFloat64(ask_price - bid_price), toUInt64(sip_timestamp)), 1) AS median_spread_cents,
toUInt64(count()) AS quotes_recorded
FROM global_markets.cache_options_quotes
WHERE ticker IN ('O:SPY260821C00740000', 'O:SPY260821C00750000', 'O:SPY260821C00760000',
'O:SPY260821C00770000', 'O:SPY260821C00780000', 'O:SPY260821C00800000',
'O:SPY260821C00820000')
AND sip_timestamp >= '2026-07-15 13:30:00'
AND sip_timestamp < '2026-07-15 20:00:00'
AND bid_price > 0
AND ask_price > bid_price
GROUP BY ticker
ORDER BY toUInt32OrZero(substring(ticker, length(ticker) - 7, 8))Głęboki in-the-money strike na górze panelu kwotował medianę spreadu 12 centa przy bidzie wynoszącym 24.18 USD. Daleki out-of-the-money strike na dole panelu kwotował 1 centa przy bidzie wynoszącym 0.12 USD. W ujęciu absolutnym tani kontrakt ma węższy spread. Jako ułamek własnej ceny jest on znacznie szerszy i to właśnie ten ułamek stanowi rzeczywisty koszt transakcji okrężnej. Mechanika kwotowania dwustronnego jest opisana w spreadzie bid-ask. Ten sam panel pokazuje drugą oś, wzdłuż której poruszają się spready: aktywne strike blisko pieniądza odnotowały w trakcie sesji dobrze ponad sto tysięcy aktualizacji kwotowań, a odległe – kilka tysięcy.
Wolumen i otwarte pozycje
Dwie kolumny odzwierciedlają aktywność, a czytelnicy nieustannie je mylą. Wolumen liczy kontrakty zawarte podczas bieżącej sesji i resetuje się do zera z dnia na dzień. Otwarte pozycje liczą kontrakty wciąż otwarte na koniec poprzedniej sesji, aktualizują się więc raz dziennie i opisują skumulowane pozycjonowanie, a nie dzisiejszy przepływ. Dany poziom wykonania może wykazywać wysoki wolumen przy niemal zerowych otwartych pozycjach – ma to miejsce, gdy traderzy otwierają i zamykają pozycje w ciągu tego samego dnia.
Dokładny kod SQL dla każdej liczby
SELECT toString(toUInt32(strike_price)) AS strike,
toUInt64(sumIf(volume, option_type = 'C')) AS call_volume,
toUInt64(sumIf(volume, option_type = 'P')) AS put_volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date = toDate('2026-07-15')
AND expiration_date = toDate('2026-08-21')
AND strike_price BETWEEN 735 AND 770
AND toUInt32(strike_price) % 5 = 0
AND iv_converged
GROUP BY strike_price
HAVING countIf(option_type = 'C') > 0 AND countIf(option_type = 'P') > 0
ORDER BY strike_priceKlastry wolumenu. W przypadku tych ośmiu poziomów wykonania strona call wygenerowała od 81 kontraktów na najniższym poziomie do 4547 na najwyższym, a strona put miała odwrotną tendencję. Okrągłe liczby i poziomy wykonania blisko ceny akcji przyjmują większość przepływu, natomiast poziom oddalony o dwa lub trzy kroki może mieć jedynie ułamek tego wolumenu. Tam, gdzie w wierszu łańcucha opcji występuje szeroki spread, zwykle obok niego znajduje się niski wolumen w tym samym wierszu. Wolumen a otwarte pozycje mierzy w tym punkcie cały arkusz.
Zmienność implikowana, strike po strike
Kolumna zmienności implikowanej przelicza cenę kontraktu na roczny procent: poziom zmienności, który sprawiłby, że model wyceny zwróciłby podaną cenę. Jest to przeformułowanie ceny, a nie prognoza. Kontrakty na ten sam instrument bazowy i z tym samym terminem wygaśnięcia rutynowo mają różne zmienności implikowane przy różnych strike'ach, a naniesienie kolumny na wykres względem strike'a tworzy kształt znany jako uśmiech (smile) lub skos (skew).
Dokładny kod SQL dla każdej liczby
SELECT toString(toUInt32(strike_price)) AS strike,
round(100 * avg(implied_volatility), 1) AS implied_vol_pct,
round(100 * (strike_price / any(underlying_close) - 1), 1) AS strike_vs_spot_pct
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date = toDate('2026-07-15')
AND expiration_date = toDate('2026-08-21')
AND strike_price BETWEEN 640 AND 840
AND toUInt32(strike_price) % 20 = 0
AND iv_converged
AND implied_volatility BETWEEN 0.02 AND 3
GROUP BY strike_price
ORDER BY strike_priceKrzywa nie jest płaska. Najniższy strike w panelu znajduje się -15.2% od ceny akcji i wyceniony jest na 23.6%, środkowy strike w zakresie jest znacznie niższy, a górny strike zawraca w górę do 12.8%. W opcjach na indeksy dolne skrzydło (downside wing) jest zazwyczaj wyceniane wyżej niż górne skrzydło (upside wing) – jest to trwała asymetria, a nie codzienny kaprys. Dla każdego czytającego tę kolumnę wynikają z tego dwie rzeczy. Pojedyncza liczba „IV” podawana dla akcji jest średnią z powierzchni, która nie jest płaska, a porównywanie zmienności implikowanej między dwoma strike'ami ma sens tylko wtedy, gdy znana jest ich odległość od ceny akcji. Zmienność implikowana definiuje tę miarę, a skos zmienności (volatility skew) odwzorowuje jej kształt.
Czym różni się seria wygasająca tego samego dnia
Seria kontraktów wygasających podczas tej samej sesji, czyli kontrakty 0DTE, wygląda jak każda inna seria, ale różni się pod jednym względem: wszystko w nich dzieje się szybciej. Wartość czasowa wygasa w ciągu godzin, a nie miesięcy, delta gwałtownie się zmienia, gdy cena akcji przekracza poziom wykonania, a siatka strike'ów jest zazwyczaj gęstsza w okolicach pieniądza. Skład obrotu z jednego dnia pokazuje, jak duża część aktywności obecnie się tam koncentruje.
Dokładny kod SQL dla każdej liczby
WITH dateDiff('day', toDate('2026-07-15'), toDate(concat('20', substring(ticker, length(ticker) - 14, 2), '-', substring(ticker, length(ticker) - 12, 2), '-', substring(ticker, length(ticker) - 10, 2)))) AS dte
SELECT multiIf(dte = 0, 'same day (0DTE)', dte <= 7, '1-7 days', dte <= 30, '8-30 days',
dte <= 90, '31-90 days', 'over 90 days') AS expires_in,
round(sum(volume) / 1e6, 2) AS contracts_m,
round(100 * toFloat64(sum(volume)) / (SELECT toFloat64(sum(volume))
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-07-15 00:00:00' AND window_start < '2026-07-16 00:00:00'
AND substring(ticker, 3, length(ticker) - 17) = 'SPY'), 1) AS pct_of_spy_volume,
toUInt64(uniqExact(ticker)) AS distinct_contracts
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-07-15 00:00:00'
AND window_start < '2026-07-16 00:00:00'
AND substring(ticker, 3, length(ticker) - 17) = 'SPY'
AND dte >= 0
GROUP BY expires_in
ORDER BY min(dte)Kontrakty wygasające tego samego popołudnia stanowiły 66.9% wolumenu opcji na SPY 15 lipca 2026 roku, czyli 8.48 milionów kontraktów rozłożonych na zaledwie 170 różnych strike'ów. Wszystkie opcje o terminie zapadalności powyżej dziewięćdziesięciu dni odpowiadały za 0.8% wolumenu, oferując jednocześnie 1502 różnych kontraktów. Ten układ warto mieć na uwadze przy otwieraniu dowolnej serii: najszersza część siatki generuje najmniejszy obrót, a wąski wycinek tego samego dnia skupia większość transakcji. Opcje zerodniowe omawiają ten wycinek na własnych zasadach.
Odczytywanie wiersza od początku do końca
Weźmy poziom wykonania $755 z pierwszego panelu, przy SPY na poziomie $754.68. Ostatnia transakcja na callu wyniosła $14.03, a na putcie $11.52 – jest to najbliższa para na wycinku, co identyfikuje ten wiersz jako wiersz przy pieniądzu. Delta calla wynosząca 0.54 oznacza, że ruch SPY o $1 zmienia wartość tego calla o około 0.54 dolara, a put w tym samym wierszu ma deltę -0.46 dla tego samego ruchu o $1 w przeciwnym kierunku.
Jeden kontrakt obejmuje 100 akcji, więc kwotowanie w łańcuchu na poziomie $14.03 jest kwotowaniem na akcję, a koszt kontraktu wynosi mniej więcej 100-krotność tej wartości przed prowizjami. Mnożnik to najczęstszy błąd w odczytywaniu łańcucha. Wszystkie pozostałe dane w wierszu opisują ten sam kontrakt z innej perspektywy: spread to koszt transakcji, wolumen to liczba uczestników rynku, a implikowana zmienność to założenie co do zmienności wbudowane w cenę. Opcje call i opcje put wyjaśniają mechanikę wypłaty, na której opiera się każdy wiersz.
FAQ
Co oznaczają kolumny w arkuszu opcji?
Strajk i data wygaśnięcia identyfikują kontrakt. Bid i ask to dwustronny kwotowania na żywo, last to cena ostatniej transakcji, volume to liczba dzisiejszych transakcji, a open interest to liczba pozycji wciąż otwartych z poprzednich sesji. Implied volatility przedstawia cenę jako roczny procent, a kolumny greków mierzą wrażliwość na cenę akcji, upływ czasu i zmienność.
Jaka jest różnica między volume a open interest?
Volume liczy kontrakty, którymi handlowano podczas bieżącej sesji i każdego ranka zaczyna od zera. Open interest liczy kontrakty wciąż otwarte po rozliczeniu poprzedniej sesji, więc jest o jeden dzień starszy i zmienia się tylko wtedy, gdy pozycje są otwierane lub zamykane, a nie przenoszone między traderami.
Dlaczego dwa strajki z tą samą datą wygaśnięcia mają różne implied volatility?
Opcje na różnych strajkach obejmują różne części zakresu możliwych przyszłych cen, a rynek wycenia te części odmiennie. W powyższym przykładzie SPY najniższy strajk na panelu wyceniany był w okolicach 23.6%, podczas gdy środek zakresu znajdował się znacznie poniżej – krzywa, którą traderzy nazywają uśmiechem (smile) lub skosem (skew).
Co oznacza delta 0,50 w arkuszu opcji?
Delta 0,50 oznacza, że cena kontraktu zmienia się o około 50 centów przy zmianie ceny akcji bazowej o 1 USD i jest powszechnie traktowana jako przybliżone oszacowanie prawdopodobieństwa, że kontrakt zakończy się w pieniądzu. Delta wynosi około 0,50 dla calli na strajku najbliższym bieżącej ceny akcji i spada do zera dla odległych strajków.
Czy cena w arkuszu opcji dotyczy jednej akcji czy jednego kontraktu?
Podana cena dotyczy jednej akcji. Standardowa amerykańska opcja na akcje obejmuje 100 akcji, więc kontrakt kwotowany po 2,00 USD kosztuje około 200 USD plus opłaty. Arkusze prawie nigdy nie pokazują tego mnożnika.
Każda powyższa liczba pochodzi z zapisanego, wersjonowanego zapytania nad strumieniem opcji. Rozwiń dowolny panel, aby odczytać SQL, lub pobierz ten sam arkusz samodzielnie na terminalu Strasmore.