mcpField
I
ib-option-chain

ib-option-chain

github.com/staskh其他39492 次安装1 天前更新
代码仓库

关于 ib-option-chain

ib-option-chain 是一项通过 Interactive Brokers 获取股票、ETF 和期货期权链数据的技能。它依据 IB 合约详情识别资产类型,并提供指定到期日的看涨、看跌合约、希腊值及标的价格。

主要功能

  1. 01列出可用到期日
  2. 02获取指定到期日的看涨与看跌期权
  3. 03自动识别股票或期货
  4. 04返回希腊值及行情字段
  5. 05支持强制指定资产类型

适用场景

  1. 01查看某到期日的看涨与看跌期权
  2. 02分析期权成交量和隐含波动率
  3. 03获取期货标的的期货期权链

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/staskh/trading_skills --skill ib-option-chain

安装后在 Claude Code 中输入/ib-option-chain确认已加载。

附带文件scripts/options.py

详细介绍

IB 期权链

从 Interactive Brokers 获取指定到期日的期权链数据。 支持股票/ETF(Stock/OPT)和期货期权(FOP)。资产类型和交易所均根据 IB 合约详情解析(不使用硬编码的代码表):自动检测会先尝试 SMART 股票;若不存在股票,则回退到期货(因此,NQ、GC、RTY 会解析为期货,而 AAPL 会解析为股票,即使它也有鲜为人知的个股期货)。既是股票又是期货根代码的代码(例如,ES=Eversource、CL=Colgate)默认解析为股票——传入 --sec-type fut 可强制使用期货。

IB 连接

本地必须运行已启用 API 的 TWS 或 IB Gateway:

  • 模拟交易——端口 7497
  • 实盘交易——端口 7496
  • IB_PORT 环境变量——未指定 --port 时使用的默认端口(例如,容器化的 Gateway 可设为 IB_PORT=4001)。优先级:--port 标志 > IB_PORT > 内置默认值。在 shell 或 .env 文件中设置。

**端口回退:**如果配置的端口连接失败,则自动尝试另一个端口。 如果重试成功,则将可用的账户类型(实盘/模拟)保存到记忆中,并在本次及后续会话中复用于所有 IB 技能调用,直到用户明确要求使用另一种账户。 如果两个端口均连接失败,请让用户确认 TWS 或 IB Gateway 正在运行且已启用 API 访问。

说明

首先,获取可用的到期日:

uv run python scripts/options.py SYMBOL --expiries

然后,获取指定到期日的期权链:

uv run python scripts/options.py SYMBOL --expiry YYYYMMDD

参数

  • SYMBOL - 代码。股票/ETF(例如,AAPL、SPY、TSLA)或期货根代码(例如,NQ、ES、CL、GC)——通过 IB 自动检测资产类型。
  • --sec-type {stk,fut} - 强制指定资产类型。默认:自动检测(优先股票)。当你想查询期货时,可对 ES/CL 等有歧义的根代码使用 fut。
  • --expiries - 仅列出可用的到期日
  • --expiry YYYYMMDD - 获取指定日期的期权链(IB 格式:YYYYMMDD,不带连字符)
  • --port - IB 端口(默认:模拟交易使用 7497)

输出

返回包含以下内容的 JSON:

  • calls - 看涨期权数组,包含行权价、买价、卖价、最新价、成交量、未平仓合约数、隐含波动率、greeks(IB 模型的 delta/gamma/theta/vega/iv)和 multiplier(仅期货)
  • puts - 看跌期权数组,包含相同字段
  • underlying_price - 当前标的价格,供参考(股票/ETF 价格或连续期货价格)
  • asset_type - "stock" 或 "future"
  • source - "ibkr"

期货仅返回到期时间不晚于近月连续期货到期日的合约;更远期的 FOP 需要下一季度的期货。期货在 Globex 上几乎全天候报价,因此希腊值在盘前也会填充。

以表格形式呈现数据。突出显示成交量较高的行权价和显著的 IV 水平。

依赖项

  • ib-async

时区

所有时间戳和基于时间的计算均必须使用 America/New_York 时区。所有 JSON 输出均必须包含 generated_at(纽约时间字符串)和 data_delay 字段。

评论

支持 Markdown