SuperAPI AI 工具集

ib-pmcc-advisor

数据与分析

查看项目

更新于 10-16 02:07

技能介绍

IB PMCC Advisor 用于分析 Interactive Brokers 投资组合中的 PMCC(Poor Man's Covered Call,对角线看涨价差)持仓,并针对短腿给出可操作建议:被指派风险、每日盈亏预测以及按优先级排序的移仓建议。

【IB 连接】 需在本地运行 TWS 或 IB Gateway 并启用 API:模拟盘端口 7497,实盘端口 7496。可通过 IB_PORT 环境变量设置省略 --port 时的默认端口(例如 Gateway 容器使用 IB_PORT=4001)。优先级为:--port 参数 > IB_PORT > 内置默认值,可在 shell 或 .env 文件中设置。端口回退:若配置端口失败,会自动在另一端口重试;若重试成功,会记忆可用账户类型(实盘/模拟盘)并在本次及未来会话的所有 IB 技能调用中复用,直到用户明确要求另一账户;若两个端口均失败,则提示用户确认 TWS 或 IB Gateway 已运行且启用 API 访问。

【使用方式】 第一步:运行脚本 uv run python .claude/skills/ib-pmcc-advisor/scripts/pmcc_advisor.py [--port PORT] [--account ACCOUNT] [--min-roll-dte N] [--price-mode mid|last] 脚本将 JSON 返回至标准输出,解析后用于后续响应。

第二步:默认响应——简洁行内摘要 除非用户明确要求报告或 JSON 输出,否则仅返回简洁的行内摘要,不保存文件。格式为每个价差一行:SYMBOL — short $STRIKE exp DATE (δ=X, assign=Y%) — [HOLD / ROLL to $STRIKE]。优先列出风险信号(被指派概率 > 40%、DTE < 7、短窗口内有财报)。对被标记的价差,额外增加一行显示首选移仓候选与净权利金。干净持仓仅需一行摘要。

第三步:仅在明确要求时生成文件 Markdown 报告:由“save a report”“generate a report”“write a report”“markdown”“PDF”触发。读取 .claude/skills/ib-pmcc-advisor/templates/markdown-template.md 获取完整格式说明,保存至 sandbox/pmcc_advisor_{ACCOUNT}{YYYY-MM-DD}{HHmm}.md,使用首个账户 ID,时间戳取自 generated_at。报告须包含每个价差的全部章节:风险信号摘要、公司描述(一句话)、技术面概况(仅当对话上下文存在技术数据时)、价差结构表、短腿风险、每日盈亏预测、移仓候选表、对比表、建议。 JSON 输出:由“save JSON”“export JSON”“save the data”“output file”触发,将原始脚本输出保存至 sandbox/pmcc_advisor_{ACCOUNT}{YYYY-MM-DD}{HHmm}.json。

【参数】 --port 默认 7497,IB Gateway/TWS 端口;--account 默认 all,指定账户 ID;--min-roll-dte 默认 7,移仓候选的最小 DTE;--price-mode 默认 mid,期权价格取中间价 (bid+ask)/2 或最新价;--symbols 默认 all,仅分析指定标的(如 --symbols NVDA WMT)。

【JSON 输出结构】 包含 generated_at、data_delay、accounts、price_mode、min_roll_dte、symbols_filter 以及 spreads 数组。每个价差包含 symbol、account、qty、underlying_price、leaps_expiry、earnings(date、timing、warning_short、warning_roll_indices)、long 腿(strike、expiry、dte、avg_cost、current_price、iv_pct、ib_delta、ib_iv_pct)、short 腿(strike、expiry、dte、premium_received、current_price、iv_pct、delta、assignment_prob_pct、ib_delta、ib_iv_pct)、daily_pnl 数组(date、days_to_short_expiry、optimal_spot、pnl)、roll_candidates 数组(strike、expiry、dte、price、delta、assignment_prob、iv_pct、net_credit、profit_per_day、pnl_if_assigned、bid、ask)以及 comparison(current 与 roll_1/2/3)。

【关键字段】 symbols_filter 为使用 --symbols 时的大写标的列表,null 表示全组合;data_delay 为“real-time”或“stalled - using last price”;generated_at 为纽约时区时间戳;leaps_expiry 为长腿到期日,所有移仓候选不超过该日期;earnings.date 为来自 Yahoo Finance 的下次财报日期,ETF 为 null;earnings.timing 为“BMO”或“AMC”;earnings.warning_short 表示财报是否落在短腿到期前最后 7 个自然日内;earnings.warning_roll_indices 为到期窗口包含财报日期的移仓候选的 1 基索引;delta / ib_delta 为 BS 计算值与 IBKR 模型希腊值;iv_pct / ib_iv_pct 为隐含波动率百分比;assignment_prob_pct 为 N(d2),即短腿到期价内(ITM)的风险中性概率;net_credit 为移仓收到的权利金(负值为支出),支出超过 $0.10/股的移仓被排除;pnl_if_assigned 为标的到期高于短腿行权价时的盈亏;daily_pnl[].optimal_spot 为当日最大化退出盈亏的现货价格;daily_pnl[].pnl 为当日最优现货价下的总美元金额(数量 × 100 合约)。

【移仓选择标准】 候选须同时满足:Delta ≤ 0.40(绝对上限,允许当前短腿临近到期时的同行使价向前移仓);净权利金 ≥ -$0.10/股(非大额支出)。扫描当前短腿到期后的下 5 个可用期权链到期日,以 LEAPS 到期日为上限。排序依据:Delta 改善(权重最高)→ 净权利金 → DTE 延长。

【示例用法】 全账户(模拟盘,默认):uv run python .claude/skills/ib-pmcc-advisor/scripts/pmcc_advisor.py 实盘账户、14 天最小移仓 DTE、最新价模式:uv run python .claude/skills/ib-pmcc-advisor/scripts/pmcc_advisor.py --port 7496 --account Uxxxxxxxx --min-roll-dte 14 --price-mode last 仅分析指定标的:uv run python .claude/skills/ib-pmcc-advisor/scripts/pmcc_advisor.py --symbols NVDA WMT

【架构】 全部逻辑位于 src/trading_skills/broker/pmcc_advisor.py:分析函数(上半部分,无 IBKR 导入)包括 get_option_price、calc_iv、calc_delta、calc_assignment_prob、calc_bs_price、calc_daily_pnl_table、check_earnings_warning、find_best_rolls、build_comparison_table、score_roll_candidate;数据层(下半部分,使用 IBKR + Yahoo Finance)包括 get_pmcc_data、_identify_pmcc_spreads、_fetch_single_option_quote、_fetch_option_quotes_batch、_get_chain_params、_fetch_earnings_dates。复用 src/trading_skills/broker/ 中的 connection.py(ib_connection、CLIENT_IDS、fetch_positions、fetch_spot_prices、normalize_positions、best_option_chain)与 black_scholes.py(implied_volatility、black_scholes_price、black_scholes_delta、estimate_iv)。

【适用场景与限制】 适用于持有 IB 账户并对 PMCC/对角线价差进行短腿风险监控、移仓决策与每日盈亏评估的场景。限制:需本地运行 TWS 或 IB Gateway 并启用 API;依赖 IBKR 与 Yahoo Finance 数据,行情不可用时可能回退至最新价;财报日期对 ETF 为 null;技术面概况仅在对话上下文存在技术数据时提供;移仓候选受 Delta 与净权利金标准约束,且不超过 LEAPS 到期日。