数据与AI
用户提供期权持仓截图/策略描述或要求可视化盈亏时…
把期权策略或持仓转成可交互 P&L 曲线,支持调参并实时查看最大盈亏、盈亏平衡点和当前理论盈亏。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
用户提供期权持仓截图/策略描述或要求可视特定
解决思路
- 从用户输入提取策略类型:从标题栏或腿描述获取;缺失时默认 `custom`。
- 提取标的:从 ticker symbol 获取;缺失时默认 `SPX`。
- 提取行权价:从标题或腿表格获取 K1、K2、K3...;缺失时取最近的整数。
- 提取权利金:从成交价或均价获取;缺失时默认 `5.00`。
- 提取数量:从持仓规模获取;缺失时默认 `1`。
- 提取乘数:股票期权用 `100`,SPX 用 `100`;缺失时默认 `100`。
- 提取到期日:从标题日期获取;缺失时默认 `30 DTE`。
- 提取现价:用当前标的指数/股票价格,不是行权价;缺失时默认中间行权价。注意:截图场景绝不要把 spot 默认成某个行权价。
- 提取 IV:从 greeks 面板获取,或由 vega 估算;缺失时默认 `20%`。
- 提取无风险利率:缺失时默认 `4.3%`。
- 运行 !`python3 -c "exec('try:\n import yfinance as yf\n p=yf.Ticker(\'^GSPC\').fast_info[\'lastPrice\']\n print(f\'SPX ≈ {p:.0f}\')\nexcept Exception:\n print(\'SPX price unavailable — check market data\')')"` 获取当前 SPX 参考价。
- 识别策略类型:匹配支持策略,并读取 `references/strategies.md`。
- butterfly:3 个行权价,Buy K1、Sell 2×K2、Buy K3;标题含 `Butterfly`。
- vertical_spread:2 个行权价,Buy K1、Sell K2,同一到期日,可为 debit 或 credit。
- calendar_spread:同一行权价 K,Buy 远月到期、Sell 近月到期,共 2 个到期日。
- iron_condor:4 个行权价,Sell K2/K3,Buy K1/K4 作为 wings,共 2 个 spread。
- straddle:同一行权价 K,Buy Call K + Buy Put K。
- strangle:2 个行权价,Buy OTM Call + Buy OTM Put。
- covered_call:Long 100 股 + Sell Call K。
- naked_put:Sell Put K,单腿。
- ratio_spread:Buy 1×K1,Sell N×K2,数量不等。
- 对未列出的策略用 `custom` 模式:分解为单腿并加总各腿 P&L。
- 计算 Black-Scholes Put 价格:`d1 = (ln(S/K) + (r + σ²/2)·T) / (σ·√T)`,`d2 = d1 - σ·√T`,`put = K·e^(-rT)·N(-d2) - S·N(-d1)`。
- 计算 Black-Scholes Call 价格(用 put-call parity):`call = put + S - K·e^(-rT)`。
- 计算 butterfly put 到期 payoff:若 `S >= K3` 则 `0`;若 `S >= K2` 则 `K3 - S`;若 `S >= K1` 则 `S - K1`;否则 `0`。每股净 P&L = payoff − premium_paid。
- 计算 vertical spread(call debit)到期 payoff:`long_call = max(S - K1, 0)`,`short_call = max(S - K2, 0)`,`payoff = long_call - short_call - net_debit`。
- 计算 calendar spread 理论价值:calendar 不能用简单到期函数表示,始终用 BS 给两腿定价:`value = BS(S, K, T_far, r, IV_far) - BS(S, K, T_near, r, IV_near)`。calendar 的到期曲线:近月腿到期归零,远月腿 = 用剩余 T 的 BS。
- 计算 iron condor 到期 payoff:`put_spread = max(K2-S, 0) - max(K1-S, 0)`(short put spread),`call_spread = max(S-K3, 0) - max(S-K4, 0)`(short call spread),`payoff = credit_received - put_spread - call_spread`。
- 渲染前先用 `visualize:read_me`,modules 为 `["chart", "interactive"]`。
- 用 `visualize:show_widget` 生成完全交互式 HTML widget,包含:到期 payoff 曲线(灰色虚线,到期内在价值)、理论价值曲线(实色线,当前 DTE/IV 下的 Black-Scholes 价格)、所有关键参数的动态滑块、实时统计:最大盈利、最大亏损、盈亏平衡点、现价处当前 P&L。
- Structure section 滑块:所有行权价 K1、K2、K3...(按策略需要)、权利金 paid/received、数量、乘数(默认 `100`,为清晰可显示)。
- Pricing variables 滑块:IV %(5–80%,step 0.5)、DTE(0–90)、Risk-free rate %(0–8%)。
- Spot price:全宽滑块,范围 `[min_strike - 20%, max_strike + 20%]`,默认使用真实当前 spot。
- Required stats cards(实时更新):Max profit(到期)、Max loss(到期)、Breakeven(s)(双边策略显示两个)、当前 spot 处的理论 P&L。
- Chart specs:X 轴为 SPX/标的价;Y 轴为 Total USD P&L(不是 per-share);蓝色实线 = 当前 DTE/IV 下的理论价值;灰色虚线 = 到期 payoff;绿色虚线垂直线 = 行权价(K2 中心行权价更亮);琥珀色虚线垂直线 = 当前 spot 价;零轴以上填充绿色 10% 不透明度;零轴以下填充红色 10% 不透明度;Tooltip 悬停时同时显示两条曲线。
- 使用 Code template 的 JS 结构,并按策略调整 `pnlExpiry()` 和 `bfTheory()`:始终包含 Black-Scholes helpers(`normCDF`、`bsCall`、`bsPut`);策略特定的 `expiryValue(S, ...strikes)` 返回权利金前的每股价值;策略特定的 `theoreticalValue(S, ...strikes, T, r, iv)` 使用 BS;主 `update()` 读取所有滑块、计算数组、销毁并重建 Chart.js 实例;给 `['k1','k2',...,'iv','dte','rate','spot']` 绑定 `input` 监听;调用 `update()`。
- 渲染 widget 后向用户简要解释:检测到的策略及腿如何映射;当前设置下的 Max profit / Max loss;一条关键洞察(例如 “spot is currently 950 pts below the profit zone, expiring tomorrow”);保持简洁,图表本身会说明问题。
- 参考文件 `references/strategies.md`:每种策略类型的详细 payoff 公式和边界情况。
- 参考文件 `references/bs_code.md`:可直接复制粘贴的 Black-Scholes JS 实现,含 `normCDF`。
- 如果不确定某策略的 payoff 公式边界情况,读取相关 reference file。
适用边界 · 注意事项
- 不适用于非期权交易或不需要盈亏可视化的问题。
- 若运行环境不支持 visualize:show_widget / visualize:read_me / Chart.js,无法交付交互式 HTML widget。
- 若用户要求真实下单、投资建议或保证收益,不适用;本技能只做可视化与理论计算。