关于 ib-find-short-roll
ib-find-short-roll 是一项期权分析技能,使用 Interactive Brokers 数据评估短期期权滚动选择,或为长期持股和期权寻找可卖出的短期期权,并生成 Markdown 报告。
主要功能
- 01分析短期期权滚动候选项
- 02为长期持股或期权寻找短期期权
- 03使用 Interactive Brokers 实时数据
- 04生成 Markdown 报告
适用场景
- 01滚动短期期权时比较到期日与行权价
- 02为长期持股寻找备兑看涨期权或保护性看跌期权
- 03为垂直价差确定卖出腿
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ staskh/ trading_skills --skill ib-find-short-roll安装后在 Claude Code 中输入/ib-find-short-roll确认已加载。
附带文件scripts/roll.pytemplates/markdown-template.md
详细介绍
IB 寻找短仓滚动策略
使用 Interactive Brokers 的实时数据,分析短仓期权的滚动策略,或寻找适合开仓、用于对冲多头股票的最佳短期期权。
IB 连接
TWS 或 IB Gateway 必须在本地运行并启用 API:
- 模拟交易 — 端口 7497
- 实盘交易 — 端口 7496
IB_PORT环境变量 — 未指定--port时使用的默认端口(例如,Gateway 容器使用IB_PORT=4001)。优先级:--port标志 >IB_PORT> 内置默认值。在 shell 或.env文件中设置。
端口回退: 如果配置的端口连接失败,则自动重试另一个端口。 如果重试成功,则将成功的账户类型(实盘/模拟)保存到记忆中,并在本次及后续会话中用于所有 IB 技能调用,直到用户明确要求使用另一种账户。 如果两个端口都连接失败,请让用户确认 TWS 或 IB Gateway 正在运行且已启用 API 访问。
说明
第 1 步:收集数据
注意: 如果未安装
uv或找不到pyproject.toml,请在以下所有命令中将uv run python替换为python。
uv run python scripts/roll.py SYMBOL [--strike STRIKE] [--expiry YYYYMMDD] [--right C|P] [--port PORT] [--account ACCOUNT] [--iv-multiplier N]
脚本会将包含所有持仓和候选项数据的 JSON 输出到 stdout。
第 2 步:生成报告
阅读 templates/markdown-template.md 中的格式说明。根据 JSON 数据生成 Markdown 报告,并保存到 sandbox/。
第 3 步:报告结果
向用户展示关键结果:建议的持仓、收入/支出以及已保存的报告路径。
行为
- 如果存在期权空头持仓(
mode: "roll"):分析滚动到其他到期日/行权价的候选项 - 如果存在期权多头持仓(
mode: "spread"):寻找最佳的看涨/看跌空头期权,以建立垂直价差 - 如果持有股票多头(
mode: "new_short"):寻找最佳的备兑看涨期权(或保护性看跌期权)以开仓 - 如果以上情况均不存在:返回错误(使用 --strike/--expiry 手动指定)
参数
SYMBOL- 股票代码(例如,GOOG、AAPL、TSLA)--strike- 当前空头行权价(可选,自动从投资组合中检测)--expiry- 当前空头到期日,格式为 YYYYMMDD(可选,自动检测)--right- 期权类型:C 表示看涨期权,P 表示看跌期权(默认:C)--port- IB 端口(默认:模拟交易使用 7497)--account- 指定账户 ID(可选)--iv-multiplier- 用于行权价区间宽度的预期波动幅度乘数(默认:2.0);对于高 IV 标的,可调高此值以显示更宽范围的滚动候选项
JSON 输出
脚本会输出 JSON,其中的 mode 字段表示分析类型:
通用字段
success- 布尔值generated- 时间戳mode- "roll"、"spread" 或 "new_short"symbol- 股票代码underlying_price- 当前股价earnings_date- 下一次财报日期,或 nullexpirations_analyzed- 已检查到期日的列表
特定模式字段
- roll:
current_position(包含 IB 希腊值中的iv和delta)、buy_to_close、roll_candidates(到期日 -> 候选项的字典)、iv_multiplier - spread:
long_option、right、candidates_by_expiry - new_short:
long_position、right、candidates_by_expiry、iv_multiplier
行权价区间逻辑(roll 和 new_short 模式)
行权价搜索范围会考虑 IV:half_band = iv_multiplier × ATM_IV × spot × √(T/365),其中 T 是最近滚动到期日的 DTE。对于 roll 模式,ATM IV 取自 IB 提供的当前持仓报价模型希腊值;如果不可用,则根据期权中间价使用 Brenner-Subrahmanyam 近似值估算。对于 new_short 模式,则使用 30% 的保守默认 IV。这样一来,高 IV 标的会自动获得更宽的搜索范围,无需手动调整。
使用示例
# Auto-detect GOOG position (short option, long option, or long stock)
uv run python scripts/roll.py GOOG --port 7497
# Specify exact short position to roll
uv run python scripts/roll.py GOOG --strike 350 --expiry 20260206 --right C
# Find short call to sell against long call (vertical spread)
uv run python scripts/roll.py AUR --right C
# Find covered put for long stock
uv run python scripts/roll.py TSLA --right P
依赖项
ib-asyncyfinance
时区
所有时间戳和基于时间的计算都必须使用 America/New_York 时区。所有 JSON 输出都必须包含 generated_at(纽约时间字符串)和 data_delay 字段。