Omvang van de OPRA options quote feed
Hoe groot is de options quote feed? Wij vergelijken de NBBO updates van OPRA met de volledige stock quote tape voor een nauwkeurige analyse.
De options quote feed is de grootste stroom aan marktdata in de VS: elk genoteerd options contract heeft een eigen best bid en best ask, en OPRA — de Options Price Reporting Authority, de geconsolideerde tape voor in de VS genoteerde options — publiceert elke update van elk contract. Op 2026-07-13, een enkele normale handelsdag, registreerde ons warehouse 8.23 miljard options quote updates — 16.8 keer de omvang van de volledige stock quote tape van diezelfde dag. Deze pagina meet deze enorme datastroom direct, waarbij de exacte query achter elk getal is opgenomen.
Waarom is de options quote feed zo omvangrijk?
Een aandeel heeft één national best bid and offer — één bid-ask spread die actueel moet blijven. Een options chain vermenigvuldigt dit: elk genoteerd contract — elke combinatie van expiratiedatum, strike price en call-of-put — geeft een eigen NBBO weer. In 2026-07-13 had alleen SPY al 9156 verschillende contracten in de quote, waarbij alleen de expiries van 2026 werden meegeteld.
De vermenigvuldiging stopt niet bij het aantal contracten. De waarde van een optie beweegt mee met het onderliggende aandeel. Wanneer de koers van het aandeel wijzigt, verversen market makers de quotes in de gehele chain — elke strike en elke expiry tegelijkertijd, ongeacht of er in die contracten wordt verhandeld. Dit is de omvang van de rekenkundige gegevens hieronder: miljarden quote updates per sessie, en 776 quote updates voor elke uitgevoerde options trade.
Eén dag aan options tape, in cijfers
Hoeveel data is dat in de praktijk? De onderstaande tabel telt elke options quote update die ons warehouse heeft opgeslagen voor 2026-07-13 — de meest recente voltooide sessie van minstens vijf kalenderdagen geleden, een regel die in de sectie over schaarste wordt uitgelegd — en vergelijkt dit met de volledige stock quote tape van diezelfde sessie. Dit is dezelfde vergelijking als de marktoverzicht van 7 juli maakte voor de maandagse tape. Beide tellingen beslaan de volledige kalenderdag, begrensd in UTC, wat de gehele Amerikaanse options sessie beslaat.
De exacte SQL achter elk getal
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)De volledige options tape kwam uit op 8.23 miljard NBBO updates. Slechts 338 duizend verschillende contracten zijn die dag daadwerkelijk TRADED — de quote stream herprijs de keten vele malen vaker dan er daadwerkelijk van eigenaar wordt gewisseld. De stock tape van diezelfde dag — inclusief elke geconsolideerde quote update voor elke beursgenoteerde stock en ETF, zowel premarket als after-hours — telde 491 miljoen updates over 12958 symbolen. De verhouding is de kern: de options quote stream was 16.8 keer zo groot als de stock quote stream.
Twee extra metingen uit dezelfde scan geven de feed meer diepgang. Gemiddeld over de duur van de quoting sessie (gemeten op de SPY chain, de diepste in de tape), kwamen er 339 duizend updates per seconde binnen. En de options markt registreerde 10.6 miljoen daadwerkelijke trades die dag — 776 quote updates voor elke trade. Het is quoting, niet trading, die de verbinding vult.
Eén deel van de bron: de SPY option chain in één dag
Een volledige tape is moeilijk te interpreteren en het scannen van de volledige tape is kostbaar — kies daarom voor één deel. Het onderstaande paneel telt elke quote update voor SPY option contracts met een expiratiedatum in 2026 gedurende dezelfde sessie en dezelfde UTC-gebonden dag: de chain van één underlying, geselecteerd uit de datastroom via een ticker range.
De exacte SQL achter elk getal
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)Eén underlying genereerde 337.1 miljoen options quote updates in één dag: 9156 contracts in de quote, met een gemiddelde van 36.8 duizend updates per contract. Ter vergelijking: de volledige stock tape in het bovenstaande paneel — alle genoteerde aandelen en ETF's gecombineerd — telde 491 miljoen updates tijdens die sessie.
Expiraties op dezelfde dag geven een scherper beeld. 0DTE options — contracts die verhandeld worden op hun eigen expiratiedag — domineren de options trading. De onderstaande tabel toont de vijf drukste SPY contracts die op diezelfde dag expiren. In de quote stream vormen zij slechts een fractie: de 334 same-day contracts waren verantwoordelijk voor 4.5% van de SPY quote updates. Market makers houden de gehele chain geprijsd — de strikes van december worden de hele sessie geüpdatet, ongeacht of er handel in plaatsvindt.
De spread is een andere relevante meting. Onder deze SPY contracts met dezelfde expiratiedatum bedroeg de mediane quoted width — ask minus bid, berekend over elke geldige NBBO update — 3¢; over de volledige chain met expiratiedatum in 2026 bedroeg dezelfde mediaan 4¢. (197 duizend one-sided of crossed updates werden uitgesloten van de width medianen en zijn meegeteld in het paneel.)
Hoe een optiesymbool te lezen (OCC-symbologie)
Elk contract in deze panelen wordt geïdentificeerd door een OCC-optiesymbool — het standaardformaat beheerd door de Options Clearing Corporation. Onze database voegt daar O: aan toe als prefix. Gebruik O:SPY261218C00700000 als voorbeeld:
- Root —
SPY: de optie-root, maximaal zes tekens, meestal de ticker van het onderliggende aandeel. - Expiration —
261218: de vervaldatum in YYMMDD-formaat — 18 december 2026. - Type —
Cvoor een call,Pvoor een put. - Strike —
00700000: de strike price vermenigvuldigd met 1.000 en aangevuld met nullen tot acht cijfers — $700,00.
Dit vaste formaat maakt het mogelijk om de chain van één root te extraheren met een eenvoudige ticker-range: elk SPY-contract dat in 2026 afloopt, bevindt zich tussen O:SPY26 en O:SPY27, de exacte filter in het bovenstaande paneel. Hier zijn de vijf meest verhandelde SPY-contracten van deze sessie met het uitgeschreven symbool:
De exacte SQL achter elk getal
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 5De bovenkant van de volume-tabel bevat uitsluitend handel van dezelfde dag: alle vijf de contracten vervielen op 2026-07-13, de datum van deze sessie. Het meest verhandelde contract — O:SPY260713P00749000, een put-contract met een strike van $749 — had een volume van 732.2 duizend contracten. Vergeleken met het voorgaande quote-paneel valt op dat de handel zich concentreert aan de voorzijde van de chain, terwijl de quotes over de gehele chain spreads laten zien.
Waarom options quote data schaars is
Het opslaan van deze feed betekent dat elke sessie, zoals de hierboven gemeten dag, onbeperkt moet worden bewaard. Dat is de kern van de economische afweging. De meeste marktdata-producten, zowel voor retail als professionele partijen, bevatten aandelenkoersen en soms options trades; een volledige geschiedenis van options quotes is zeldzaam, ongeacht de prijs. Onze eigen database bevat equity quote geschiedenis tot 2003 en options trade geschiedenis tot 2014, terwijl de options quote tabel pas in 2022 begint — de meest recente tick geschiedenis die wij bewaren, en met een ruime marge de grootste tabel die wij beheren.
Eén verklaring moet duidelijk worden vermeld: options quotes zijn tevens de dataset die het traagst binnenkomt. Nieuwe sessies volgen de kalender doorgaans een dag of twee — soms zelfs langer — terwijl equity quotes meestal binnen een dag zijn verwerkt. Elk paneel op deze pagina is gekoppeld aan de meest recente voltooide sessie van minstens vijf kalenderdagen geleden (2026-07-13 in de huidige run), en de wekelijkse verversing voert elke query opnieuw uit volgens diezelfde regel. Hierdoor wordt elk getal gemeten over een volledig verwerkte dag in plaats van een onvolledige beginfase.
FAQ
Hoe groot is de OPRA options feed per dag?
Gemeten in ons warehouse: 8.23 miljard options quote updates op 2026-07-13 — een gemiddelde van 339 duizend updates per seconde gedurende de gehele sessie. De ruwe OPRA feed bevat naast quotes ook trade en administratieve berichten, waardoor het officiële aantal berichten nog hoger ligt.
Is de options quote feed groter dan de stock quote feed?
Ja — met een veelvoud, niet met een percentage. Tijdens de hier gemeten sessie was het aantal options quote updates 16.8 keer zo hoog als het aantal stock quote updates: 8.23 miljard tegenover 491 miljoen. Elke stock heeft één actuele NBBO; de bijbehorende option chain bevat honderden of duizenden.
Waarom zijn options market data zo duur?
Schaal is de zichtbare factor: een feed die wordt gemeten in miljarden updates per sessie vereist aanzienlijke infrastructuur voor ontvangst, opslag en queries, en deze kosten maken zich elke handelsdag opnieuw op. Naast de engineering komen daar nog exchange licensing fees bij. De bovenstaande panels tonen exact wat een volledige options quote dataset moet verwerken.
Hoeveel option contracts worden er op een normale dag gekoquote?
Veel meer dan er worden verhandeld. Op 2026-07-13 registreerden 338 duizend verschillende contracts ten minste één trade, terwijl alleen de 2026-expiry chain van SPY al 9156 contracts aanbiedde — en het volledige universe aan quotes beslaat elke root, net zoals de chain van SPY alle strikes beslaat. (Het tellen van elk afzonderlijk contract in een dagelijkse quote stream is een scan die zo omvangrijk is dat wij dit buiten een wekelijks bijgewerkte pagina houden — het enige getal dat wij hier bewust niet publiceren.)
Worden options na de beurs gekoquote?
Gelistieerde Amerikaanse equity options volgen de beursuren. In de hier gemeten sessie verscheen de eerste option quote van SPY om 09:30 ET en de laatste om 16:15 ET — er is geen overnight sessie. De stock tape quoteert, ter vergelijking, wel gedurende de premarket en after-hours.
Elk paneel hierboven wordt geleverd met de exacte SQL die het heeft gegenereerd — klap er een uit, vervang de root of de dag, en bepaal de omvang van het deel van de feed waarop u daadwerkelijk handelt op de Strasmore terminal.