首年全场 50% 优惠 – 联系销售获取优惠码。

历史期权数据 API

使用 SQL 查询历史期权交易和市场数据

数据库访问

历史数据 API

$299/ 月
直接 SQL 访问历史数据
ClickHouse 高性能查询
自定义分析和筛选
包含技术支持
性能
始终使用 LIMIT 控制结果大小
优先按 symbol(主键)过滤
添加 date 分区过滤以提高速度
索引列
主键:symbol, time
索引:expiration_date, strike
分区:date
模式
SELECT max(date) AS latest_date FROM RawOptionTrades
WHERE date = (SELECT max(date) FROM RawOptionTrades) AND symbol = 'AAPL'
ORDER BY time DESC LIMIT 20
避免
没有 LIMIT 的查询
SELECT *(选择特定列)
无过滤器的全表扫描

演示模式

请登录以执行查询。本页面仅返回前 10 行;如需无限制数据,请订阅付费计划并使用 API。

快速示例

查询在我们的 ClickHouse 数据库上执行。

演示模式:显示 2 条有限结果。如需完整、无限制数据,请订阅付费计划并通过 API 访问。
显示 1-2 共 2 条结果
行数:
1 / 1

历史期权数据 API

期权交易 API 文档

概述

期权交易 API 通过 SQL 查询安全访问历史期权交易数据。

请求

基础 URL

https://api.optiondata.io
POST
/api-portal/historical-trades-by-sql

说明:执行安全的 SELECT 查询访问期权交易数据。

请求头

名称
Content-Typeapplication/x-www-form-urlencoded

请求体

名称类型必填说明
api_keystring必填 https://optiondata.io 获取
sqlstring必填SQL 查询语句。

表名

API 提供以下表的访问:

  1. RawOptionTrades - 包含所有历史交易的表。
  • 表名不区分大小写。
  • 无效的表名将返回错误。
  • 仅可访问白名单表。

SQL 查询限制

允许的操作

  • 仅允许 SELECT 语句
  • 标准 SQL 函数(COUNT、SUM、AVG 等)
  • 带筛选条件的 WHERE 子句
  • ORDER BY 和 LIMIT 子句
  • GROUP BY 子句

禁止的操作

  • INSERT、UPDATE、DELETE 语句
  • DROP、CREATE、ALTER 语句
  • UNION 操作
  • 存储过程(EXEC、CALL)
  • SQL 注释(会被自动移除)

请求示例

api_key=YOUR_API_KEY&sql=SELECT date, time, symbol, put_call, strike, expiration_date, size, price, bid, ask FROM RawOptionTrades WHERE date = (SELECT max(date) FROM RawOptionTrades) AND symbol = 'AAPL' ORDER BY time DESC LIMIT 20

代码示例

curl -X POST https://api.optiondata.io/api-portal/historical-trades-by-sql \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "api_key=YOUR_API_KEY" \
  --data-urlencode "sql=SELECT date, time, symbol, put_call, strike, expiration_date, size, price, bid, ask FROM RawOptionTrades WHERE date = (SELECT max(date) FROM RawOptionTrades) AND symbol = 'AAPL' ORDER BY time DESC LIMIT 20"

示例 SQL 查询

SELECT max(date) AS latest_date
FROM RawOptionTrades

字段

名称类型说明
dateDate交易执行日期,格式:YYYY-MM-DD。此列为分区键。
timeDateTime64(3, 'America/New_York')交易时间戳,精确到毫秒,时区为美东时间。格式:YYYY-MM-DD HH:MM:SS.mmm。主键的一部分。
symbolLowCardinality(String)标的代码(TSLA、AAPL、SPY 等)。主键的一部分 - 按 symbol 过滤性能最佳。
put_callEnum8('CALL' = 1, 'PUT' = 2)期权类型:'CALL'(看涨)或 'PUT'(看跌)。
strikeDecimal(9,3)期权合约的行权价。已索引列。
expiration_dateDate期权到期日,格式:YYYY-MM-DD。已索引列。
sizeUInt32该笔交易的合约数量。
priceDecimal(9,4)每份合约的成交价格。
bidDecimal(9,4)成交时的最佳买价。
askDecimal(9,4)成交时的最佳卖价。
underlying_priceDecimal(9,4)成交时标的股票的价格。
ivDecimal(9,4)隐含波动率(小数,例如 0.35 = 35%)。
deltaDecimal(9,4)期权 Delta(-1 到 1)。
gammaDecimal(9,6)期权 Gamma。
oiUInt32未平仓合约数 - 尚未平仓的期权合约总数。
deiDecimal(9,4)Delta 敞口影响,相对于每日股票成交量。

衍生字段

以下字段未存储在 RawOptionTrades 中。你可以在接收原始数据后在应用逻辑中自行推导。

字段状态原因公式
id可推导前端生成组件 keysipHash64(concat(time, symbol, strike, price, size))
trade_count可推导RawOptionTrades 仅存单笔交易1
expiry_days可推导简单日期运算dateDiff('day', date, expiration_date)
premium可推导简单乘法toFloat64(price) * size * 100
option_symbol可推导由组件拼接成 OCC 格式concat(symbol, YYMMDD, P/C, strike*1000)
moneyness可推导比较行权价与标的价格IF strike ~= underlying_price THEN 'ATM' ELSE IF ITM/OTM by put_call
sentiment可推导由 side + put_call 推断IF CALL+BUY='BULLISH', PUT+BUY='BEARISH', etc.
side可推导比较成交价与 bid/askIF price > ask THEN 'AASK' ELSE IF price >= ask THEN 'ASK' ...
daily_volume可推导由交易聚合SUM(size) OVER (PARTITION BY date, symbol, strike, put_call, expiration_date)
dex可推导Delta 敞口 - 做市商需对冲的等效股数delta * size * 100

响应

{
    "status": "SUCCESS",
    "data": [
        {
            "date": "2025-01-17",
            "time": "2025-01-17 09:30:15.123",
            "symbol": "TSLA",
            "put_call": "CALL",
            "strike": 420.000,
            "expiration_date": "2025-01-24",
            "size": 10,
            "price": 4.2500,
            "bid": 4.2000,
            "ask": 4.3000,
            "underlying_price": 418.5200,
            "iv": 0.4523,
            "delta": 0.5234,
            "gamma": 0.012345,
            "oi": 15234,
            "dei": 0.0012
        },
        {
            "date": "2025-01-17",
            "time": "2025-01-17 09:30:18.456",
            "symbol": "AAPL",
            "put_call": "PUT",
            "strike": 230.000,
            "expiration_date": "2025-02-21",
            "size": 25,
            "price": 2.8900,
            "bid": 2.8500,
            "ask": 2.9200,
            "underlying_price": 232.1500,
            "iv": 0.2845,
            "delta": -0.3521,
            "gamma": 0.008765,
            "oi": 8923,
            "dei": 0.0008
        }
    ]
}

常见问题

Q: 你们使用什么数据库技术?

A: 我们使用 ClickHouse 作为后端查询引擎。

Q: 速率限制是多少?

A: 没有总体使用上限,但有软性限制为每秒 1 次请求。该限制可能会临时调整,以确保系统稳定和可用性。

Q: 数据何时更新?

A: 数据在市场交易时间内近实时刷新。但根据 OPRA 规定,数据延迟 15 分钟。这使该 API 适合历史分析。如需实时数据,请使用实时期权数据 API(realtime-option-data-api)。

Q: 数据可以追溯到多早?

A: 历史数据从 2025 年 2 月 28 日开始提供。

Q: 历史期权数据是否经过修改或聚合?

A: 历史期权数据 API 仅提供原始、未修改的数据。 与实时 API 不同(支持 AGGREGATED 与 RAW 模式),历史 API 保留的是交易执行时的原始记录。这意味着:

  • 每条记录代表实际的单笔成交。
  • 不会合并同时发生的交易。
  • 不进行算法修改或聚合处理。

如果需要聚合后的历史数据,可在 SQL 查询中使用 SUM()、COUNT() 和 GROUP BY 等函数根据需求自行聚合。

Q: 不同 API 的退款和试用政策是什么?

实时期权数据 API:

  • 提供 14 天免费试用。
  • 30 天退款保证。
  • 无条件退款政策。

历史期权数据 API:

  • 提供 7 天免费试用(可申请延长)。
  • 30 天退款保证。
  • 如有技术问题请联系支持。