Обсяг потоку котирувань OPRA Options
Аналіз масштабу потоку OPRA: порівняння кількості оновлень NBBO за одну сесію з обсягом усієї стрічки котирувань акцій для оцінки навантаження на ринкові дані.
Потік котирувань опціонів є найбільшим потоком ринкових даних у США: кожен лістинговий опціонний контракт має власну найкращу ціну Bid та найкращу ціну Ask, а OPRA — Options Price Reporting Authority, консолідована стрічка для лістингових опціонів у США — публікує кожне оновлення для кожного з них. У 2026-07-13, протягом однієї звичайної сесії, наш сховище зафіксувало 8.23 мільярд оновлень котирувань опціонів — що у 16.8 разів перевищує обсяг усієї стрічки котирувань акцій за той самий день. Ця сторінка безпосередньо вимірює цей потік даних, додаючи точний запит до кожного показника.
Чому потік котировок опціонів такий великий?
Акція має один національний найкращий ціновий запит та пропозицію — один спред bid-ask, який потрібно оновлювати. Опціонний ланцюг помножує це значення: кожен лістинговий контракт — кожна комбінація дати експірації, ціни виконання та типу call або put — має власну котировку NBBO. У 2026-07-13 лише один SPY мав 9156 окремих контрактів, що котирувалися, враховуючи лише експірації 2026 року.
Це множення не обмежується кількістю контрактів. Вартість опціону змінюється разом з базовою акцією, і коли ціна за акцію змінюється, маркетмейкери оновлюють котирування по всьому ланцюгу — за кожною ціною виконання та кожною датою експірації одночасно, незалежно від того, чи здійснюються угоди за цими контрактами. Такою є математична модель, наведена нижче: кількість оновлень котировок становить мільярди за сесію, а на 776 оновлень котировок припадає на кожну виконану угоду з опціонами.
Один день торгової стрічки опціонів у цифрах
Який обсяг даних це становить на практиці? У наведеній нижче панелі підраховано кожне оновлення котирувань опціонів, збережене нашим сховищем за 2026-07-13 — останню завершену торгову сесію, що відбулася щонайменше п'ять календарних днів тому (це правило пояснюється в розділі про дефіцит даних), — і порівняно з повною стрічкою котирувань акцій за ту саму сесію. Це те саме порівняння, яке наводилося в огляді ринку за 7 липня для понеділкової стрічки. Обидва підрахунки охоплюють повний календарний день у часовому поясі UTC, що охоплює всю торгову сесію опціонів у США.
Точний SQL-код для кожного числа
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)Загальний обсяг стрічки опціонів склав 8.23 мільярдів оновлень NBBO. Лише 338 тисяч окремих контрактів фактично ПЕРЕХОДИЛИ В ОБІГ того дня — потік котирувань перераховує набагато більше інструментів, ніж реально здійснюються угоди. Стрічка акцій за той самий день — кожне консолідоване оновлення котирувань для кожної лістингової акції та ETF, включаючи премаркет та постмаркет — зафіксувала 491 мільйонів оновлень за 12958 символів. Головним показником є співвідношення: обсяг потоку котирувань опціонів був у 16.8 разів більшим за обсяг потоку котирувань акцій.
Ще два показники з того самого сканування розкривають структуру потоку. У середньому за період котирувань сесії (виміряно за ланцюжком SPY, найглибшим у стрічці), оновлення надходили зі швидкістю 339 тисяч на секунду. І ринок опціонів зафіксував 10.6 мільйонів фактичних угод того дня — це 776 оновлень котирувань на кожну угоду. Саме котирування, а не торгівля, створює основне навантаження на канал передачі даних.
Один зріз ринку: ланцюг опціонів SPY за один день
Повний потік даних важко сприйняти, а його аналіз коштує дорого — тому ми розглядаємо лише один зріз. На панелі нижче наведено кількість оновлень кожної котирування для опціонних контрактів SPY з датою експірації у 2026 році за одну сесію в межах одного дня за UTC: ланцюг одного базового активу, виокремлений з загального потоку за допомогою діапазону тикерів.
Точний SQL-код для кожного числа
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)Один базовий актив згенерував 337.1 мільйонів оновлень котирувань опціонів за один день: 9156 контрактів у котируванні, в середньому 36.8 тисяч оновлень на один контракт. Для порівняння: весь потік даних по акціях на панелі вище — сумарно всі перелічені акції та ETF — зафіксував 491 мільйонів оновлень за ту сесію.
Дані щодо експірації в той самий день дають чіткішу картину. Опціони 0DTE — контракти, що торгуються в день їхньої експірації, — домінують у торгівлі опціонами, а в таблиці нижче наведено кожен із п'яти найактивніших контрактів SPY, що експірувалися того ж дня. У потоці котирувань вони становлять лише частку: 334 контрактів з експірацією в той самий день склали 4.5% від усіх оновлень котирувань SPY. Маркетмейкери підтримують ціни на весь ланцюг — страйки з експірацією у грудні оновлюються протягом усієї сесії, незалежно від наявності угод.
Ширина спреду є ще одним важливим показником. Середня медіана котируваної ширини серед цих контрактів SPY з експірацією в той самий день — різниця між ціною продажу (ask) та ціною купівлі (bid), розрахована за кожним дійсним оновленням NBBO — становила 3¢; для всього ланцюга з експірацією у 2026 році та сама медіана склала 4¢. (197 тисяч односторонніх або перехресних оновлень було виключено з медіани ширини та враховано на панелі.)
Як читати тикер опціону (символіку OCC)
Кожен контракт на цих панелях ідентифікується за допомогою символу опціону OCC — стандартного формату, що адмініструється Options Clearing Corporation. Наш сховище додає префікс O:. Розглянемо O:SPY261218C00700000 як приклад:
- Root —
SPY: корінь опціону, до шести символів, зазвичай це тикер базового активу. - Expiration —
261218: дата експірації у форматі YYMMDD — 18 грудня 2026 року. - Type —
Cдля call,Pдля put. - Strike —
00700000: ціна страйк, помножена на 1,000 і доповнена нулями до восьми знаків — $700.00.
Такий фіксований формат дозволяє виділити ланцюжок одного кореня за допомогою простого діапазону тикерів: кожен контракт SPY з датою експірації у 2026 році розташовується між O:SPY26 та O:SPY27, що є точним фільтром на панелі вище. Ось п'ять найбільш активних контрактів SPY за сесію з розшифровкою символу:
Точний SQL-код для кожного числа
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 5Верхня частина таблиці обсягів відображає лише потокові операції за поточний день: усі п'ять контрактів експірували 2026-07-13, дата поточної сесії, а найбільш активний з них — O:SPY260713P00749000, контракт put зі страйком $749 — мав обсяг торгів 732.2 тисяч контрактів. Порівняйте це з попередньою панеллю котирувань: торгівля зосереджена на початку ланцюжка, тоді як котирування spread охоплюють весь діапазон.
Чому дані котирувань опціонів є дефіцитними
Зберігання цього потоку означає додавання ще одного дня, подібного до виміряного вище — кожної сесії, безстроково. У цьому полягає економічна суть. Більшість продуктів ринкових даних, як роздрібних, так і професійних, містять ціни акцій та іноді угоди з опціонами; повна історія котирувань опціонів є рідкістю за будь-яку ціну. Наш власний сховище містить історію котирувань акцій з 2003 року та історію угод з опціонами з 2014 року, тоді як таблиця котирувань опціонів починається з 2022 року — це найновіша tick-історія, яку ми зберігаємо, і вона є набагато більшою за розміром таблицею в нашому управлінні.
Необхідно чітко зазначити: котирування опціонів також є найповільнішим набором даних у нашому розпорядженні. Нові сесії зазвичай з'являються з затримкою в один або два дні від календаря — іноді більше, тоді як котирування акцій зазвичай оновлюються протягом одного дня. Кожна панель на цій сторінці прив'язана щонайменше до останньої завершеної сесії п'ять календарних днів тому (2026-07-13 у поточному циклі), а щотижневе оновлення повторно виконує кожен запит за цим самим правилом, забезпечуючи вимірювання кожного показника за повністю завантажений день, а не за частково завантажений період на межі поточного моменту.
FAQ
Який обсяг потоку котировок опціонів OPRA за день?
Згідно з нашими даними: 8.23 мільярдів оновлень котировок опціонів за 2026-07-13 — це в середньому 339 тисяч оновлень на секунду протягом торгової сесії. Сирий потік OPRA містить не лише котировки, а й повідомлення про угоди та адміністративні повідомлення, тому офіційна кількість повідомлень ще вища.
Чи більший потік котировок опціонів, ніж потік котировок акцій?
Так — у кілька разів, а не у відсотках. Під час вимірювання, наведеного вище, кількість оновлень котировок опціонів була у 16.8 рази більшою за кількість оновлень котировок акцій: 8.23 мільярдів проти 491 мільйонів. Кожна акція має один поточний NBBO; її опціонний ланцюг містить сотні або тисячі.
Чому ринкові дані опціонів такі дорогі?
Масштаб — це лише видима частина: для отримання, зберігання та запитів до потоку, що вимірюється мільярдами оновлень за сесію, потрібна реальна інфраструктура, витрати на яку щоденні. Крім інженерних витрат, існують ліцензійні збори бірж. На панелях вище показано, який саме обсяг даних має містити повний набір котировок опціонів.
Скільки опційних контрактів отримують котирування у звичайний день?
Значно більше, ніж здійснюється угод. 2026-07-13, 338 тисяч окремих контрактів зафіксували принаймні одну угоду, тоді як лише ланцюг SPY з терміном експірації у 2026 році мав 9156 контрактів з котируванням — і весь перелік котирувань охоплює всі базові активи так само, як ланцюг SPY охоплює свої ціни виконання. (Підрахунок кожного окремого контракту в добовому потоці котировок є настільки масштабним процесом, що ми не розміщуємо його на сторінці, що оновлюється щотижня — це те єдине число, яке ми свідомо не публікуємо.)
Чи котируються опціони після завершення торгів?
Лістингові опціони на акції США торгуються в межах біржових годин. Під час вимірювання, наведеного вище, перша котировка опціону SPY з'явилася о 09:30 ET, а остання — о 16:15 ET; нічна сесія відсутня. Для порівняння, стрічка акцій працює під час премаркету та після завершення торгів.
Кожна панель вище постачається з точним SQL-запитом, який її створив — розгорніть будь-який запит, замініть базовий актив або дату, щоб визначити обсяг частини потоку, якою ви фактично торгуєте на терміналі Strasmore.