用途:从 Interactive Brokers 拉取指定到期日的期权链数据,覆盖股票/ETF(Stock/OPT)与期货期权(FOP)。标的类型与交易所由 IB 合约详情解析,不依赖硬编码符号表:先尝试 SMART 股票,无股票时回退为期货,因此 NQ、GC、RTY 解析为期货,AAPL 解析为股票。既是股票又是期货根的代码(如 ES、CL)默认按股票处理,可用 --sec-type fut 强制为期货。
连接要求:本地需运行 TWS 或 IB Gateway 并启用 API。模拟盘端口 7497,实盘端口 7496。可用 IB_PORT 环境变量设置默认端口(如 Gateway 容器用 4001),优先级为 --port 参数 > IB_PORT > 内置默认。端口失败会自动重试另一端口,成功后记住可用账户类型供后续调用复用,直至用户明确要求切换;两端口均失败则提示用户检查 TWS/Gateway 是否运行并开启 API。
用法:先查可用到期日:uv run python scripts/options.py SYMBOL --expiries;再取指定到期日链:uv run python scripts/options.py SYMBOL --expiry YYYYMMDD。参数包括 SYMBOL(股票/ETF 或期货根)、--sec-type {stk,fut}、--expiries、--expiry YYYYMMDD(IB 格式,无短横线)、--port。
输出:JSON 含 calls 与 puts 数组(strike、bid、ask、lastPrice、volume、openInterest、impliedVolatility、希腊值 delta/gamma/theta/vega/iv、期货含 multiplier)、underlying_price、asset_type(stock/future)、source(ibkr)。期货仅返回到前端连续期货到期日为止的合约,更远月 FOP 需下一季度期货。Globex 期货近乎 24 小时报价,盘前即可填充希腊值。建议以表格呈现并突出高成交量行权价与显著 IV。依赖 ib-async。所有时间戳与时间计算须用 America/New_York 时区,JSON 输出须含 generated_at(纽约时间字符串)与 data_delay 字段。