Home/金融与投资/options-payoff
O

options-payoff

by @himself65v
4.5(50)

Interactive options payoff chart generator with dynamic controls for strategy visualization

options-payofffinanceanalysisGitHub
Installation
npx skills add himself65/finance-skills
compare_arrows

Before / After Comparison

1
Before

Manually collecting data and reports, slow and error-prone

After

One-click professional analysis with real-time data across multiple dimensions

description SKILL.md


name: options-payoff description: > Generate an interactive options payoff curve chart with dynamic parameter controls. Use this skill whenever the user shares an options position screenshot, describes an options strategy, or asks to visualize how an options trade makes or loses money. Triggers include: any mention of butterfly, spread (vertical/calendar/diagonal/ratio), straddle, strangle, condor, covered call, protective put, iron condor, or any multi-leg options structure. Also triggers when a user pastes strike prices, premiums, expiry dates, or says things like "show me the payoff", "draw the P&L curve", "what does this trade look like", or uploads a screenshot from a broker (IBKR, TastyTrade, Robinhood, etc). Always use this skill even if the user only provides partial info — extract what you can and use defaults for the rest.

Options Payoff Curve Skill

Generates a fully interactive HTML widget (via visualize:show_widget) showing:

  • Expiry payoff curve (dashed gray line) — intrinsic value at expiration
  • Theoretical value curve (solid colored line) — Black-Scholes price at current DTE/IV
  • Dynamic sliders for all key parameters
  • Real-time stats: max profit, max loss, breakevens, current P&L at spot

Step 1: Extract Strategy From User Input

When the user provides a screenshot or text, extract:

FieldWhere to find itDefault if missing
Strategy typeTitle bar / leg description"custom"
UnderlyingTicker symbolSPX
Strike(s)K1, K2, K3... in title or leg tablenearest round number
Premium paid/receivedFilled price or avg price5.00
QuantityPosition size1
Multiplier100 for equity options, 100 for SPX100
ExpiryDate in title30 DTE
Spot priceCurrent underlying price (NOT strike)middle strike
IVShown in greeks panel, or estimate from vega20%
Risk-free rate4.3%

Critical for screenshots: The spot price is the CURRENT price of the underlying index/stock, NOT the strikes. Never default spot to a strike price value.

Current SPX reference price:

!`python3 -c "import yfinance as yf; print(f'SPX ≈ {yf.Ticker(\"^GSPC\").fast_info[\"lastPrice\"]:.0f}')" 2>/dev/null || echo "SPX price unavailable — check market data"`

Step 2: Identify Strategy Type

Match to one of the supported strategies below, then read the corresponding section in references/strategies.md.

StrategyLegsKey Identifiers
butterflyBuy K1, Sell 2×K2, Buy K33 strikes, "Butterfly" in title
vertical_spreadBuy K1, Sell K2 (same expiry)2 strikes, debit or credit
calendar_spreadBuy far-expiry K, Sell near-expiry KSame strike, 2 expiries
iron_condorSell K2/K3, Buy K1/K4 wings4 strikes, 2 spreads
straddleBuy Call K + Buy Put KSame strike, both types
strangleBuy OTM Call + Buy OTM Put2 strikes, both OTM
covered_callLong 100 shares + Sell Call KStock + short call
naked_putSell Put KSingle leg
ratio_spreadBuy 1×K1, Sell N×K2Unequal quantities

For strategies not listed, use custom mode: decompose into individual legs and sum their P&Ls.


Step 3: Compute Payoffs

Black-Scholes Put Price

d1 = (ln(S/K) + (r + σ²/2)·T) / (σ·√T)
d2 = d1 - σ·√T
put = K·e^(-rT)·N(-d2) - S·N(-d1)

Black-Scholes Call Price (via put-call parity)

call = put + S - K·e^(-rT)

Butterfly Put Payoff (expiry)

if S >= K3: 0
if S >= K2: K3 - S
if S >= K1: S - K1
else: 0

Net P&L per share = payoff − premium_paid

Vertical Spread (call debit) Payoff (expiry)

long_call = max(S - K1, 0)
short_call = max(S - K2, 0)
payoff = long_call - short_call - net_debit

Calendar Spread Theoretical Value

Calendar cannot be expressed as a simple expiry function — always use BS pricing for both legs:

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

For expiry curve of calendar: near leg expires worthless, far leg = BS with remaining T.

Iron Condor Payoff (expiry)

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

Step 4: Render the Widget

Use visualize:read_me with modules ["chart", "interactive"] before building.

Required Controls (sliders)

Structure section:

  • All strike prices (K1, K2, K3... as needed by strategy)
  • Premium paid/received
  • Quantity
  • Multiplier (100 default, show for clarity)

Pricing variables section:

  • IV % (5–80%, step 0.5)
  • DTE — days to expiry (0–90)
  • Risk-free rate % (0–8%)

Spot price:

  • Full-width slider, range = [min_strike - 20%, max_strike + 20%], defaulting to ACTUAL current spot

Required Stats Cards (live-updating)

  • Max profit (expiry)
  • Max loss (expiry)
  • Breakeven(s) — show both for

forumUser Reviews (0)

Write a Review

Effect
Usability
Docs
Compatibility

No reviews yet

Statistics

Installs500
Rating4.5 / 5.0
Version
Updated2026年4月6日
Comparisons1

User Rating

4.5(50)
5
0%
4
0%
3
0%
2
0%
1
0%

Rate this Skill

0.0

Compatible Platforms

🔧Claude Code

Timeline

Created2026年4月6日
Last Updated2026年4月6日