mcpField
O
options-payoff

options-payoff

github.com/himself65数据与数据库3.5k3.5k 次安装3 天前更新
代码仓库

关于 options-payoff

options-payoff 是用于期权策略分析的技能,根据截图或文字提取策略参数,计算到期收益和 Black-Scholes 理论价值,并生成带交互控件的 HTML 图表。

主要功能

  1. 01识别期权策略及各腿参数
  2. 02计算到期收益与理论价值曲线
  3. 03支持多种价差及自定义策略
  4. 04提供参数滑块与实时损益统计
  5. 05生成交互式图表或独立 HTML 文件

适用场景

  1. 01评估垂直价差或蝶式策略的盈亏范围
  2. 02调整隐含波动率、到期天数和现货价格
  3. 03查看策略盈亏平衡点及最大收益或损失
  4. 04将期权策略参数转换为交互图表

安装

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

$npx skills add https://github.com/himself65/finance-skills --skill options-payoff

安装后在 Claude Code 中输入/options-payoff确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
references/
bs_code.md
strategies.md

详细介绍

期权收益曲线技能

如果宿主尚未执行下面的 shell 探测(例如,在 Codex 中),请先用其 shell 工具运行 ! 包裹的命令,再选择配置方式。请使用实际输出;如果无法访问 shell,请说明此限制。

使用宿主可用的可视化工具生成交互式 HTML 图表;在 Codex 中则生成独立的 HTML 文件,展示:

  • 到期收益曲线(灰色虚线)——到期时的内在价值
  • 理论价值曲线(实色线)——基于当前 DTE/IV 的 Black-Scholes 价格
  • 所有关键参数的动态滑块
  • 实时统计数据:最大利润、最大亏损、盈亏平衡点、当前标的价格下的 P&L

步骤 1:从用户输入中提取策略

用户提供截图或文本时,请提取以下信息:

字段查找位置缺失时的默认值
策略类型标题栏/各腿描述"custom"
标的股票代码SPX
行权价标题或各腿表格中的 K1、K2、K3……最接近的整数价位
支付/收取的权利金成交价或平均价格5.00
数量持仓规模1
乘数股票期权为 100,SPX 为 100100
到期日标题中的日期30 DTE
标的价格截图或文本中显示的当前标的价格实时报价(见下文);仅在没有可用报价时使用中间行权价
IV希腊值面板中显示的数值,或根据 vega 估算20%
无风险利率—4.3%

截图中的标的价格:标的价格是标的当前价格,券商截图通常会省略该价格,或显示距离行权价较远的价格——不要从行权价标签读取。请使用截图中显示的价格,否则使用实时报价(SPX 使用下方探测结果,其他标的使用 yfinance)。仅在没有可用报价时才使用中间行权价,并告知用户。

当前 SPX 参考价格:

!`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\')')"`

步骤 2:识别策略类型

将策略与以下支持的策略匹配,然后阅读 references/strategies.md 中对应的部分。

策略各腿关键特征
蝶式价差买入 K1,卖出 2×K2,买入 K33 个行权价,标题中包含 "Butterfly"
垂直价差买入 K1,卖出 K2(相同到期日)2 个行权价,借记或贷记
日历价差买入远期到期的 K,卖出近期期限的 K相同行权价,2 个到期日
铁鹰式卖出 K2/K3,买入 K1/K4 保护腿4 个行权价,2 个价差
跨式组合买入看涨期权 K + 买入看跌期权 K相同行权价,两种类型
宽跨式组合买入虚值看涨期权 + 买入虚值看跌期权2 个行权价,均为虚值
备兑看涨期权持有 100 股 + 卖出看涨期权 K股票 + 卖出看涨期权
裸卖看跌期权卖出看跌期权 K单腿
比例价差买入 1×K1,卖出 N×K2数量不等

对于未列出的策略,请使用 custom 模式:分解为单独的各腿并汇总其 P&L。


步骤 3:计算收益

Black-Scholes 看跌期权价格
d1 = (ln(S/K) + (r + σ²/2)·T) / (σ·√T)
d2 = d1 - σ·√T
put = K·e^(-rT)·N(-d2) - S·N(-d1)
Black-Scholes 看涨期权价格(通过看跌看涨平价)
call = put + S - K·e^(-rT)
蝶式看跌期权收益(到期时)
if S >= K3: 0
if S >= K2: K3 - S
if S >= K1: S - K1
else: 0

每股净 P&L = 收益 − 已支付权利金

垂直价差(看涨期权借记)收益(到期时)
long_call = max(S - K1, 0)
short_call = max(S - K2, 0)
payoff = long_call - short_call - net_debit
日历价差理论价值

日历价差无法表示为简单的到期函数——始终使用 BS 定价计算两条腿:

value = BS(S, K, T_far, r, IV_far) - BS(S, K, T_near, r, IV_near)

对于日历价差的到期曲线:近期期限的腿到期时价值为零,远期到期的腿使用剩余期限 T 的 BS 价格。

铁鹰式收益(到期时)
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

步骤 4:渲染组件

如果有 visualize:read_me,请在构建前读取模块 ["chart", "interactive"],并使用 visualize:show_widget 渲染。否则,请根据宿主文档说明使用可用的可视化工具。在 Codex 中,如果没有内嵌渲染器,请在工作区保存完整的 HTML 文档,包含图表依赖项和 CSS,并在浏览器可用时验证,然后返回可点击的文件链接。保留以下所有控件和计算。不要调用宿主未提供的工具。

必需的控件(滑块)

结构部分:

  • 所有行权价(根据策略需要,包括 K1、K2、K3……)
  • 已支付 / 已收取的权利金
  • 数量
  • 乘数(默认为 100,请明确显示)

定价变量部分:

  • IV %(5–80%,步长为 0.5)
  • DTE — 距到期天数(0–90)
  • 无风险利率 %(0–8%)

现货价格:

  • 全宽滑块,范围 = [最低行权价 - 20%,最高行权价 + 20%],默认值为当前实际现货价格
必需的统计卡片(实时更新)
  • 最大盈利(到期时)
  • 最大亏损(到期时)
  • 盈亏平衡点(双边策略显示两个)
  • 当前现货价格下的理论损益
图表规格
  • X 轴:SPX / 标的价格
  • Y 轴:美元总损益(而非每股损益)
  • 蓝色实线 = 当前 DTE / IV 下的理论价值
  • 灰色虚线 = 到期收益
  • 绿色竖向虚线 = 行权价(K2 中间行权价用较亮颜色显示)
  • 琥珀色竖向虚线 = 当前现货价格
  • 零轴上方填充绿色,透明度为 10%;下方填充红色,透明度为 10%
  • 工具提示:悬停时显示两条曲线
代码模板

在控件中使用以下 JS 结构,并根据策略调整 pnlExpiry() 和 bfTheory():

// Black-Scholes helpers (always include)
function normCDF(x) { /* Horner approximation */ }
function bsCall(S,K,T,r,sig) { /* standard BS call */ }
function bsPut(S,K,T,r,sig) { /* standard BS put */ }

// Strategy-specific expiry payoff (returns per-share value BEFORE premium)
function expiryValue(S, ...strikes) { ... }

// Strategy-specific theoretical value using BS
function theoreticalValue(S, ...strikes, T, r, iv) { ... }

// Main update() reads all sliders, computes arrays, destroys+recreates Chart.js instance
function update() { ... }

// Attach listeners
['k1','k2',...,'iv','dte','rate','spot'].forEach(id => {
  document.getElementById(id).addEventListener('input', update);
});
update();

步骤 5:回复用户

渲染控件后,简要说明:

  1. 检测到的策略以及各条腿的对应方式
  2. 当前设置下的最大盈利 / 最大亏损
  3. 一个关键见解(例如:“现货价格目前比盈利区间低 950 点,明天到期”)

保持简洁——图表本身已说明一切。


参考文件

  • references/strategies.md — 各策略类型的详细收益公式和边界情况
  • references/bs_code.md — 可直接复制粘贴的 Black-Scholes JS 实现,包含 normCDF

如果不确定某种策略的收益公式边界情况,请阅读相关参考文件。

评论

支持 Markdown