Iron Butterfly Strategy
Sell the at-the-money put and call and buy wings wing_pct away, at IV Rank 30+. Take 25%, stop at the credit, out at 21 days; once the price is past a breakeven (the strike ± the credit), close and re-centre at the new price.
Default settings, 2020 to Nov 4, 2026.
By stock and year
Select a row to chart it below. Shade is the gap to buying and holding that stock.Defined risk by design: the long options in the structure cap the loss, so there is no separate hedged version.
| Stock | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 YTD | CAGR | B&H CAGR | Max drawdown |
|---|---|---|---|---|---|---|---|---|---|---|
| −14.0%−29.2 | +7.1%−19.8 | −12.6%+6.9 | +2.0%−22.3 | −9.8%−33.1 | −14.0%−30.4 | +6.1%−6.3 | −5.6% | +13.4% | −41.2% | |
| −14.4%−59.6 | +1.5%−25.3 | −20.7%+12.3 | +6.5%−47.3 | −6.4%−31.2 | −17.7%−37.9 | −8.2%−20.8 | −9.2% | +18.5% | −54.7% | |
| −25.0%−43.5 | −12.0%−25.3 | −22.5%−0.9 | +3.3%−11.8 | −17.0%−27.1 | +17.9%+6.5 | +25.0%+9.6 | −6.2% | +8.2% | −58.5% | |
| −5.1%−122.8 | −8.4%−133.5 | −6.2%+44.1 | −6.6%−245.6 | −15.4%−186.6 | −13.9%−52.7 | −25.6%−25.7 | −12.1% | +65.2% | −58.8% | |
| −23.7%−100.4 | −5.4%−39.3 | −23.3%+3.5 | −0.1%−48.3 | −10.5%−40.6 | −6.5%−15.1 | −12.3%−40.9 | −12.4% | +25.2% | −60.1% |
Growth of $10,000
Weekly closes on a log scale; the red shade is the strategy's drawdown from its last high. Returns are on the capital the strategy needed at its peak, with interest on idle cash. Hypothetical: how the backtests are made.
Rules · the when / do flow, read-only until you make a copyShow flow
The strategy runs as 1 track side by side. Each day, the first rule whose conditions hold in each track acts.
1. Iron fly
- INOpen the iron fly at the money
When:
book.open == 0andiv_rank >= ivr_minDo: sell put (as sput)strike spotdte dte (45)dte_min dte_min (30)dte_max dte_max (60)avoid_earnings 1strict 1; sell call (as scall)strike leg.sput.strikeexpiry leg.sput.expirystrict 1; buy put (as lput)strike leg.sput.strike - spot * wing_pctstrike_max leg.sput.strike - 0.001expiry leg.sput.expirystrict 1; buy call (as lcall)strike leg.scall.strike + spot * wing_pctstrike_min leg.scall.strike + 0.001expiry leg.sput.expirystrict 1 - TPtake_pct of the credit kept: close
When:
book.pnl_pct >= take_pctDo: close sput; close scall; close lput; close lcall - SLLost the credit: close
When:
book.pnl_pct <= -stop_pctDo: close sput; close scall; close lput; close lcall - EXexit_dte left: close
When:
leg.sput.dte <= exit_dteDo: close sput; close scall; close lput; close lcall - RCPast a breakeven: close and re-centre
When:
abs(spot - leg.sput.strike) >= book.creditDo: close sput; close scall; close lput; close lcall - Closed or expired
When:
book.open == 0Do: nothing (hold)
Parameters and defaults
Every named number in the rules can be changed in the Rule Builder. These are the defaults the backtest used.
| Parameter | Default |
|---|---|
ivr_min | 30 |
wing_pct | 0.05 |
dte | 45 |
dte_min | 30 |
dte_max | 60 |
take_pct | 25 |
stop_pct | 100 |
exit_dte | 21 |
Make a copy to change any of it and run your own backtest.
Trade log · every open, roll, assignment and close for SPYShow trades
Loading…
Sell the at-the-money put and call and buy wings wing_pct away, at IV Rank 30+. Take 25%, stop at the credit, out at 21 days; once the price is past a breakeven (the strike ± the credit), close and re-centre at the new price.
What it is
Sell the at-the-money put and call about 45 days out and buy wings 5% away, when IV Rank is 30 or more. Take 25% of the credit, stop at the full credit, close at 21 days left, and once the price is past a breakeven close and re-centre at the new price.
When to use it
Use it for a neutral view with a larger credit than an iron condor's and a defined worst case.
Maximum risk
The most you can lose is the wing width less the credit received.
Questions
Why take only 25%?
An iron fly only pays its full credit if the stock pins the strike at expiry. Taking a quarter early is a common way to book the likely part of it.
What does re-centring do?
When the price leaves the profit zone, the trade is closed and a new fly is opened at the new price, rather than waiting for it to come back.
Why does it often lose in backtests?
An at-the-money fly needs the stock to stay very close to one price, and every exit pays the spread on four legs. In trending years that adds up.