--- name: iron-butterfly description: Analyzes iron butterfly credit spreads with ATM short straddle and OTM long strangle protection. Requires numpy>=1.24.0, pandas>=2.0.0, matplotlib>=3.7.0, scipy>=1.10.0. Use when expecting stock to pin at specific strike, want maximum credit collection in high IV, analyzing tight-range opportunities, or implementing high-premium neutral strategies on stocks with strong technical pivot levels. --- # Iron Butterfly Strategy **Version**: 1.0 **Last Updated**: 2025-12-12 ## Overview An iron butterfly is a high-credit neutral strategy that profits when a stock pins near a specific strike price. By selling an ATM straddle (short call + short put at same strike) and buying an OTM strangle for protection (long put + long call at different strikes), the trader collects maximum premium while maintaining defined risk, benefiting from minimal price movement and volatility contraction. **Quick Summary**: Sell ATM straddle + Buy OTM strangle = High credit, tight profit zone ## Strategy Characteristics **Position Structure**: - Sell 1 call at-the-money (ATM) - Sell 1 put at-the-money (ATM) - Buy 1 OTM put (lower strike, protection) - Buy 1 OTM call (higher strike, protection) - All same expiration, equal wing widths from body **Risk Profile**: - **Maximum Profit**: Net credit received (at ATM strike) - **Maximum Loss**: Wing width - Net credit - **Breakeven Points**: - Lower: ATM strike - Net credit - Upper: ATM strike + Net credit - **Best Use**: Expect stock to pin at ATM strike, high IV crush opportunity **Cost Components**: - ATM straddle credit: Received (large) - OTM strangle cost: Paid (small) - Net credit = Straddle credit - Strangle cost - Max risk = Wing width - Net credit - Transaction costs: ~$0.65 per contract × 4 legs = $2.60 ## Quick Start Calculate iron butterfly metrics: ```python from scripts.iron_butterfly_calculator import IronButterfly # Example: SPY at $450, expect to pin at $450 position = IronButterfly( underlying_price=450.00, atm_strike=450.00, # Body (sell straddle) long_put=440.00, # $10 OTM protection long_call=460.00, # $10 OTM protection atm_call_premium=5.50, # Sell ATM call atm_put_premium=5.25, # Sell ATM put long_call_premium=1.00, # Buy OTM call long_put_premium=0.90, # Buy OTM put contracts=1 ) # Key metrics print(f"Net Credit: ${position.net_credit:.2f}") print(f"Max Profit: ${position.max_profit:.2f}") print(f"Max Loss: ${position.max_loss:.2f}") print(f"Breakevens: ${position.lower_breakeven:.2f} - ${position.upper_breakeven:.2f}") print(f"Profit Zone Width: {position.profit_zone_width:.2f} points") ``` ## Core Workflow ### 1. Identify Pinning Opportunity Look for stocks likely to settle at specific strike: **Ideal Scenarios**: - **Post-Earnings Pin**: Stock historically pins at round numbers after earnings - **Options Expiration**: Max pain theory (MMs want max OI to expire worthless) - **Strong Technical Level**: Key support/resistance at strike price - **Low Beta Stock**: Minimal movement tendency - **High Open Interest**: Large OI at specific strike (pinning force) **Market Conditions**: - Very high IV rank (>70) - premium rich - Stock at or near ATM strike - Upcoming IV crush catalyst - Historical tendency to pin at strikes - Low expected movement See [references/pinning-identification.md](references/pinning-identification.md). ### 2. Wing Width Selection **Narrow Wings** ($5-$10): - Higher credit (straddle expensive vs. strangle) - Tighter profit zone (harder to win) - Better R:R ratio (often 2:1 or better) - Lower capital requirement - Example: Sell $450 straddle / Buy $440/$460 strangle **Standard Wings** ($10-$15): - Balanced credit and profit zone - Most common configuration - Moderate risk management - Example: Sell $450 straddle / Buy $435/$465 strangle **Wide Wings** ($15-$25): - Lower credit (larger strangle cost) - Wider profit zone (easier to win) - Lower R:R ratio - Higher capital requirement - Example: Sell $450 straddle / Buy $425/$475 strangle **Selection Criteria**: - Match wing width to expected range - Narrower wings = more credit but tighter range - Target R:R ratio: 2:1 or better See [references/wing-width-analysis.md](references/wing-width-analysis.md). ### 3. Strike Selection Framework **ATM Strike (Body)**: - Select strike closest to current stock price - Or select strike with highest open interest - Or select technical pivot level (support/resistance) - Maximum credit collected here **Protection Strikes (Wings)**: - **Symmetric**: Equal distance from ATM (standard) - Example: ATM $450 → Long $440 put / Long $460 call - **Asymmetric**: Different distances (directional bias) - Bullish: Wider downside wing, tighter upside - Bearish: Tighter downside wing, wider upside **Delta-Based Approach**: - ATM strike: ~0.50 delta call, ~-0.50 delta put - Long strikes: ~0.10-0.15 delta (OTM protection) See [references/strike-selection-guide.md](references/strike-selection-guide.md). ### 4. Credit Optimization Compare different configurations to maximize credit: ```python from scripts/credit_optimizer import optimize_iron_butterfly configs = optimize_iron_butterfly( underlying_price=450.00, atm_strike=450.00, wing_widths=[5, 10, 15, 20], volatility=0.28, days_to_expiration=30 ) for config in configs: print(f"Wing Width ${config['wing_width']}:") print(f" Net Credit: ${config['net_credit']:.2f}") print(f" Max Profit: ${config['max_profit']:.2f}") print(f" Max Loss: ${config['max_loss']:.2f}") print(f" Profit Zone: ±${config['profit_zone']:.2f} ({config['profit_zone_pct']:.1f}%)") print(f" R:R Ratio: {config['rr_ratio']:.2f}:1") ``` See [references/credit-optimization.md](references/credit-optimization.md). ### 5. IV Rank Analysis Assess premium environment: ```python from scripts/iv_analyzer import analyze_iv_for_butterfly analysis = analyze_iv_for_butterfly( symbol='SPY', current_iv=0.28, atm_strike=450.00, lookback_period=252 ) print(f"IV Rank: {analysis['iv_rank']:.0f}") print(f"IV Percentile: {analysis['iv_percentile']:.0f}") print(f"Straddle Premium Rich: {analysis['straddle_rich']}") print(f"IV Crush Expected: {analysis['iv_crush_expected']}") print(f"Optimal for Iron Butterfly: {analysis['butterfly_optimal']}") print(f"Expected Credit: ${analysis['expected_credit']:.2f}") ``` **Ideal IV Environment**: - IV Rank: 70-95 (extremely high) - IV Percentile: 80-95 - Pre-event (earnings) with imminent crush - Historical IV > Current IV (mean reversion) ⚠️ **Critical**: Iron butterflies REQUIRE high IV to justify tight profit zone See [references/iv-analysis.md](references/iv-analysis.md). ### 6. Probability Analysis Calculate probability of profit: ```python from scripts/probability_calculator import calculate_butterfly_probabilities prob = calculate_butterfly_probabilities( atm_strike=450.00, wing_width=10.00, net_credit=8.85, underlying_price=450.00, volatility=0.28, days_to_expiration=30 ) print(f"Prob at ATM: {prob['at_atm']:.1f}%") print(f"Prob in Profit Zone: {prob['in_zone']:.1f}%") print(f"Prob of Max Profit: {prob['max_profit']:.1f}%") print(f"Prob of Max Loss: {prob['max_loss']:.1f}%") print(f"Expected Value: ${prob['expected_value']:.2f}") ``` **Decision Criteria**: - Prob in profit zone: >50% (minimum) - Expected value: >0 (positive expectancy) - R:R ratio: >2:1 (credit:risk) See [references/probability-analysis.md](references/probability-analysis.md). ### 7. Expiration Timing **Short-Term** (7-14 days): Maximum theta, ideal for post-earnings. Less time for stock to move. **Standard** (21-30 days): Balanced theta and adjustability. Common for monthly expiration. **Avoid Long-Term** (>45 days): Lower credit, too much time for stock to wander, theta too slow. See [references/expiration-timing.md](references/expiration-timing.md). ### 8. Greeks Monitoring Track iron butterfly Greeks: ```python from scripts/greeks_calculator import calculate_iron_butterfly_greeks greeks = calculate_iron_butterfly_greeks( atm_strike=450.00, long_put=440.00, long_call=460.00, underlying_price=450.00, volatility=0.28, time_to_expiration=30/365 ) print(f"Delta: {greeks['delta']:.3f}") # ~0 at ATM print(f"Gamma: {greeks['gamma']:.3f}") # Very high (rapid changes) print(f"Theta: {greeks['theta']:.3f}") # Positive (strong decay benefit) print(f"Vega: {greeks['vega']:.3f}") # Negative (benefits from IV drop) ``` **Key Insights**: - **Delta**: Near zero at ATM strike - **Gamma**: Very high (extremely sensitive to moves) - **Theta**: High positive (strong time decay benefit) - **Vega**: High negative (major benefit from IV crush) See [references/greeks-guide.md](references/greeks-guide.md). ### 9. Position Sizing Calculate risk-appropriate contracts: ```python from scripts/position_sizer import calculate_iron_butterfly_size contracts = calculate_iron_butterfly_size( portfolio_value=100000, risk_per_trade=0.025, # 2.5% max risk max_loss_per_butterfly=115 # $10 wing - $8.85 credit ) # Returns: 2 contracts (max risk $230 = 0.23%) ``` **Sizing Guidelines**: - Risk 1-3% of portfolio per butterfly - Account for max loss (wing - credit) - Consider iron butterflies higher risk than condors - Leave capital for adjustments or rolling See [references/position-sizing.md](references/position-sizing.md). ### 10. Management and Adjustments **Profit Taking**: - **50-70% max profit**: Excellent target - **Day after event**: If IV crush occurred, exit - **75% max profit**: Near optimal **Defensive Adjustments** (Stock moving away from ATM): **Convert to Iron Condor**: - Stock moving away from ATM - Close short option on tested side - Opens up profit zone - Reduces credit but improves probability **Roll Entire Butterfly**: - Stock moved to new level - Close current butterfly - Re-establish at new ATM strike - Collect new credit **Close and Accept Loss**: - Stock breached wing - Little recovery probability - Cut loss, move on - Don't chase or hope See [references/adjustment-strategies.md](references/adjustment-strategies.md). ## Scripts ### Calculator ```bash # Calculate iron butterfly metrics python scripts/iron_butterfly_calculator.py \ --underlying SPY \ --price 450 \ --atm-strike 450 \ --long-put 440 \ --long-call 460 \ --atm-call-premium 5.50 \ --atm-put-premium 5.25 \ --long-call-premium 1.00 \ --long-put-premium 0.90 ``` ### Credit Optimizer ```bash # Optimize wing width for max credit python scripts/credit_optimizer.py \ --underlying SPY \ --price 450 \ --atm 450 \ --widths 5 10 15 20 \ --dte 30 \ --volatility 0.28 ``` ### Probability Calculator ```bash # Calculate probability of profit python scripts/probability_calculator.py \ --atm 450 \ --wing-width 10 \ --credit 8.85 \ --price 450 \ --dte 30 \ --vol 0.28 ``` ## References ### Core Guides - [quickstart-guide.md](references/quickstart-guide.md) - 5-minute overview - [installation-guide.md](references/installation-guide.md) - Setup instructions - [developer-guide.md](references/developer-guide.md) - Code standards ### Strategy-Specific - [pinning-identification.md](references/pinning-identification.md) - Finding pin opportunities - [wing-width-analysis.md](references/wing-width-analysis.md) - Optimize wing spacing - [strike-selection-guide.md](references/strike-selection-guide.md) - ATM and protection strikes - [credit-optimization.md](references/credit-optimization.md) - Maximize premium collected - [iv-analysis.md](references/iv-analysis.md) - IV rank, crush opportunities - [probability-analysis.md](references/probability-analysis.md) - Calculate profit probabilities - [expiration-timing.md](references/expiration-timing.md) - 7/14/21 day comparison - [greeks-guide.md](references/greeks-guide.md) - High gamma and vega exposure - [position-sizing.md](references/position-sizing.md) - Risk management - [adjustment-strategies.md](references/adjustment-strategies.md) - Converting to condor - [examples.md](references/examples.md) - Real pinning setups ## Dependencies **Required Packages**: ``` numpy>=1.24.0 pandas>=2.0.0 matplotlib>=3.7.0 scipy>=1.10.0 ``` **Installation**: ```bash pip install -r requirements.txt ``` **Python Version**: 3.11+ ## Risk Warnings ⚠️ **Key Risks**: - **Extremely Tight Profit Zone**: Very narrow range for profit - **High Gamma Risk**: Position changes rapidly outside ATM - **Limited Probability**: Lower chance of profit vs. iron condor - **Assignment Risk**: ATM short options high assignment risk - **Pin Risk**: Complex assignment scenarios at ATM - **IV Crush Dependency**: Requires significant IV contraction - **Gap Risk**: Overnight gaps can breach wings quickly **Risk Mitigation**: - Only use in very high IV (IV rank >70) - Exit day after event (capture IV crush) - Set tight stop loss (2-3× credit) - Monitor ATM strikes closely for assignment - Don't hold through expiration if ATM - Size very conservatively (1-2% portfolio risk) - Have adjustment plan before entry ## When to Use Iron Butterfly ✅ **Ideal Scenarios**: - Very high IV environment (IV rank >70) - Expect stock to pin at ATM strike - Pre-earnings with imminent IV crush - Stock at strong technical level - High open interest at ATM strike - Short time to expiration (7-21 days) - Want maximum credit collection - Experienced with gamma risk ❌ **Avoid When**: - Low-moderate IV (IV rank <60) - Uncertain where stock will settle - No clear pinning catalyst - Trending market - Wide bid/ask spreads - Inexperienced with complex strategies - Can't actively monitor - Long time to expiration (>30 days) ## Comparison to Other Strategies **vs. Iron Condor**: Higher credit but tighter profit zone and higher gamma risk. Better for IV crush plays. **vs. Long Butterfly**: Collect credit vs. pay debit. Benefits from IV decrease with higher theta benefit. **vs. Short Straddle**: Defined risk with wings protection. Lower credit but no naked exposure and easier approval. ## Example Trade **Scenario**: SPY at $450 day before FOMC, IV rank 85, expect minimal move **Setup**: - Sell 1 SPY $450 call @ $5.50 - Sell 1 SPY $450 put @ $5.25 (Straddle credit: $10.75) - Buy 1 SPY $440 put @ $0.90 - Buy 1 SPY $460 call @ $1.00 (Strangle cost: $1.90) - Net credit: $8.85 × 100 = $885 per butterfly - Contracts: 2 butterflies - Expiration: 14 days (week after FOMC) **Risk Profile**: - Max Profit: $885 × 2 = $1,770 (if SPY exactly $450 at expiration) - Max Loss: ($10 wing - $8.85 credit) × 100 × 2 = $230 - Lower Breakeven: $450 - $8.85 = $441.15 - Upper Breakeven: $450 + $8.85 = $458.85 - Profit Zone: $441.15 - $458.85 (17.7-point range, ±3.9%) - Risk/Reward: 7.7:1 (excellent R:R) - Probability of Profit: ~55% **Outcomes**: SPY at $450 = max profit $1,770; at $445 = profit ~$1,020; at $441 = breakeven; outside wings = max loss $230 **Management**: Target 60% max profit ($1,062) day after FOMC; stop if SPY approaches $442 or $458 ## 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 credit optimizer and probability calculator - Pinning identification framework - IV crush analysis and adjustment strategies --- **Compliance**: Anthropic Best Practices ✅ | Claude Code Compatible ✅ **Template**: SKILL_PACKAGE_TEMPLATE v3.0 **Lines**: ~485 (under 500-line limit)