Wielkość strumienia danych OPRA
Analiza skali danych OPRA. Porównanie liczby aktualizacji NBBO dla opcji względem całego rejestru wycen akcji w trakcie jednej sesji rynkowej.
Strumień wycen opcji stanowi największy zbiór danych rynkowych w USA: każdy notowany kontrakt opcyjny posiada własną najlepszą ofertę kupna oraz najlepszą ofertę sprzedaży, a OPRA — Options Price Reporting Authority, skonsolidowany rejestr dla opcji notowanych w USA — publikuje każdą aktualizację każdego z nich. W dniu 2026-07-13, podczas jednej sesji zwykłej, nasz magazyn danych zarejestrował 8.23 miliarda aktualizacji wycen opcji — co stanowi 16.8 wielkości całego rejestru wycen akcji z tego samego dnia. Niniejsza strona mierzy ten strumień danych bezpośrednio, a przy każdej liczbie znajduje się dokładne zapytanie źródłowe.
Dlaczego strumień danych o wycenach opcji jest tak rozległy?
Akcja posiada jedną ofertę kupna i sprzedaży (NBBO) — jeden spread bid-ask, który musi być aktualizowany. Łańcuch opcji mnoży tę wartość: każdy wpisany kontrakt — każda kombinacja daty wygaśnięcia, ceny wykonania oraz typu call lub put — podaje własne NBBO. W 2026-07-13 sam instrument SPY generował 9156 odrębnych kontraktów z wycenami, uwzględniając jedynie terminy wygaśnięcia w 2026 roku.
Mnożenie nie ogranicza się tylko do liczby kontraktów. Wartość opcji zmienia się wraz z akcją bazową, a gdy cena akcji ulega zmianie, animatorzy rynku aktualizują wyceny w całym łańcuchu — dla każdej ceny wykonania i każdego terminu wygaśnięcia jednocześnie, niezależnie od tego, czy na tych kontraktach dokonano transakcji. Tak przedstawia się skala zjawiska mierzonego poniżej: liczba aktualizacji wycen wynosi miliardy na sesję, a 776 aktualizacji wycen przypada na każdą zrealizowaną transakcję na opcjach.
Jeden dzień obrotu opcjami, podsumowanie
Ile danych oznacza to w praktyce? Poniższa tabela zawiera każdą aktualizację kwotowań opcji zapisaną w naszym magazynie dla 2026-07-13 — co oznacza co najmniej pięć pełnych dni kalendarzowych wstecz od ostatniej zakończonej sesji (zgodnie z zasadą opisaną w sekcji dotyczącej niedoboru danych) — i zestawia te dane z pełnym zapisem kwotowań akcji z tej samej sesji. Jest to to samo porównanie, które zaprezentowano w podsumowaniu rynku z 7 lipca w poniedziałkowym zapisie. Oba zbiory obejmują pełny dzień kalendarzowy w czasie uniwersalnym (UTC), obejmujący całą sesję opcyjną w USA.
Dokładny kod SQL dla każdej liczby
WITH (
SELECT max(toDate(toTimeZone(window_start, 'America/New_York')))
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime(today() - 10)
AND window_start < toDateTime(today() - 4)
) AS session_day,
(
SELECT (count(), uniqExact(ticker))
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= toDateTime(session_day)
AND sip_timestamp < toDateTime(session_day + 1)
) AS stock_tape,
(
SELECT (count(), uniqExact(ticker))
FROM global_markets.options_trades
WHERE sip_timestamp >= toDateTime(session_day)
AND sip_timestamp < toDateTime(session_day + 1)
) AS option_trades_t,
(
SELECT toUInt32(max(sip_timestamp)) - toUInt32(min(sip_timestamp))
FROM global_markets.cache_options_quotes
WHERE ticker >= 'O:SPY26' AND ticker < 'O:SPY27'
AND sip_timestamp >= toDateTime(session_day)
AND sip_timestamp < toDateTime(session_day + 1)
) AS spy_span_seconds
SELECT
toString(session_day) AS session_date,
round(count() / 1e9, 2) AS option_quote_updates_bn,
round(stock_tape.1 / 1e6, 0) AS stock_quote_updates_m,
stock_tape.2 AS stock_symbols_quoted,
round(count() / stock_tape.1, 1) AS option_to_stock_ratio,
round(option_trades_t.1 / 1e6, 1) AS option_trades_m,
round(option_trades_t.2 / 1e3, 0) AS option_contracts_traded_k,
round(count() / option_trades_t.1, 0) AS quote_updates_per_trade,
round(count() / spy_span_seconds / 1e3, 0) AS avg_updates_per_second_k
FROM global_markets.cache_options_quotes
WHERE sip_timestamp >= toDateTime(session_day)
AND sip_timestamp < toDateTime(session_day + 1)Cały zapis opcyjny obejmował 8.23 miliarda aktualizacji NBBO. Tylko 338 tysięcy odrębnych kontraktów faktycznie zawarto w handlu tego dnia — strumień kwotowań obejmuje znacznie większą liczbę instrumentów niż liczba faktycznych transakcji. Zapis akcji z tego samego dnia — obejmujący każdą skonsolidowaną aktualizację kwotowania dla każdej spółki i ETF, w tym premarket oraz after-hours — odnotował 491 milion aktualizacji dla 12958 symboli. Kluczowy jest stosunek tych wartości: strumień kwotowań opcji był 16.8 razy większy niż strumień kwotowań akcji.
Dwa dodatkowe odczyty z tego samego skanowania obrazują charakterystyka strumienia danych. Średnio w całym okresie kwotowania sesji (mierzone na łańcuchu SPY, najgłębszym w całym zapisie), aktualizacje pojawiały się z częstotliwością 339 tysięcy na sekundę. Rynek opcji odnotował tego dnia 10.6 milion faktycznych transakcji — co oznacza 776 aktualizacji kwotowań na każdą z nich. To kwotowania, a nie transakcje, stanowią główny ładunek przesyłu.
Wycinek z jednego instrumentu bazowego: łańcuch opcji SPY w ciągu jednego dnia
Pełny strumień danych rynkowych jest trudny do analizy, a jego skanowanie jest kosztowne — dlatego należy wybrać jeden wycinek. Poniższa tabela zawiera liczbę wszystkich aktualizacji kwotowań kontraktów opcyjnych SPY z terminem wygaśnięcia w 2026 roku, w ramach tej samej sesji i tego samego dnia ograniczonego strefą UTC: łańcuch jednego instrumentu bazowego, wyodrębniony z ogromnej ilości danych za pomocą zakresu tickerów.
Dokładny kod SQL dla każdej liczby
WITH (
SELECT max(toDate(toTimeZone(window_start, 'America/New_York')))
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime(today() - 10)
AND window_start < toDateTime(today() - 4)
) AS session_day
SELECT
toString(session_day) AS session_date,
round(count() / 1e6, 1) AS spy_quote_updates_m,
uniqExact(ticker) AS spy_contracts_quoted,
round(count() / uniqExact(ticker) / 1e3, 1) AS avg_updates_per_contract_k,
uniqExactIf(ticker, substring(ticker, 6, 6) = formatDateTime(session_day, '%y%m%d')) AS same_day_expiry_contracts,
round(100.0 * countIf(substring(ticker, 6, 6) = formatDateTime(session_day, '%y%m%d')) / count(), 1) AS same_day_expiry_pct_of_updates,
quantileExactWeightedIf(0.5)(toInt32(round(toFloat64(ask_price - bid_price) * 100)), 1, bid_price > 0 AND ask_price >= bid_price AND substring(ticker, 6, 6) = formatDateTime(session_day, '%y%m%d')) AS same_day_median_width_cents,
quantileExactWeightedIf(0.5)(toInt32(round(toFloat64(ask_price - bid_price) * 100)), 1, bid_price > 0 AND ask_price >= bid_price) AS all_spy_median_width_cents,
round(countIf(NOT (bid_price > 0 AND ask_price >= bid_price)) / 1e3, 0) AS dropped_invalid_quotes_k,
formatDateTime(toTimeZone(min(sip_timestamp), 'America/New_York'), '%H:%i') AS spy_first_quote_et,
formatDateTime(toTimeZone(max(sip_timestamp), 'America/New_York'), '%H:%i') AS spy_last_quote_et,
toHour(toTimeZone(min(sip_timestamp), 'America/New_York')) * 60 + toMinute(toTimeZone(min(sip_timestamp), 'America/New_York')) AS spy_first_quote_et_minute,
toHour(toTimeZone(max(sip_timestamp), 'America/New_York')) * 60 + toMinute(toTimeZone(max(sip_timestamp), 'America/New_York')) AS spy_last_quote_et_minute
FROM global_markets.cache_options_quotes
WHERE ticker >= 'O:SPY26' AND ticker < 'O:SPY27'
AND sip_timestamp >= toDateTime(session_day)
AND sip_timestamp < toDateTime(session_day + 1)Jeden instrument bazowy wygenerował 337.1 milion aktualizacji kwotowań opcji w ciągu jednego dnia: 9156 kontraktów wycenianych, co daje średnio 36.8 tysięcy aktualizacji na kontrakt. Dla porównania, cały strumień danych giełdowych w powyższej tabeli — łączny wynik wszystkich spółek i ETF — wyniósł 491 milion aktualizacji w tej sesji.
Dane dotyczące terminów wygaśnięcia w tym samym dniu dostarczają bardziej precyzyjnych informacji. Opcje 0DTE — kontrakty handlowane w dniu ich wygaśnięcia — dominują w obrocie opcjami, a poniższa tabela przedstawia pięć najbardziej aktywnych kontraktów SPY wygasających tego samego dnia. W strumieniu kwotowań stanowią one jedynie ułamek: 334 kontraktów wygasających tego samego dnia stanowiło 4.5% wszystkich aktualizacji kwotowań SPY. Market makerzy utrzymują wycenę całego łańcucha — strike'i na grudzień są aktualizowane przez całą sesję, niezależnie od tego, czy dochodzi do transakcji.
Kolejnym istotnym parametrem jest rozpiętość. Wśród tych samych kontraktów SPY wygasających tego samego dnia, mediana kwotowanej rozpiętości — ask minus bid, obliczona na podstawie każdej poprawnej aktualizacji NBBO — wyniosła 3¢; dla całego łańcucha z terminem wygaśnięcia w 2026 roku ta sama mediana wyniosła 4¢. (197 tysięcy aktualizacji jednostronnych lub krzyżujących się nie uwzględniono w medianach rozpiętości, lecz policzono je w tabeli).
Jak odczytać symbol opcji (symbologia OCC)
Każdy kontrakt w tych panelach jest identyfikowany przez symbol opcji OCC — standardowy format administracji Options Clearing Corporation. Nasz magazyn dodaje do niego przedrostek O:. Przyjmijmy O:SPY261218C00700000 jako przykład:
- Root —
SPY: symbol bazowy opcji, do sześciu znaków, zazwyczaj odpowiadający tickerowi instrumentu bazowego. - Expiration —
261218: data wygaśnięcia w formacie YYMMDD — 18 grudnia 2026. - Type —
Cdla opcji call,Pdla opcji put. - Strike —
00700000: cena wykonania pomnożona przez 1 000 i uzupełniona zerami do ośmiu cyfr — 700,00 USD.
Ten stały format umożliwia wyodrębnienie łańcucha dla danego symbolu bazowego za pomocą zakresu tickerów: każdy kontrakt SPY wygasający w 2026 roku znajduje się między O:SPY26 a O:SPY27, co stanowi dokładny filtr w powyższym panelu. Oto pięć najbardziej obrotowych kontraktów SPY z rozbitą symboliką:
Dokładny kod SQL dla każdej liczby
WITH (
SELECT max(toDate(toTimeZone(window_start, 'America/New_York')))
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime(today() - 10)
AND window_start < toDateTime(today() - 4)
) AS session_day
SELECT ticker AS occ_ticker,
any(underlying_symbol) AS root,
concat('20', substring(ticker, 6, 2), '-', substring(ticker, 8, 2), '-', substring(ticker, 10, 2)) AS expiry_parsed,
if(any(option_type) = 'C', 'call', 'put') AS call_or_put,
any(toFloat64(strike_price)) AS strike_usd,
round(sum(size) / 1e3, 1) AS contracts_traded_k,
if(substring(ticker, 6, 6) = formatDateTime(session_day, '%y%m%d'), 1, 0) AS expires_same_day
FROM global_markets.options_trades
WHERE sip_timestamp >= toDateTime(session_day)
AND sip_timestamp < toDateTime(session_day + 1)
AND ticker >= 'O:SPY26' AND ticker < 'O:SPY27'
GROUP BY ticker
ORDER BY contracts_traded_k DESC, ticker
LIMIT 5Górna część tabeli wolumenu dotyczy obrotów w tym samym dniu: wszystkie pięć kontraktów wygasło 2026-07-13, czyli w dacie bieżącej sesji, a najbardziej obrotowy z nich — O:SPY260713P00749000, kontrakt typu put z ceną wykonania 749 USD — osiągnął wolumen 732.2 tysięcy kontraktów. Porównując to z poprzednim panelem kwotowań: handel koncentruje się na początku łańcucha, podczas gdy kwotowania obejmują cały zakres.
Dlaczego dane o wycenach opcji są rzadkością
Przechowywanie tego strumienia danych oznacza dodawanie kolejnego dnia, podobnego do dnia opisanego powyżej — każda sesja, bezterminowo. To stanowi istotę ekonomii tego procesu. Większość produktów danych rynkowych, zarówno detalicznych, jak i profesjonalnych, zawiera ceny akcji, a czasem także transakcje na opcjach; pełna historia wycen opcji jest rzadkością w każdej ofercie, niezależnie od ceny. Nasze własne repozytorium zawiera historię wycen akcji od 2003 roku oraz historię transakcji na opcjach od 2014 roku, podczas gdy tabela wycen opcji rozpoczyna się w 2022 roku — jest to najkrótsza przechowywana przez nas historia ticków i jednocześnie znacznie największa tabela w naszym systemie.
Należy wyraźnie zaznaczyć: wyceny opcji są również najwolniej napływającym zbiorem danych w naszej bazie. Nowe sesje zazwyczaj pojawiają się z jednodniowym lub dwudniowym opóźnieniem względem kalendarza — czasem większym — podczas gdy wyceny akcji są zazwyczaj rozliczane w ciągu jednego dnia. Każdy panel na tej stronie odnosi się do co najmniej pięciu pełnych dni kalendarzowych wstecz od ostatniej zakończonej sesji (2026-07-13 w bieżącym cyklu), a cotygodniowe odświeżanie ponownie uruchamia każde zapytanie według tej samej zasady, utrzymując każdą wartość mierzoną dla pełnego, przetworzonego dnia, zamiast dla niekompletnego początku okresu.
FAQ
Jaka jest wielkość strumienia danych OPRA dla opcji w ciągu jednego dnia?
Według pomiarów w naszym magazynie danych: 8.23 miliardów aktualizacji kwotowań opcji w dniu 2026-07-13 — co stanowi średnio 339 tysięcy aktualizacji na sekundę w całym czasie sesji. Surowy strumień OPRA zawiera dodatkowo komunikaty transakcyjne i administracyjne, przez co oficjalna liczba komunikatów jest jeszcze wyższa.
Czy strumień kwotowań opcji jest większy niż strumień kwotowań akcji?
Tak — wielokrotnie, a nie procentowo. W sesji mierzonej powyżej liczba aktualizacji kwotowań opcji była 16.8 razy większa od liczby aktualizacji kwotowań akcji: 8.23 miliardów wobec 491 milionów. Każda akcja posiada jedno aktualizowane NBBO; łańcuch opcji posiada setki lub tysiące.
Dlaczego dane rynkowe dla opcji są tak drogie?
Skala jest widocznym elementem: strumień liczony w miliardach aktualizacji na sesję wymaga infrastruktury do odbioru, przechowywania i odpytywania danych, a koszty te powtarzają się każdego dnia handlowego. Do kosztów inżynieryjnych dochodzą opłaty licencyjne giełdy. Powyższe panele pokazują dokładnie, jaką objętość musi obejmować pełny zbiór danych kwotowań opcji.
Ile kontraktów opcyjnych jest kwotowanych w normalny dzień?
Znacznie więcej niż transakcji. W dniu 2026-07-13 338 tysięcy odrębnych kontraktów odnotowało co najmniej jedną transakcję, podczas gdy sam łańcuch SPY z terminem wygaśnięcia w 2026 roku obejmował 9156 kwotowanych kontraktów — pełny wszechświat kwotowań obejmuje wszystkie instrumenty bazowe, tak jak łańcuch SPY obejmuje jego ceny wykonania. (Zliczenie każdego odrębnego kontraktu w dziennym strumieniu kwotowań jest procesem tak dużym, że nie umieszczamy go na stronie aktualizowanej raz w tygodniu — tę jedną liczbę celowo tutaj nie podajemy.)
Czy opcje są kwotowane po godzinach sesji?
Opcje na akcje notowane w USA trzymają godziny sesji giełdowej. W sesji mierzonej powyżej pierwsza kwota opcji SPY pojawiła się o 09:30 ET, a ostatnia o 16:15 ET — brak sesji nocnej. Dla porównania, rejestr transakcji akcji obejmuje premarket oraz after-hours.
Każdy powyższy panel zawiera dokładne zapytanie SQL, które go wygenerowało — można je rozwinąć, podmienić instrument bazowy lub datę, aby określić wielkość fragmentu strumienia, który jest faktycznie handlowany na terminalu Strasmore.