关于 massive-options-data
massive-options-data 是面向美国期权市场数据的技能,通过 Python 封装 Massive(Polygon)REST 接口,供需要检索期权链、合约及历史数据的开发者使用。它只提供数据,不生成策略或交易建议。
主要功能
- 01获取期权链和单个合约快照
- 02列出有效或已过期合约
- 03查询历史成交与聚合数据
- 04遍历分页结果
适用场景
- 01筛选指定到期范围的期权合约
- 02查看合约希腊值、隐含波动率和未平仓量
- 03获取历史成交或 OHLCV 数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ starchild-ai-agent/ official-skills --skill massive-options-data安装后在 Claude Code 中输入/massive-options-data确认已加载。
附带文件exports.py
详细介绍
海量期权数据
美国期权市场数据的数据供应层。为 Massive(Polygon)期权 REST 端点封装了简洁、可预测的 Python 接口。
此技能不会生成策略、信号、排名或交易建议——只提供期权数据。
套餐:Developer — 实际字段可用性
我们使用的是 Massive Options Developer(79 美元/月)。请根据 API 响应中实际包含的内容构建调用方:
| 字段 | Developer 是否返回? | 备注 |
|---|---|---|
details.*(ticker、strike、expiration、type) | ✅ | 始终存在。 |
implied_volatility | ✅ | 每份合约提供,延迟 15 分钟。 |
greeks(delta、gamma、theta、vega) | ✅ | 每份合约提供,延迟 15 分钟。 |
open_interest | ✅ | 每份合约提供,数据来自上一交易时段。 |
day.{open,high,low,close,volume,vwap} | ✅ | 期权价格(上一交易时段 OHLC),延迟 15 分钟。 |
underlying_asset.ticker | ✅ | 始终存在。 |
underlying_asset.price | ✅ | 当前标的价格,延迟 15 分钟。 |
last_trade(price、size、timestamp) | ✅ | 最近一笔交易,延迟 15 分钟。 |
last_quote(bid/ask) | ❌ | Developer 仍不会返回此字段。无法计算实时价差。 |
| 历史 IV / IV Rank / IV Percentile | ❌ | 所有套餐均不提供;请自行构建历史序列。 |
ATM 筛选现在使用真实标的价格:
chain = massive_option_chain_snapshot("AAPL")
# No need for twelvedata — underlying price is now included!
spot_price = chain["results"][0]["underlying_asset"]["price"]
atm_low, atm_high = spot_price * 0.95, spot_price * 1.05
for contract in chain["results"]:
strike = contract["details"]["strike_price"]
if atm_low <= strike <= atm_high:
# This is an ATM contract
如需实时 bid/ask 报价,请升级至 Advanced(199 美元/月)。
分页——扫描任何 DTE 范围时都必须使用
链快照按 ticker 排序分页。第一页的 250 行通常只涵盖一个到期日。要获取 DTE 时间范围内的所有合约,必须遍历 next_url(参见 exports.py 中的 massive_paginate)。跳过这一步是导致“0 个结果”扫描看起来出错的头号原因。
单个标的在一个到期日范围内的典型链大小可能超过 450 份合约。至少应允许 4 页。
脚本用法
python3 - <<'EOF'
import sys, json
sys.path.insert(0, "/data/workspace/skills/massive-options-data")
from exports import (
massive_option_chain_snapshot,
massive_option_contract_snapshot,
massive_option_trades,
massive_option_quotes,
massive_option_aggregates,
massive_list_contracts,
massive_paginate,
)
snap = massive_option_chain_snapshot(underlying="SPY", limit=10)
print(json.dumps(snap.get("results", [])[:2], indent=2))
EOF
函数(exports.py)
| 函数 | 端点 | 用途 |
|---|---|---|
massive_option_chain_snapshot(underlying, **filters) | GET /v3/snapshot/options/{underlying} | 完整链快照(价格/希腊值/IV/OI;Starter 不提供报价和交易数据)。 |
massive_option_contract_snapshot(underlying, option_ticker) | GET /v3/snapshot/options/{underlying}/{contract} | 单份合约快照。 |
massive_list_contracts(underlying_ticker=None, **filters) | GET /v3/reference/options/contracts | 期权合约参考列表(活跃或已过期)。 |
massive_option_trades(option_ticker, **range) | GET /v3/trades/{option_ticker} | 历史交易逐笔数据。Developer 及以上套餐可用。 |
massive_option_quotes(option_ticker, **range) | GET /v3/quotes/{option_ticker} | 历史 NBBO 报价。**Developer 仍返回 403。**需要 Advanced 套餐。 |
massive_option_aggregates(option_ticker, multiplier, timespan, from_, to, **opts) | GET /v2/aggs/ticker/{ticker}/range/... | OHLCV 柱。Developer 提供分钟和秒级柱;Advanced 提供所有柱。 |
massive_paginate(url, params=None, max_pages=20) | — | 遍历 next_url 游标分页。 |
所有函数均返回上游的原始 JSON。HTTP 错误会通过 Response.raise_for_status() 抛出。
加固说明
- 先探查,再编码。 针对新端点编写筛选流程前,先导出一条完整记录并检查实际字段。这样可以省去数小时排查“为什么所有内容都被筛掉了?”的问题。
- 处理空值。
greeks、last_quote、last_trade可能不存在;应保留为None,切勿伪造。 - 调用方标识。 每次调用都应包含
caller_id,以便透明代理归属用量。
凭据
通过 Agent 的安全输入流程设置 MASSIVE_API_KEY。如果存在密钥,sc-proxy 会注入该密钥;本地脚本也会从环境变量中读取,以便在 BYOK 设置中正常工作。
唯一可信来源
- 完整的 options 文档:https://massive.com/docs/rest/options/overview
- 遵循官方字段名称;上游更改契约时,应更新此技能,而不是在调用方处掩盖问题。
评论
支持 Markdown