Claude Code Plugins

Community-maintained marketplace

Feedback

long-straddle

@keith-mvs/ordinis
1
0

Analyzes long straddle volatility plays with ATM call and put at same strike. Requires numpy>=1.24.0, pandas>=2.0.0, matplotlib>=3.7.0, scipy>=1.10.0. Use when expecting large price movement in either direction, analyzing earnings plays, evaluating volatility opportunities, or assessing binary event outcomes on high IV stocks.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name long-straddle
description Analyzes long straddle volatility plays with ATM call and put at same strike. Requires numpy>=1.24.0, pandas>=2.0.0, matplotlib>=3.7.0, scipy>=1.10.0. Use when expecting large price movement in either direction, analyzing earnings plays, evaluating volatility opportunities, or assessing binary event outcomes on high IV stocks.

Long Straddle Strategy

Version: 1.0 Last Updated: 2025-12-12

Overview

A long straddle is a neutral volatility strategy that profits from large price movements in either direction. By purchasing both an ATM call and ATM put with the same strike and expiration, the trader benefits from significant moves regardless of direction while accepting high upfront cost and time decay.

Quick Summary: Buy ATM call + Buy ATM put (same strike) = Profit from large moves either way

Strategy Characteristics

Position Structure:

  • Buy 1 call at-the-money (ATM)
  • Buy 1 put at-the-money (ATM)
  • Same strike price (typically ATM)
  • Same expiration date

Risk Profile:

  • Maximum Loss: Total premium paid (call + put)
  • Maximum Profit: Unlimited (stock can move infinitely)
  • Breakeven Points:
    • Upside: Strike + Total premium
    • Downside: Strike - Total premium
  • Best Use: Expect large move but uncertain of direction

Cost Components:

  • Call premium (debit)
  • Put premium (debit)
  • Total premium = Call + Put (significant cost)
  • Transaction costs: ~$0.65 per contract × 2 legs = $1.30

Quick Start

Calculate long straddle metrics:

from scripts.long_straddle_calculator import LongStraddle

# Example: Earnings play on NVDA at $475
position = LongStraddle(
    underlying_price=475.00,
    strike=475.00,        # ATM strike
    call_premium=22.50,
    put_premium=21.00,
    contracts=1
)

# Key metrics
print(f"Total Cost: ${position.total_cost:.2f}")
print(f"Upper Breakeven: ${position.upper_breakeven:.2f}")
print(f"Lower Breakeven: ${position.lower_breakeven:.2f}")
print(f"Required Move: {position.required_move_percent:.1f}%")

Core Workflow

1. Identify Volatility Opportunity

Look for catalysts that create uncertainty:

Binary Events:

  • Earnings announcements (quarterly reports)
  • FDA drug approval decisions
  • Merger/acquisition outcomes
  • Legal rulings or regulatory decisions
  • Major product launches

Market Conditions:

  • Fed meetings with unclear direction
  • Geopolitical uncertainty
  • Technical breakout/breakdown setups
  • Historical volatility compression

Criteria:

  • High implied volatility (IV rank >50)
  • Clear catalyst date
  • Expected move >10% (sufficient to overcome cost)
  • Liquid options (tight bid/ask spreads)

See references/volatility-analysis.md.

2. IV Rank and Percentile Analysis

Assess current volatility levels:

from scripts.iv_analyzer import analyze_iv_metrics

metrics = analyze_iv_metrics(
    symbol='NVDA',
    current_iv=0.65,
    lookback_period=252  # 1 year
)

print(f"IV Rank: {metrics['iv_rank']:.0f}")          # 75 (high)
print(f"IV Percentile: {metrics['iv_percentile']:.0f}")  # 82
print(f"Expected Move: {metrics['expected_move']:.1f}%")  # 8.5%

Ideal IV Environment:

  • IV Rank: 50-90 (elevated but not extreme)
  • IV Percentile: 60-90
  • Historical vol < Implied vol (vol expansion expected)

⚠️ Avoid when IV rank >90 (extreme - risk of IV crush)

See references/iv-metrics-guide.md.

3. Expected Move Calculation

Calculate market's implied move:

from scripts.expected_move_calculator import calculate_expected_move

expected = calculate_expected_move(
    underlying_price=475.00,
    total_premium=43.50,  # Straddle cost
    days_to_expiration=3   # Earnings in 3 days
)

print(f"Expected Move: ${expected['dollar_move']:.2f}")  # $40.25
print(f"Expected Move %: {expected['percent_move']:.1f}%")  # 8.5%
print(f"Implied Move Range: ${expected['lower_bound']:.2f} - ${expected['upper_bound']:.2f}")

Rule of Thumb: Straddle cost ≈ 85% of expected move (1 standard deviation)

See references/expected-move-calculation.md.

4. Strike Selection

ATM Strike (Standard):

  • Strike nearest to current stock price
  • Maximum gamma (sensitivity to moves)
  • Highest theta decay (most expensive)
  • Example: Stock $475 → Strike $475

Slightly OTM Strikes (Alternative):

  • Lower cost but wider breakevens
  • Reduced gamma
  • Better for extreme volatility
  • Example: Stock $475 → Call $480 + Put $470 (actually a strangle)

For pure straddle, always use ATM strike.

See references/strike-selection-guide.md.

5. Expiration Timing

Event-Based:

  • Before event: 1-7 days (earnings, FDA decision)
  • After event: Benefit from move, but IV crush risk
  • Standard: Use expiration closest to event (but after)

Time-Based (No specific event):

  • 30-45 days: Standard volatility play
  • 14-21 days: Short-term speculation
  • 60-90 days: Expensive, more time for move

Key: Balance premium cost vs. time for move to develop

See references/expiration-timing.md.

6. Cost-Benefit Analysis

Compare straddle cost to historical moves:

from scripts.historical_analyzer import analyze_historical_moves

analysis = analyze_historical_moves(
    symbol='NVDA',
    event_type='earnings',
    lookback_count=8  # Last 8 earnings
)

print(f"Average Earnings Move: {analysis['avg_move']:.1f}%")
print(f"Max Move: {analysis['max_move']:.1f}%")
print(f"Min Move: {analysis['min_move']:.1f}%")
print(f"Current Straddle Implies: {analysis['current_implied']:.1f}%")

Decision:

  • If historical avg > implied: Straddle may be underpriced ✅
  • If historical avg < implied: Straddle may be overpriced ❌

See references/historical-analysis.md.

7. Greeks Analysis

Monitor straddle Greeks:

from scripts.greeks_calculator import calculate_straddle_greeks

greeks = calculate_straddle_greeks(
    strike=475.00,
    underlying_price=475.00,
    call_premium=22.50,
    put_premium=21.00,
    volatility=0.65,
    time_to_expiration=3/365
)

print(f"Delta: {greeks['delta']:.3f}")    # ~0 (neutral)
print(f"Gamma: {greeks['gamma']:.3f}")    # High (sensitive)
print(f"Theta: {greeks['theta']:.3f}")    # Very negative (decay)
print(f"Vega: {greeks['vega']:.3f}")      # Positive (gains from IV)

Key Greeks:

  • Delta: Near zero at entry (neutral)
  • Gamma: Very high (rapid delta change with moves)
  • Theta: Very negative (time decay hurts)
  • Vega: Very positive (benefits from IV increase)

See references/greeks-guide.md.

8. Position Sizing

Calculate appropriate contracts:

from scripts.position_sizer import calculate_straddle_size

contracts = calculate_straddle_size(
    portfolio_value=100000,
    risk_per_trade=0.03,      # 3% max loss
    straddle_cost=4350         # $43.50 × 100
)
# Returns: 1 contract (max risk $4,350 = 4.35%)

Sizing Rules:

  • Risk 2-5% of portfolio (straddles are risky)
  • Account for 100% loss potential
  • Don't oversize on single event

See references/position-sizing.md.

9. Entry Execution

Order Types:

  • Straddle Order: Single order for both legs (best pricing)
  • Limit Order: Set max total premium willing to pay
  • Market Order: Immediate fill (wider slippage)

Best Practices:

  • Enter as single straddle order
  • Set limit at mid-point of bid/ask
  • Avoid entering immediately before event (IV peak)
  • Enter 2-5 days before catalyst (balance cost vs. time)

Timing Considerations:

  • Too Early: Pay for excess time decay
  • Too Late: IV already elevated, expensive
  • Optimal: 2-5 days before event (sweet spot)

10. Management and Exit

Profit Targets:

  • Quick Exit: 20-30% profit (avoid theta decay)
  • Event Exit: Close day of or after event
  • Breakeven Exit: Stock reaches breakeven point

Stop Loss:

  • Time-Based: Close if no move by event
  • Percentage-Based: Close at 50-70% loss (cut losses)
  • IV Crush: Exit immediately after event if IV drops

Post-Event Management:

  • Large Move: Take profits quickly (theta accelerates)
  • Small Move: Accept loss, exit position
  • IV Crush: Exit immediately (vega loss)

See references/management-strategies.md.

Scripts

Calculator

# Calculate long straddle metrics
python scripts/long_straddle_calculator.py \
  --underlying NVDA \
  --price 475 \
  --strike 475 \
  --call-premium 22.50 \
  --put-premium 21.00 \
  --contracts 1

IV Analyzer

# Analyze IV rank and percentile
python scripts/iv_analyzer.py \
  --symbol NVDA \
  --current-iv 0.65 \
  --lookback 252

Expected Move Calculator

# Calculate market's expected move
python scripts/expected_move_calculator.py \
  --price 475 \
  --total-premium 43.50 \
  --dte 3

Historical Analyzer

# Analyze historical earnings moves
python scripts/historical_analyzer.py \
  --symbol NVDA \
  --event earnings \
  --lookback 8

References

Core Guides

Strategy-Specific

Dependencies

Required Packages:

numpy>=1.24.0
pandas>=2.0.0
matplotlib>=3.7.0
scipy>=1.10.0
yfinance>=0.2.0  # For historical IV data

Installation:

pip install -r requirements.txt

Python Version: 3.11+

Risk Warnings

⚠️ Key Risks:

  • High Cost: Straddles are expensive (both legs at ATM)
  • Time Decay: Theta decay accelerates as expiration approaches
  • IV Crush: Massive vega loss after event (50-80% drop possible)
  • Requires Large Move: Need move beyond breakevens to profit
  • Both Breakevens: Must overcome premium in either direction
  • Event Risk: If event canceled/delayed, position loses value

Risk Mitigation:

  • Only use on high-probability volatility events
  • Exit quickly after event (avoid IV crush)
  • Size positions appropriately (2-5% portfolio risk)
  • Set stop loss at 50-70% of premium
  • Have exit plan BEFORE entering
  • Avoid holding through weekend/holiday (theta decay)

When to Use Long Straddle

Ideal Scenarios:

  • Earnings with uncertain outcome
  • FDA approvals (binary yes/no)
  • Fed meetings with unclear direction
  • Technical breakout/breakdown pending
  • Historical moves >10% (sufficient to profit)
  • IV rank 50-90 (elevated but not extreme)

Avoid When:

  • Low volatility environment (IV rank <30)
  • Extreme IV (>90) - risk of IV crush
  • No clear catalyst
  • Sideways market with no expected move
  • After event (IV already crushed)
  • Can't accept 100% loss potential

Comparison to Other Strategies

vs. Long Strangle:

  • ❌ Higher cost (both ATM vs. OTM)
  • ✅ Lower breakevens (smaller move needed)
  • ✅ Higher gamma (more responsive)

vs. Iron Condor:

  • ❌ Debit vs. credit (pay upfront)
  • ✅ Unlimited profit potential
  • ❌ Time decay hurts vs. helps

vs. Directional Play (long call/put):

  • ✅ No directional risk
  • ❌ Double the cost
  • ✅ Profit from move either way

Example Trade

Scenario: NVDA earnings, stock at $475, IV rank 75

Setup:

  • Buy 1 NVDA $475 call @ $22.50
  • Buy 1 NVDA $475 put @ $21.00
  • Total cost: $43.50 × 100 = $4,350
  • Expiration: 3 days (day after earnings)
  • Expected move: 8.5% ($40.25)

Risk Profile:

  • Max Loss: $4,350 (if NVDA unchanged)
  • Max Profit: Unlimited
  • Upper Breakeven: $475 + $43.50 = $518.50 (+9.2%)
  • Lower Breakeven: $475 - $43.50 = $431.50 (-9.2%)
  • Required Move: 9.2% to breakeven

Outcomes:

  • NVDA at $520 (9.5% up): Profit $150 ($5.20 - $4.35)
  • NVDA at $510 (7.4% up): Loss $1,850 ($5.10 - $4.35)
  • NVDA at $475 (0%): Loss $4,350 (max loss)
  • NVDA at $430 (9.5% down): Profit $1,150 ($4.50 - $4.35)

Version History

v1.0 (2025-12-12)

  • Initial release using SKILL_PACKAGE_TEMPLATE v3.0
  • Anthropic + Claude Code compliant (<500 lines)
  • Progressive disclosure with references/
  • Complete IV analysis and expected move calculators
  • Historical earnings comparison framework
  • Greeks monitoring and position sizing

Compliance: Anthropic Best Practices ✅ | Claude Code Compatible ✅ Template: SKILL_PACKAGE_TEMPLATE v3.0 Lines: ~490 (under 500-line limit)