OPRA期权报价数据规模有多大
了解OPRA期权报价的庞大数据量。在{{q:tape_counts:session_date}},报价更新达{{q:tape_counts:option_quote_updates_bn}} billion条,是股票报价的{{q:tape_counts:option_to_stock_ratio}}倍。
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.
为什么期权报价数据量如此庞大?
一只股票只有一个全国最佳买卖价(NBBO),即只需维护一个 买卖价差。而期权链将这一规模成倍放大:每个上市合约——即每种到期日、行权价与看涨/看跌类型的组合——都需要维护各自的 NBBO。在 2026-07-13,仅 SPY 就拥有 9156 个独立的报价合约(仅计算 2026 年到期的合约)。
这种规模的增长不仅限于合约数量。期权价值随标的股票波动;当股价变动时,做市商会同时更新整个期权链的报价——无论是否有合约成交,所有行权价和到期日的报价都会同步刷新。下文的数据反映了这种计算逻辑:每交易日报价更新次数达数十亿次,而每笔已执行的期权交易仅对应 776 次报价更新。
期权行情数据统计
实际数据量有多大?下表统计了我们的仓库为 2026-07-13 存储的所有期权报价更新——根据稀缺性章节所述,该规则指至少在五个日历日之前的最近一个完整交易日。我们将此数据与同日的完整股票报价行情进行对比,这种对比方式与 7月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 的合并报价更新——在 12958 个代码中产生了 491 百万条更新。两者的比例是核心指标:期权报价流的大小是股票报价流的 16.8 倍。
同一次扫描的另外两项数据揭示了数据流的特征。在整个交易时段(以 SPY 的合约链为基准,这是行情中最深的数据链)的平均值来看,更新频率为每秒 339 千条。当天期权市场产生了 10.6 百万笔实际成交——每笔成交对应 776 条报价更新。填满数据管道的是报价,而非成交。
局部视角:SPY 期权链单日数据分析
全市场行情数据庞杂且难以直观感知,且全面扫描成本极高。因此,我们仅截取其中一部分。下表统计了在同一交易日内,所有 2026 年到期 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
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 个当日到期合约仅占 SPY 总报价更新量的 4.5%。做市商会持续为整个期权链定价——无论是否有成交,12 月到期的行权价在整个交易时段内都会不断更新。
买卖价差(Width)是另一个值得关注的指标。在这些 SPY 当日到期合约中,基于所有有效 NBBO 更新计算的报价中位数价差(卖价减去买价)为 3¢;而在整个 2026 年到期期权链中,该中位数价差为 4¢。(197 千次单边报价或交叉报价在计算价差中位数时已被剔除,并计入上方面板。)
如何解读期权代码 (OCC 符号)
这些面板中的每份合约都由 OCC 期权符号标识,这是由期权清算公司 (Options Clearing Corporation) 管理的标准格式。我们的数据库会在其前加上 O:。以 O:SPY261218C00700000 为例:
- 标的 —
SPY:期权标的,最多六个字符,通常是底层资产的代码。 - 到期日 —
261218:YYMMDD 格式的到期日期 — 2026年12月18日。 - 类型 —
C代表看涨期权,P代表看跌期权。 - 行权价 —
00700000:行权价乘以 1,000 并补零至八位数字 — $700.00。
这种固定格式允许通过简单的代码范围来筛选特定标的的期权链:所有 2026 年到期的 SPY 合约都排列在 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,这是一份行权价为 $749 的 put 合约,成交量为 732.2 千份。对比前方的报价面板可以发现:交易集中在期权链的前端,而报价则分布在整个期权链。
为什么期权报价数据如此匮乏
存储此类数据意味着需要无限期地保存每一天的记录,就像上述测量数据一样。这就是成本的核心所在。无论是零售还是专业市场数据产品,大多仅包含股票价格,有时还包含期权成交数据;任何价位的平台都很难提供完整的期权报价历史。我们的数据库拥有自 2003 年起的股票报价历史和自 2014 年起的期权成交历史,而期权报价表则始于 2022 年——这是我们保存的最短历史记录,也是规模最大的数据表。
有一项说明需要明确说明:期权报价也是我们持有的到账最慢的数据集。新交易数据通常比实际日期滞后一到两天,有时甚至更久;而股票报价通常在一天内即可结算。本页面上的每个面板都锚定在至少 5 个日历日之前已完成的交易日(当前运行中为 2026-07-13),每周更新时都会按照该规则重新运行所有查询,确保每个数值都是基于完整摄入的交易日,而非加载不全的实时数据。
常见问题
OPRA 期权行情数据每日规模有多大?
根据我们的仓库统计:在 2026-07-13 日,期权报价更新达到 8.23 十亿条 —— 在交易时段内,平均每秒更新 339 千条。原始 OPRA 数据流除了报价外,还包含交易和管理消息,其官方统计的消息数量会更高。
期权报价数据是否比股票报价数据更大?
是的 —— 是数倍之差,而非百分比差异。在上述统计时段内,期权报价更新数量是股票报价更新的 16.8 倍:分别是 8.23 十亿条与 491 百万条。每只股票仅维护一个 NBBO 报价;而其期权链则需维护数百甚至数千个报价。
为什么期权市场数据如此昂贵?
规模是显而易见的原因:每交易日处理数十亿条更新的数据流,需要庞大的基础设施来进行接收、存储和查询,且相关成本每天都在产生。此外,交易所的授权费用也是额外开支。上述图表展示了完整的期权报价数据集所承载的数据量。
平时每天有多少期权合约进行报价?
报价的合约数量远超成交量。在 2026-07-13 日,共有 338 千种不同的合约至少产生了一笔成交;仅 SPY 2026 年到期的期权链就有 9156 个合约在报价 —— 而完整的报价范围涵盖了所有的标的资产,正如 SPY 的期权链涵盖其所有行权价一样。(统计每日报价流中每一个不同的合约本身是一项庞大的扫描工作,因此我们未将其放入每周更新的页面中 —— 此处故意不公布这一数据。)
期权在盘后交易吗?
上市的美国股票期权遵循交易所交易时间。在上述统计时段内,SPY 的首条期权报价出现在东部时间 09:30,最后一条出现在 16:15 —— 没有隔夜交易时段。相比之下,股票行情在盘前和盘后均有报价。
上述每个图表都附带了生成该图表的原始 SQL 语句 —— 您可以展开查看,并更换不同的标的或日期,从而在 Strasmore 终端上自定义您实际交易的数据切片。