Qual o tamanho do feed de cotações da OPRA
Saiba o volume do feed de opções da OPRA comparado ao tape de ações. Analisamos o número de atualizações do NBBO em um único dia de negociação.
The options quote feed is the largest stream of market data in the US: every listed option contract carries its own best bid and best ask, and OPRA — the Options Price Reporting Authority, the consolidated tape for US listed options — publishes every update to every one of them. On 2026-07-13, a single ordinary session, our warehouse recorded 8.23 billion options quote updates — 16.8 times the size of the same day's entire stock quote tape. This page measures the firehose directly, with the exact query behind every number attached.
Por que o feed de cotações de opções é tão grande?
Uma ação possui um único melhor preço de compra e venda (NBBO) — um bid-ask spread único para ser mantido atualizado. Uma cadeia de opções multiplica isso: cada contrato listado — cada combinação de data de vencimento, preço de exercício (strike) e tipo (call ou put) — apresenta seu próprio NBBO. Em 2026-07-13, apenas o SPY manteve 9156 contratos distintos sendo cotados, considerando apenas seus vencimentos de 2026.
A multiplicação não para na contagem de contratos. O valor de uma opção oscila conforme a ação subjacente, e quando o preço da ação se move, os market makers atualizam as cotações em toda a cadeia — cada strike, cada vencimento, simultaneamente, independentemente de haver negociação desses contratos. Esse é o resultado do cálculo medido abaixo: bilhões de atualizações de cotação por sessão e 776 atualizações de cotação para cada operação de opções executada.
Um dia de tape de opções, contabilizado
Quanto isso representa de dados na prática? O painel abaixo contabiliza cada atualização de cotação de opções armazenada em nosso warehouse para 2026-07-13 — a sessão completa mais recente com pelo menos cinco dias corridos de antecedência, conforme explicado na seção de escassez — e compara com o tape completo de cotações de ações da mesma sessão, o mesmo confronto que o recapitulativo de mercado de 7 de julho apresentou para o tape de segunda-feira. Ambas as contagens cobrem o dia completo, limitadas ao tempo universal (UTC), abrangendo toda a sessão de opções dos EUA.
O SQL exato por trás de cada número
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)O tape completo de opções atingiu 8.23 bilhões de atualizações de NBBO. Apenas 338 mil contratos distintos foram efetivamente NEGOCIADOS naquele dia — o fluxo de cotações reprifica muito mais itens da cadeia do que os que realmente mudam de mãos. O tape de ações do mesmo dia — incluindo cada atualização de cotação consolidada para cada ação e ETF listados, no premarket e no after-hours — registrou 491 milhões de atualizações em 12958 tickers. A proporção é o dado principal: o fluxo de cotações de opções foi 16.8 vezes maior que o fluxo de cotações de ações.
Outras duas métricas da mesma varredura dão a dimensão do feed. Em média, durante o período de cotação da sessão (medido na cadeia do SPY, a mais profunda do tape), as atualizações chegaram a 339 mil por segundo. E o mercado de opções registrou 10.6 milhões de trades reais naquele dia — 776 atualizações de cotação para cada um deles. O que preenche o pipeline é a cotação, não o trading.
Uma fatia de um ativo: a cadeia de opções do SPY em um dia
É difícil processar o volume total do mercado, e analisar o tape completo é caro — por isso, analisamos apenas uma fatia. O painel abaixo contabiliza cada atualização de cotação para contratos de opções do SPY com vencimento em 2026, durante a mesma sessão e o mesmo dia delimitado por UTC: a cadeia de um único ativo subjacente, extraída do fluxo massivo por um intervalo de ticker.
O SQL exato por trás de cada número
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)Um único ativo subjacente gerou 337.1 milhões de atualizações de cotação de opções em um único dia: 9156 contratos cotados, com uma média de 36.8 mil atualizações por contrato. Para fins de comparação, o tape total de ações no painel acima — somando todas as ações e ETFs listados — registrou 491 milhões de atualizações naquela sessão.
Os vencimentos no mesmo dia contam a história mais precisa. Opções 0DTE — contratos negociados no próprio dia de vencimento — dominam o trading de opções, e a tabela detalhada abaixo mostra cada um dos cinco contratos do SPY mais movimentados que vencem no mesmo dia. No fluxo de quotes, eles representam apenas uma fração: os 334 contratos de vencimento no mesmo dia representaram 4.5% das atualizações de cotação do SPY. Os market makers mantêm toda a cadeia precificada — os strikes de dezembro atualizam durante toda a sessão, independentemente de haver negociação ou não.
A amplitude é outra métrica relevante aqui. Entre esses mesmos contratos do SPY com vencimento no mesmo dia, a mediana do spread entre ask e bid, calculada sobre cada atualização válida do NBBO, foi de 3¢; na cadeia completa com vencimento em 2026, a mesma mediana foi de 4¢. (197 mil atualizações de um lado só ou cruzadas foram excluídas das medianas de amplitude e contabilizadas no painel.)
Como ler um ticker de opção (simbologia OCC)
Cada contrato nestes painéis é identificado por um símbolo de opção da OCC — o formato padrão administrado pela Options Clearing Corporation. Nosso sistema utiliza o prefixo O:. Use O:SPY261218C00700000 como exemplo prático:
- Root —
SPY: a raiz da opção, com até seis caracteres, geralmente o próprio ticker do ativo subjacente. - Expiration —
261218: a data de vencimento no formato YYMMDD — 18 de dezembro de 2026. - Type —
Cpara call,Ppara put. - Strike —
00700000: o preço de exercício multiplicado por 1.000 e preenchido com zeros até completar oito dígitos — $700,00.
Esse formato fixo permite que a série de um root seja extraída por um intervalo simples de ticker: todos os contratos de SPY que vencem em 2026 estão organizados entre O:SPY26 e O:SPY27, que é o filtro exato no painel acima. Abaixo estão os cinco contratos de SPY mais negociados da sessão com o símbolo detalhado:
O SQL exato por trás de cada número
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 5O topo da tabela de volume reflete apenas o tráfego do próprio dia: todos os cinco contratos venceram em 2026-07-13, a data da sessão. O mais negociado entre eles — O:SPY260713P00749000, um contrato de put com strike de $749 — negociou 732.2 mil contratos. Comparando com o painel de cotações anterior: o volume se concentra no início da série, enquanto as cotações apresentam spread em toda a extensão da série.
Por que os dados de cotação de opções são escassos
Armazenar esse feed significa adicionar um dia como o medido acima — em cada sessão, indefinidamente. Essa é a lógica econômica em uma frase. A maioria dos produtos de dados de mercado, tanto para varejo quanto profissionais, oferece preços de ações e, às vezes, trades de opções; o histórico completo de quotes de opções é raro em qualquer prateleira, a qualquer preço. Nosso próprio armazém possui histórico de cotação de ações desde 2003 e histórico de trades de opções desde 2014, enquanto a tabela de cotação de opções começa em 2022 — o histórico de tick mais recente que mantemos e, com uma margem ampla, a maior tabela que operamos.
Uma observação deve ser feita de forma clara: as cotações de opções também são o conjunto de dados que chega mais lentamente em nosso sistema. Novas sessões costumam aparecer com um ou dois dias de atraso em relação ao calendário — às vezes mais — enquanto as cotações de ações costumam ser consolidadas em um dia. Cada painel nesta página é ancorado na sessão completa mais recente com pelo menos cinco dias corridos de atraso (2026-07-13 na execução atual), e a atualização semanal reexecuta cada query sob essa mesma regra, mantendo cada número medido sobre um dia totalmente ingerido, em vez de uma extremidade de dados incompleta.
FAQ
Qual o tamanho do feed de opções da OPRA por dia?
Medido em nosso armazém: 8.23 bilhões de atualizações de cotações de opções em 2026-07-13 — uma média de 339 mil atualizações por segundo durante o período de cotação da sessão. O feed bruto da OPRA carrega mensagens de negociação e administrativas além das cotações, e suas contagens oficiais de mensagens são ainda maiores.
O feed de cotações de opções é maior que o feed de cotações de ações?
Sim — por múltiplos, não por porcentagem. Na sessão medida acima, as atualizações de cotações de opções foram 16.8 vezes o número de atualizações de cotações de ações: 8.23 bilhões contra 491 milhões. Cada ação mantém um único NBBO atualizado; sua cadeia de opções mantém centenas ou milhares.
Por que os dados de mercado de opções são tão caros?
A escala é a parte visível: um feed medido em bilhões de atualizações por sessão exige infraestrutura real para receber, armazenar e consultar, e o custo se repete a cada dia de negociação. As taxas de licenciamento da bolsa incidem sobre a engenharia. Os painéis acima mostram exatamente o que um conjunto completo de dados de cotações de opções precisa carregar.
Quantos contratos de opções são cotados em um dia normal?
Mais do que negociações, por uma margem ampla. Em 2026-07-13, 338 mil contratos distintos registraram pelo menos uma negociação, enquanto apenas a cadeia de vencimento em 2026 do SPY manteve 9156 contratos sendo cotados — e o universo total de cotações abrange todos os ativos da mesma forma que a cadeia do SPY abrange seus strikes. (Contar cada contrato distinto em um fluxo de cotações diário é um escaneamento tão grande que o mantemos fora de uma página atualizada semanalmente — o único número aqui que deliberadamente não publicamos.)
As opções são cotadas após o horário de mercado?
As opções de ações listadas nos EUA seguem o horário da bolsa. Na sessão medida acima, a primeira cotação de opção do SPY ocorreu às 09:30 ET e a última às 16:15 ET — sem sessão overnight. O tape de ações, para comparação, apresenta cotações durante o premarket e o after-hours.
Cada painel acima é acompanhado pelo SQL exato que o produziu — expanda um, substitua por um ticker ou dia diferente, e dimensione a fatia do feed que você realmente negocia no terminal Strasmore.