ホーム/ファイナンス&投資/options-strategy-advisor
O

options-strategy-advisor

by @tradermontyv
4.4(20)

オプション取引戦略の分析とシミュレーションツールを提供し、異なる戦略の潜在的な収益とリスクを評価し、投資家の賢明な意思決定を支援します。

options-trading-strategyfinancial-derivativesrisk-managementtechnical-analysisinvestment-advisoryGitHub
インストール方法
npx skills add https://github.com/tradermonty/claude-trading-skills --skill options-strategy-advisor
compare_arrows

Before / After 効果比較

1 组
使用前

オプション取引戦略は複雑で変化に富み、リスクと潜在的なリターンを正確に評価することが困難です。投資家は情報不足のため、しばしば次善の意思決定をしてしまいます。

使用後

オプション取引戦略の分析およびシミュレーションツールを提供し、理論価格を計算することで、投資家が賢明な意思決定を行い、投資ポートフォリオを最適化するのを支援します。

SKILL.md

Options Strategy Advisor

Overview

This skill provides comprehensive options strategy analysis and education using theoretical pricing models. It helps traders understand, analyze, and simulate options strategies without requiring real-time market data subscriptions.

Core Capabilities:

  • Black-Scholes Pricing: Theoretical option prices and Greeks calculation
  • Strategy Simulation: P/L analysis for major options strategies
  • Earnings Strategies: Pre-earnings volatility plays integrated with Earnings Calendar
  • Risk Management: Position sizing, Greeks exposure, max loss/profit analysis
  • Educational Focus: Detailed explanations of strategies and risk metrics

Data Sources:

  • FMP API: Stock prices, historical volatility, dividends, earnings dates
  • User Input: Implied volatility (IV), risk-free rate
  • Theoretical Models: Black-Scholes for pricing and Greeks

Prerequisites

Required:

  • Python 3.8+ with numpy, scipy, requests

Optional:

  • FMP API key (for real-time stock prices and historical volatility)
    • Set via FMP_API_KEY environment variable or --api-key argument
    • Without API key: Use manual inputs for stock price and volatility

Installation:

pip install numpy scipy requests

Quick Start Examples:

# Basic call option pricing (no API key needed)
python3 scripts/black_scholes.py

# With FMP API key for real-time data
python3 scripts/black_scholes.py --ticker AAPL --api-key $FMP_API_KEY

# Custom option parameters
python3 scripts/black_scholes.py --stock-price 180 --strike 185 --days 30 --volatility 0.25

# Put option analysis
python3 scripts/black_scholes.py --stock-price 180 --strike 175 --days 30 --option-type put

When to Use This Skill

Use this skill when:

  • User asks about options strategies ("What's a covered call?", "How does an iron condor work?")
  • User wants to simulate strategy P/L ("What's my max profit on a bull call spread?")
  • User needs Greeks analysis ("What's my delta exposure?")
  • User asks about earnings strategies ("Should I buy a straddle before earnings?")
  • User wants to compare strategies ("Covered call vs protective put?")
  • User needs position sizing guidance ("How many contracts should I trade?")
  • User asks about volatility ("Is IV high right now?")

Example requests:

  • "Analyze a covered call on AAPL"
  • "What's the P/L on a $100/$105 bull call spread on MSFT?"
  • "Should I trade a straddle before NVDA earnings?"
  • "Calculate Greeks for my iron condor position"
  • "Compare protective put vs covered call for downside protection"

Supported Strategies

Income Strategies

  1. Covered Call - Own stock, sell call (generate income, cap upside)
  2. Cash-Secured Put - Sell put with cash backing (collect premium, willing to buy stock)
  3. Poor Man's Covered Call - LEAPS call + short near-term call (capital efficient)

Protection Strategies

  1. Protective Put - Own stock, buy put (insurance, limited downside)
  2. Collar - Own stock, sell call + buy put (limited upside/downside)

Directional Strategies

  1. Bull Call Spread - Buy lower strike call, sell higher strike call (limited risk/reward bullish)
  2. Bull Put Spread - Sell higher strike put, buy lower strike put (credit spread, bullish)
  3. Bear Call Spread - Sell lower strike call, buy higher strike call (credit spread, bearish)
  4. Bear Put Spread - Buy higher strike put, sell lower strike put (limited risk/reward bearish)

Volatility Strategies

  1. Long Straddle - Buy ATM call + ATM put (profit from big move either direction)
  2. Long Strangle - Buy OTM call + OTM put (cheaper than straddle, bigger move needed)
  3. Short Straddle - Sell ATM call + ATM put (profit from no movement, unlimited risk)
  4. Short Strangle - Sell OTM call + OTM put (profit from no movement, wider range)

Range-Bound Strategies

  1. Iron Condor - Bull put spread + bear call spread (profit from range-bound movement)
  2. Iron Butterfly - Sell ATM straddle, buy OTM strangle (profit from tight range)

Advanced Strategies

  1. Calendar Spread - Sell near-term option, buy longer-term option (profit from time decay)
  2. Diagonal Spread - Calendar spread with different strikes (directional + time decay)
  3. Ratio Spread - Unbalanced spread (more contracts on one leg)

Analysis Workflow

Step 1: Gather Input Data

Required from User:

  • Ticker symbol
  • Strategy type
  • Strike prices
  • Expiration date(s)
  • Position size (number of contracts)

Optional from User:

  • Implied Volatility (IV) - if not provided, use Historical Volatility (HV)
  • Risk-free rate - default to current 3-month T-bill rate (~5.3% as of 2025)

Fetched from FMP API:

  • Current stock price
  • Historical prices (for HV calculation)
  • Dividend yield
  • Upcoming earnings date (for earnings strategies)

Example User Input:

Ticker: AAPL
Strategy: Bull Call Spread
Long Strike: $180
Short Strike: $185
Expiration: 30 days
Contracts: 10
IV: 25% (or use HV if not provided)

Step 2: Calculate Historical Volatility (if IV not provided)

Objective: Estimate volatility from historical price movements.

Method:

# Fetch 90 days of price data
prices = get_historical_prices("AAPL", days=90)

# Calculate daily returns
returns = np.log(prices / prices.shift(1))

# Annualized volatility
HV = returns.std() * np.sqrt(252)  # 252 trading days

Output:

  • Historical Volatility (annualized percentage)
  • Note to user: "HV = 24.5%, consider using current market IV for more accuracy"

User Can Override:

  • Provide IV from broker platform (ThinkorSwim, TastyTrade, etc.)
  • Script accepts --iv 28.0 parameter

Step 3: Price Options Using Black-Scholes

Black-Scholes Model:

For European-style options:

Call Price = S * N(d1) - K * e^(-r*T) * N(d2)
Put Price = K * e^(-r*T) * N(-d2) - S * N(-d1)

Where:
d1 = [ln(S/K) + (r + σ²/2) * T] / (σ * √T)
d2 = d1 - σ * √T

S = Current stock price
K = Strike price
r = Risk-free rate
T = Time to expiration (years)
σ = Volatility (IV or HV)
N() = Cumulative standard normal distribution

Adjustments:

  • Subtract present value of dividends from S for calls
  • American options: Use approximation or note "European pricing, may undervalue American options"

Python Implementation:

from scipy.stats import norm
import numpy as np

def black_scholes_call(S, K, T, r, sigma, q=0):
    """
    S: Stock price
    K: Strike price
    T: Time to expiration (years)
    r: Risk-free rate
    sigma: Volatility
    q: Dividend yield
    """
    d1 = (np.log(S/K) + (r - q + 0.5*sigma**2)*T) / (sigma*np.sqrt(T))
    d2 = d1 - sigma*np.sqrt(T)

    call_price = S*np.exp(-q*T)*norm.cdf(d1) - K*np.exp(-r*T)*norm.cdf(d2)
    return call_price

def black_scholes_put(S, K, T, r, sigma, q=0):
    d1 = (np.log(S/K) + (r - q + 0.5*sigma**2)*T) / (sigma*np.sqrt(T))
    d2 = d1 - sigma*np.sqrt(T)

    put_price = K*np.exp(-r*T)*norm.cdf(-d2) - S*np.exp(-q*T)*norm.cdf(-d1)
    return put_price

Output for Each Option Leg:

  • Theoretical price
  • Note: "Market price may differ due to bid-ask spread and American vs European pricing"

Step 4: Calculate Greeks

The Greeks measure option price sensitivity to various factors:

Delta (Δ): Change in option price per $1 change in stock price

def delta_call(S, K, T, r, sigma, q=0):
    d1 = (np.log(S/K) + (r - q + 0.5*sigma**2)*T) / (sigma*np.sqrt(T))
    return np.exp(-q*T) * norm.cdf(d1)

def delta_put(S, K, T, r, sigma, q=0):
    d1 = (np.log(S/K) + (r - q + 0.5*sigma**2)*T) / (sigma*np.sqrt(T))
    return np.exp(-q*T) * (norm.cdf(d1) - 1)

Gamma (Γ): Change in delta per $1 change in stock price

def gamma(S, K, T, r, sigma, q=0):
    d1 = (np.log(S/K) + (r - q + 0.5*sigma**2)*T) / (sigma*np.sqrt(T))
    return np.exp(-q*T) * norm.pdf(d1) / (S * sigma * np.sqrt(T))

Theta (Θ): Change in option price per day (time decay)

def theta_call(S, K, T, r, sigma, q=0):
    d1 = (np.log(S/K) + (r - q + 0.5*sigma**2)*T) / (sigma*np.sqrt(T))
    d2 = d1 - sigma*np.sqrt(T)

    theta = (-S*norm.pdf(d1)*sigma*np.exp(-q*T)/(2*np.sqrt(T))
             - r*K*np.exp(-r*T)*norm.cdf(d2)
             + q*S*norm.cdf(d1)*np.exp(-q*T))

    return theta / 365  # Per day

Vega (ν): Change in option price per 1% change in volatility

def vega(S, K, T, r, sigma, q=0):
    d1 = (np.log(S/K) + (r - q + 0.5*sigma**2)*T) / (sigma*np.sqrt(T))
    return S * np.exp(-q*T) * norm.pdf(d1) * np.sqrt(T) / 100  # Per 1%

Rho (ρ): Change in option price per 1% change in interest rate

def rho_call(S, K, T, r, sigma, q=0):
    d2 = (np.log(S/K) + (r - q + 0.5*sigma**2)*T) / (sigma*np.sqrt(T)) - sigma*np.sqrt(T)
    return K * T * np.exp(-r*T) * norm.cdf(d2) / 100  # Per 1%

Position Greeks:

For a strategy with multiple legs, sum Greeks across all legs:

# Example: Bull Call Spread
# Long 1x $180 call
# Short 1x $185 call

delta_position = (1 * delta_long) + (-1 * delta_short)
gamma_position = (1 * gamma_long) + (-1 * gamma_short)
theta_position = (1 * theta_long) + (-1 * theta_short)
vega_position = (1 * vega_long) + (-1 * vega_short)

Greeks Interpretation:

GreekMeaningExample
DeltaDirectional exposureΔ = 0.50 → $50 profit if stock +$1
GammaDelta accelerationΓ = 0.05 → Delta increases by 0.05 if stock +$1
ThetaDaily time decayΘ = -$5 → Lose $5/day from time passing
VegaVolatility sensitivityν = $10 → Gain $10 if IV increases 1%
RhoInterest rate sensitivityρ = $2 → Gain $2 if rates increase 1%

Step 5: Simulate Strategy P/L

Objective: Calculate profit/loss at various stock prices at expiration.

Method:

Generate stock price range (e.g., ±30% from current price):

current_price = 180
price_range = np.linspace(current_price * 0.7, current_price * 1.3, 100)

For each price point, calculate P/L:

def calculate_pnl(strategy, stock_price_at_expiration):
    pnl = 0

    for leg in strategy.legs:
        if leg.type == 'call':
            intrinsic_value = max(0, stock_price_at_expiration - leg.strike)
        else:  # put
            intrinsic_value = max(0, leg.strike - stock_price_at_expiration)

        if leg.position == 'long':
            pnl += (intrinsic_value - leg.premium_paid) * 100  # Per contract
        else:  # short
            pnl += (leg.premium_received - intrinsic_value) * 100

    return pnl * num_contracts

Key Metrics:

  • Max Profit: Highest possible P/L
  • Max Loss: Worst possible P/L
  • Breakeven Point(s): Stock price(s) where P/L = 0
  • Profit Probability: Percentage of price range that's profitable (simplified)

Example Output:

Bull Call Spread: $180/$185 on AAPL (30 DTE, 10 contracts)

Current Price: $180.00
Net Debit: $2.50 per spread ($2,500 total)

Max Profit: $2,500 (at $185+)
Max Loss: -$2,500 (at $180-)
Breakeven: $182.50
Risk/Reward: 1:1

Probability Profit: ~55% (if stock stays above $182.50)

Step 6: Generate P/L Diagram (ASCII Art)

Visual representation of P/L across stock prices:

def generate_pnl_diagram(price_range, pnl_values, current_price, width=60, height=15):
    """Generate ASCII P/L diagram"""

    # Normalize to chart dimensions
    max_pnl = max(pnl_values)
    min_pnl = min(pnl_values)

    lines = []
    lines.append(f"\nP/L Diagram: {strategy_name}")
    lines.append("-" * width)

    # Y-axis levels
    levels = np.linspace(max_pnl, min_pnl, height)

    for level in levels:
        if abs(level) < (max_pnl - min_pnl) * 0.05:
            label = f"    0 |"  # Zero line
        else:
            label = f"{level:6.0f} |"

        row = label
        for i in range(width - len(label)):
            idx = int(i / (width - len(label)) * len(price_range))
            pnl = pnl_values[idx]
            price = price_range[idx]

            # Determine character
            if abs(pnl - level) < (max_pnl - min_pnl) / height:
                if pnl > 0:
                    char = '█'  # Profit
                elif pnl < 0:
                    char = '░'  # Loss
                else:
                    char = '─'  # Breakeven
            elif abs(level) < (max_pnl - min_pnl) * 0.05:
                char = '─'  # Zero line
            elif abs(price - current_price) < (price_range[-1] - price_range[0]) * 0.02:
                char = '│'  # Current price line
            else:
                char = ' '

            row += char

        lines.append(row)

    lines.append(" " * 6 + "|" + "-" * (width - 6))
    lines.append(" " * 6 + f"${price_range[0]:.0f}" + " " * (width - 20) + f"${price_range[-1]:.0f}")
    lines.append(" " * (width // 2 - 5) + "Stock Price")

    return "\n".join(lines)

Example Output:

P/L Diagram: Bull Call Spread $180/$185
------------------------------------------------------------
 +2500 |                               ████████████████████
       |                         ██████
       |                   ██████
       |             ██████
     0 |       ──────
       | ░░░░░░
       |░░░░░░
 -2500 |░░░░░
      |____________________________________________________________
       $126                  $180                   $234
                          Stock Price

Legend: █ Profit  ░ Loss  ── Breakeven  │ Current Price

Step 7: Strategy-Specific Analysis

Provide tailored guidance based on strategy type:

Covered Call:

Income Strategy: Generate premium while capping upside

Setup:
- Own 100 shares of AAPL @ $180
- Sell 1x $185 call (30 DTE) for $3.50

Max Profit: $850 (Stock at $185+ = $5 stock gain + $3.50 premium)
Max Loss: Unlimited downside (stock ownership)
Breakeven: $176.50 (Cost basis - premium received)

Greeks:
- Delta: -0.30 (reduces stock delta from 1.00 to 0.70)
- Theta: +$8/day (time decay benefit)

Assignment Risk: If AAPL > $185 at expiration, shares called away

When to Use:
- Neutral to slightly bullish
- Want income in sideways market
- Willing to sell stock at $185

Exit Plan:
- Buy back call if stock rallies strongly (preserve upside)
- Let expire if stock stays below $185
- Roll to next month if want to keep shares

Protective Put:

Insurance Strategy: Limit downside while keeping upside

Setup:
- Own 100 shares of AAPL @ $180
- Buy 1x $175 put (30 DTE) for $2.00

Max Profit: Unlimited (stock can rise infinitely)
Max Loss: -$7 per share = ($5 stock loss + $2 premium)
Breakeven: $182 (Cost basis + premium paid)

Greeks:
- Delta: +0.80 (stock delta 1.00 - put delta 0.20)
- Theta: -$6/day (time decay cost)

Protection: Guaranteed to sell at $175, no matter how far stock falls

When to Use:
- Own stock, worried about short-term drop
- Earnings coming up, want protection
- Alternative to stop-loss (can't be stopped out)

Cost: "Insu

...

ユーザーレビュー (0)

レビューを書く

効果
使いやすさ
ドキュメント
互換性

レビューなし

統計データ

インストール数3.7K
評価4.4 / 5.0
バージョン
更新日2026年10月20日
比較事例1 件

ユーザー評価

4.4(20)
5
40%
4
50%
3
10%
2
0%
1
0%

この Skill を評価

0.0

対応プラットフォーム

🔧Claude Code
🔧OpenClaw
🔧OpenCode
🔧Codex
🔧Gemini CLI
🔧GitHub Copilot
🔧Amp
🔧Kimi CLI

タイムライン

作成2026年3月17日
最終更新2026年10月20日
🎁 Agent 知識カード
アンケート