Wskaźnik put/call dla akcji i indeksów: interpretacja
Analiza różnic między wskaźnikami put/call dla akcji oraz indeksów. Wyjaśnienie odmiennych zakresów wartości, konstrukcji danych oraz zasad poprawnego porównywania obu miar.
Wskaźnik put/call nie jest pojedynczą wartością. Na podstawie tych samych danych z rynku opcji publikowane są co najmniej trzy jego warianty. Pierwszy uwzględnia wyłącznie opcje na akcje pojedynczych spółek. Drugi obejmuje tylko produkty indeksowe. Trzeci stanowi ich połączenie. Każdy z nich charakteryzuje się odmiennym zakresem wartości typowych, dlatego odczyt na poziomie 1,20 może być wartością odstającą w jednej serii danych, a w innej stanowić wynik typowy dla danej sesji. Jeśli sama miara jest nowością, co mierzy wskaźnik put/call wyjaśnia podstawowe zagadnienia.
Dlaczego wskaźnik put/call dla indeksów utrzymuje się na wyższym poziomie niż dla akcji?
Należy zacząć od analizy strony popytowej. Opcja put na indeks jest najtańszym pojedynczym instrumentem zabezpieczającym cały zdywersyfikowany portfel. Fundusz posiadający czterysta pozycji nie kupuje czterystu oddzielnych opcji put. Kupuje opcje na indeks, roluje je w czasie i księguje zapłaconą premię jako koszt ubezpieczenia. Wolumen ten stanowi ochronę posiadanych już akcji i pojawia się niezależnie od nastawienia zarządzającego.
Opcje na pojedyncze akcje charakteryzują się inną strukturą. Znaczną część wolumenu stanowi kupno opcji call na konkretne spółki, a wystawianie opcji call w ramach strategii covered call generuje dodatkowy wolumen po drugiej stronie rynku. Kupno opcji put na pojedyncze akcje jest realnym zjawiskiem, lecz występuje obok znacznie większego przepływu zleceń na opcje call.
Wzór matematyczny nie pozwala rozróżnić tych przepływów. Podzielenie dużego wolumenu opcji put, służących zabezpieczeniu, przez niewielki wolumen opcji call daje wynik bliski lub powyżej 1,00. Podzielenie umiarkowanego wolumenu opcji put przez duży wolumen opcji call daje wynik w okolicach 0,50. Jeden wzór, dwa różne zakresy wartości.
Poniższe zestawienie przedstawia wolumen kontraktów z ostatnich sześćdziesięciu sesji dla ośmiu popularnych spółek oraz czterech szerokich ETF-ów, dzieląc wolumen opcji put przez wolumen opcji call dla każdego instrumentu bazowego.
Dokładny kod SQL dla każdej liczby
SELECT
underlying_symbol AS symbol,
if(underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA'),
'broad-market ETF',
'single stock') AS bucket,
round(sumIf(volume, startsWith(lower(option_type), 'p'))
/ sumIf(volume, startsWith(lower(option_type), 'c')), 2) AS put_call_ratio,
round(sumIf(volume, startsWith(lower(option_type), 'c')) / 1e6, 1) AS call_volume_millions,
round(sumIf(volume, startsWith(lower(option_type), 'p')) / 1e6, 1) AS put_volume_millions
FROM global_markets.options_greeks
WHERE date >= (SELECT toDate(max(date))
FROM global_markets.options_greeks
WHERE volume > 0) - 60
AND volume > 0
AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'TSLA', 'JPM', 'KO', 'JNJ',
'SPY', 'QQQ', 'IWM', 'DIA')
GROUP BY symbol
HAVING sumIf(volume, startsWith(lower(option_type), 'c')) > 0
ORDER BY put_call_ratio ASCRozpiętość wyników w próbie jest duża. Najniższy odczyt wynosi 0.43 dla MSFT, a najwyższy 2.86 dla IWM, gdzie w analizowanym okresie odnotowano obrót na poziomie 9.6 miliona kontraktów call. Kolumna bucket wskazuje, które wiersze dotyczą pojedynczych akcji, a które szerokich ETF-ów. Należy odnieść do tego kolumnę ze wskaźnikiem.
Jedno zastrzeżenie przed przejściem dalej. Publikowany wskaźnik dla indeksów wykorzystuje opcje na sam poziom indeksu, rozliczane gotówkowo w momencie wygaśnięcia, a nie poprzez dostawę akcji. Opcje mini na indeksy to kontrakty o mniejszej wartości nominalnej. W niniejszym zestawieniu wykorzystano opcje na szerokie ETF-y jako odpowiednik tego samego przepływu zabezpieczającego dla poszczególnych instrumentów, co stanowi punkt sporny między dostawcami danych.
Co uwzględnia każdy z publikowanych wskaźników?
- Tylko akcje: opcje na akcje poszczególnych spółek, przepływy dla pojedynczych walorów, w większości sesji z przewagą opcji call.
- Tylko indeksy: opcje na wartość indeksu, rozliczane gotówkowo, obejmujące większość wolumenu zabezpieczającego portfele.
- Łącznie: każdy kontrakt w obu kategoriach, wolumen opcji put w relacji do wolumenu opcji call.
Wszystkie trzy wskaźniki mierzą wolumen, czyli liczbę kontraktów, które zmieniły właściciela w trakcie sesji, a nie pozycje pozostające otwarte po jej zakończeniu. Wolumen a otwarte pozycje rozróżnia te dwa pojęcia.
Czy całkowity wskaźnik put/call jest średnią z pozostałych dwóch?
Nie. Wartość całkowita jest średnią ważoną, gdzie wagę stanowi wolumen opcji call. Przyjmijmy oznaczenie w dla udziału koszyka indeksowego w wolumenie opcji call dla obu koszyków łącznie. Wartość całkowita równa się wskaźnikowi dla akcji powiększonemu o iloczyn w oraz różnicy między oboma wskaźnikami. Gdy koszyk indeksowy stanowi niewielki ułamek wolumenu opcji call, wartość całkowita jest zbliżona do wskaźnika dla akcji. Gdy koszyk ten dominuje, wartość całkowita zbliża się do wskaźnika dla indeksu.
Kolejny panel utrzymuje oba komponenty na poziomie ich odczytów z sześćdziesięciu sesji i zmienia wartość w w zakresie od zera do stu procent.
Dokładny kod SQL dla każdej liczby
WITH components AS
(
SELECT
round(sumIf(volume, startsWith(lower(option_type), 'p') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA')), 3) AS equity_ratio,
round(sumIf(volume, startsWith(lower(option_type), 'p') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA')), 3) AS index_ratio
FROM global_markets.options_greeks
WHERE date >= (SELECT toDate(max(date))
FROM global_markets.options_greeks
WHERE volume > 0) - 60
AND volume > 0
AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'TSLA', 'JPM', 'KO', 'JNJ',
'SPY', 'QQQ', 'IWM', 'DIA')
HAVING sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA')) > 0
AND sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA')) > 0
)
SELECT
concat(toString(step * 10), '%') AS index_share_of_call_volume,
equity_ratio,
index_ratio,
round(equity_ratio + (index_ratio - equity_ratio) * (step / 10), 3) AS blended_total_ratio
FROM
(
SELECT
equity_ratio,
index_ratio,
arrayJoin(range(11)) AS step
FROM components
)
ORDER BY stepPrzy komponentach ustalonych na poziomach 0.562 oraz 1.396, wartość mieszana wynosi 0.562, gdy koszyk indeksowy nie ma żadnego udziału w wolumenie opcji call, oraz 1.396, gdy odpowiada za całość tego wolumenu. Przy równym podziale, czyli 50% udziału wolumenu opcji call w koszyku indeksowym, wartość całkowita wynosi 0.979. Żaden z komponentów nie uległ zmianie w tych jedenastu wierszach. Zmieniła się jedynie proporcja.
Czy wskaźnik całkowity może wzrosnąć, gdy oba jego składniki spadają?
Jest to możliwe i stanowi pułapkę interpretacyjną pojedynczej wartości nagłówkowej. Poniżej przedstawiono hipotetyczny przykład dwóch sesji z użyciem liczb okrągłych dla przejrzystości obliczeń.
Dzień pierwszy: w segmencie akcji odnotowano obrót 1 000 000 opcji call i 600 000 opcji put, co daje wskaźnik na poziomie 0,60. W segmencie indeksów odnotowano obrót 200 000 opcji call i 280 000 opcji put, co daje wskaźnik 1,40. Łącznie daje to 880 000 opcji put wobec 1 200 000 opcji call, czyli 0,73.
Dzień drugi: oba wskaźniki spadają. W segmencie akcji odnotowano 0,55 przy 600 000 opcji call i 330 000 opcji put. W segmencie indeksów odnotowano 1,30 przy 800 000 opcji call i 1 040 000 opcji put. Łącznie daje to 1 370 000 wobec 1 400 000, czyli 0,98.
Oba składniki spadły. Wartość całkowita wzrosła o jedną czwartą punktu. Jedynym elementem, który uległ zmianie, był udział wolumenu opcji call w segmencie o wyższym wskaźniku, który wzrósł z siedemnastu procent do pięćdziesięciu siedmiu procent. Obserwator śledzący wyłącznie wartość całkowitą odnotowałby skok aktywności na opcjach put, którego nie doświadczył żaden z poszczególnych segmentów.
Udział ten nie jest stały w danych rzeczywistych. Poniższy panel śledzi wskaźniki obu segmentów oraz udział segmentu ETF w wolumenie opcji call, sesja po sesji.
Dokładny kod SQL dla każdej liczby
SELECT
toString(date) AS session_date,
formatDateTime(date, '%b %e') AS session_label,
round(sumIf(volume, startsWith(lower(option_type), 'p') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA')), 2) AS equity_ratio,
round(sumIf(volume, startsWith(lower(option_type), 'p') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA')), 2) AS index_style_ratio,
round(index_style_ratio - equity_ratio, 2) AS ratio_gap,
round(100 * sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c')), 1) AS etf_share_of_calls_pct
FROM global_markets.options_greeks
WHERE date >= (SELECT toDate(max(date))
FROM global_markets.options_greeks
WHERE volume > 0) - 45
AND volume > 0
AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'TSLA', 'JPM', 'KO', 'JNJ',
'SPY', 'QQQ', 'IWM', 'DIA')
GROUP BY date
HAVING sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA')) > 0
AND sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA')) > 0
ORDER BY dateW dniu Jun 29, podczas najwcześniejszej uwzględnionej sesji, segment akcji pojedynczych odnotował 0.5 wobec 1.55 dla segmentu ETF, co daje różnicę 1.05, przy czym 45.2 procent wolumenu opcji call znajdowało się w segmencie ETF. W dniu Aug 12 wartości te wyniosły odpowiednio 0.55, 1.34 oraz różnicę 0.79, przy udziale ETF na poziomie 49.5 procent. Kolumna różnicy jest dodatnia na obu końcach prezentowanego okresu 32 sesji, a kolumna udziału przesuwa się pod nią.
Dlaczego dwa źródła podają różne wskaźniki put/call dla tego samego dnia?
Kategoryzacja oraz opcje na ETF stanowią niejednoznaczny przypadek. ETF jest papierem wartościowym notowanym na giełdzie, co przemawia za zaklasyfikowaniem go do kategorii akcji. Jednocześnie fundusz ten śledzi indeks, co stanowi argument za kategorią indeksową. Wydawcy danych rozwiązują ten problem w różny sposób: niektórzy wliczają opcje na ETF do wskaźnika dla akcji, inni raportują produkty giełdowe jako oddzielną serię, a jeszcze inni grupują je z produktami indeksowymi. Etykieta na wykresie w każdym przypadku brzmi tak samo.
Skala tego wyboru jest mierzalna. Poniższy panel oblicza wskaźnik dla jednej kategorii dwukrotnie w trakcie tych samych sesji: raz z pominięciem opcji na ETF, a raz z ich uwzględnieniem.
Dokładny kod SQL dla każdej liczby
SELECT
toString(date) AS session_date,
formatDateTime(date, '%b %e') AS session_label,
round(sumIf(volume, startsWith(lower(option_type), 'p') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA')), 2) AS equity_ratio_etfs_excluded,
round(sumIf(volume, startsWith(lower(option_type), 'p'))
/ sumIf(volume, startsWith(lower(option_type), 'c')), 2) AS equity_ratio_etfs_included
FROM global_markets.options_greeks
WHERE date >= (SELECT toDate(max(date))
FROM global_markets.options_greeks
WHERE volume > 0) - 30
AND volume > 0
AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'TSLA', 'JPM', 'KO', 'JNJ',
'SPY', 'QQQ', 'IWM', 'DIA')
GROUP BY date
HAVING sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA')) > 0
ORDER BY dateW dniu Aug 12, ostatniej sesji w panelu, wartość uwzględniająca wyłącznie akcje wyniosła 0.55, natomiast wersja z wliczonymi opcjami na ETF wyniosła 0.94. Ten sam dzień, ten sam zapis transakcji, te same opisy na osiach. Próg wyznaczony na podstawie serii danych jednego wydawcy nie jest przenośny na dane innego.
Co zatem uznaje się za wysoki wskaźnik put/call?
Praktyczna zasada jest wąska. Wskaźnik należy porównywać wyłącznie z jego własną historią, pochodzącą z tego samego źródła i obliczoną w ten sam sposób. Odpowiedzi na to pytanie dostarcza percentyl: w którym miejscu na tle ostatniego roku dla danej serii znajduje się dzisiejszy odczyt? Stała linia na poziomie 1,00 nie jest miarodajna, ponieważ 1,00 to odczyt ekstremalny dla serii akcyjnych, a rutynowy dla serii indeksowych.
Dwa nawyki pozwalają zachować rzetelność porównań. Przed zacytowaniem poziomu należy zapoznać się z notą metodologiczną, zwłaszcza w zakresie obsługi ETF. Należy również analizować składniki w odniesieniu do sumy, ponieważ całkowity wskaźnik może zmieniać się wyłącznie pod wpływem zmiany struktury portfela. Artykuł czy wysoki wskaźnik put/call jest sygnałem wzrostowym pogłębia tę interpretację, a sposób obliczania wskaźnika put/call krok po kroku wyjaśnia arytmetykę.
Uwagi dotyczące danych i definicji koszyków
Koszyk ETF obejmuje SPY, QQQ, IWM oraz DIA. Koszyk pojedynczych akcji obejmuje AAPL, MSFT, NVDA, AMZN, TSLA, JPM, KO oraz JNJ. Oba zbiory stanowią próbki swoich kategorii, a nie cały rynek, dlatego prezentowane poziomy ilustrują podział bez powielania głównych wskaźników publikowanych przez inne podmioty.
Każdy panel sumuje wolumen kontraktów dla sesji, oddzielnie dla opcji call i put, a następnie dokonuje dzielenia. Nie stosuje się ważenia wartością dolarową ani wartością premii.
Każde okno czasowe jest zakotwiczone w ostatniej sesji, dla której odnotowano wolumen, a nie w dniu kalendarzowym. Strony put i call są dopasowywane na podstawie pierwszej litery typu kontraktu, dzięki czemu dane z kanałów informacyjnych oznaczających opcje jako P i C są poprawnie przypisywane do odpowiednich koszyków.
Kontrakt jest uwzględniany, jeśli sesja odnotowała dla niego wolumen, włącznie z opcjami typu deep out-of-the-money. Dalekie ceny wykonania stanowią znaczną część wolumenu opcji put wykorzystywanych do zabezpieczeń, a ich pominięcie prowadziłoby do zaniżenia wyników dla koszyka ETF.
Opcje na indeksy, rozliczane gotówkowo i o stylu europejskim, są produktem odmiennym od opcji na ETF. Panele dla poszczególnych instrumentów bazowych wykorzystują opcje na ETF jako substytut przepływów zabezpieczających indeksy, co odnosi się do kwestii grupowania wspomnianej powyżej.
Ostatnia sesja lub dwie mogą być nieobecne na początku szeregu, dopóki dane z danego dnia nie zostaną w pełni przetworzone.
Często zadawane pytania
Jaki jest typowy wskaźnik put/call dla opcji na akcje?
Opcje na pojedyncze akcje zazwyczaj wykazują wartości poniżej 1,00, przy czym w większości sesji wolumen opcji call jest wyższy. Wśród dwunastu nazw ujętych w powyższym zestawieniu z ostatnich sześćdziesięciu sesji, najniższy odczyt wyniósł 0.43. Normę dla danej serii wyznacza jej własna historia, a nie wspólny dla całego rynku próg.
Dlaczego wskaźnik put/call dla indeksów zazwyczaj przekracza 1?
Opcje put na indeksy stanowią standardowe zabezpieczenie portfela, a popyt na nie jest generowany cyklicznie przez zarządzających, którzy już posiadają akcje. Wolumen zabezpieczający trafia po stronie put tego samego ułamka, który w przypadku transakcji kierunkowych byłby wykorzystany inaczej, co sprawia, że seria ta utrzymuje się na wyższym poziomie w całym okresie notowań.
Który wskaźnik put/call zazwyczaj prezentują wykresy sentymentu?
Większość publikowanych wykresów przedstawia serię całkowitą lub tylko dla akcji, przy czym etykieta osi rzadko precyzuje, o którą z nich chodzi. Przed odniesieniem wykresu do progu cytowanego w innym źródle należy sprawdzić metodologię obliczeń, ponieważ serie te kształtują się na różnych poziomach.
Czy można porównywać wskaźniki put/call od dwóch różnych dostawców?
Poziomy te nie są porównywalne. Dostawcy różnią się sposobem traktowania ETF-ów oraz zakresem uwzględnianego wolumenu z poszczególnych giełd. Porównywalne pozostają jedynie kierunek zmian oraz ranga percentylowa w ramach serii danych tego samego dostawcy.
Każdy panel zawiera zapytanie SQL, które wygenerowało dane, dzięki czemu każde z tych zestawień można odtworzyć dla innego uniwersum lub okna czasowego. To samo pytanie można zadać w języku angielskim w terminalu Strasmore.