首年全场 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.ioPOST
/api-portal/historical-trades-by-sql说明:执行安全的 SELECT 查询访问期权交易数据。
请求头
| 名称 | 值 |
|---|---|
| Content-Type | application/x-www-form-urlencoded |
请求体
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
| api_key | string | 必填 | 从 https://optiondata.io 获取 |
| sql | string | 必填 | SQL 查询语句。 |
表名
API 提供以下表的访问:
- 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
字段
| 名称 | 类型 | 说明 |
|---|---|---|
| date | Date | 交易执行日期,格式:YYYY-MM-DD。此列为分区键。 |
| time | DateTime64(3, 'America/New_York') | 交易时间戳,精确到毫秒,时区为美东时间。格式:YYYY-MM-DD HH:MM:SS.mmm。主键的一部分。 |
| symbol | LowCardinality(String) | 标的代码(TSLA、AAPL、SPY 等)。主键的一部分 - 按 symbol 过滤性能最佳。 |
| put_call | Enum8('CALL' = 1, 'PUT' = 2) | 期权类型:'CALL'(看涨)或 'PUT'(看跌)。 |
| strike | Decimal(9,3) | 期权合约的行权价。已索引列。 |
| expiration_date | Date | 期权到期日,格式:YYYY-MM-DD。已索引列。 |
| size | UInt32 | 该笔交易的合约数量。 |
| price | Decimal(9,4) | 每份合约的成交价格。 |
| bid | Decimal(9,4) | 成交时的最佳买价。 |
| ask | Decimal(9,4) | 成交时的最佳卖价。 |
| underlying_price | Decimal(9,4) | 成交时标的股票的价格。 |
| iv | Decimal(9,4) | 隐含波动率(小数,例如 0.35 = 35%)。 |
| delta | Decimal(9,4) | 期权 Delta(-1 到 1)。 |
| gamma | Decimal(9,6) | 期权 Gamma。 |
| oi | UInt32 | 未平仓合约数 - 尚未平仓的期权合约总数。 |
| dei | Decimal(9,4) | Delta 敞口影响,相对于每日股票成交量。 |
衍生字段
以下字段未存储在 RawOptionTrades 中。你可以在接收原始数据后在应用逻辑中自行推导。
| 字段 | 状态 | 原因 | 公式 |
|---|---|---|---|
| id | 可推导 | 前端生成组件 key | sipHash64(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/ask | IF 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 天退款保证。
- 如有技术问题请联系支持。