mcpField
M
massive-options-data

massive-options-data

github.com/starchild-ai-agent数据与数据库30124 次安装6 天前更新
代码仓库

关于 massive-options-data

massive-options-data 是面向美国期权市场数据的技能,通过 Python 封装 Massive(Polygon)REST 接口,供需要检索期权链、合约及历史数据的开发者使用。它只提供数据,不生成策略或交易建议。

主要功能

  1. 01获取期权链和单个合约快照
  2. 02列出有效或已过期合约
  3. 03查询历史成交与聚合数据
  4. 04遍历分页结果

适用场景

  1. 01筛选指定到期范围的期权合约
  2. 02查看合约希腊值、隐含波动率和未平仓量
  3. 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 设置中正常工作。

唯一可信来源

评论

支持 Markdown