LEAPS + Married Put Strategy
The 90-day example with one change: the put expires with the LEAPS call
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.Hedged by design: the protection is part of the strategy, so there is no unhedged version.
| Stock | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 YTD | CAGR | B&H CAGR | Max drawdown |
|---|---|---|---|---|---|---|---|---|---|---|
| +75.5%+60.3 | +83.3%+56.4 | −15.3%+4.2 | +36.7%+12.4 | +47.4%+24.1 | +21.6%+5.2 | +13.7%+1.2 | +34.3% | +13.4% | −34.9% | |
| +144.9%+99.8 | +24.2%−2.6 | −34.1%−1.0 | +52.4%−1.4 | +51.5%+26.6 | +22.4%+2.3 | −1.5%−14.1 | +28.4% | +18.5% | −47.9% | |
| +180.5%+162.1 | +24.2%+10.9 | −15.5%+6.1 | +17.5%+2.4 | +8.6%−1.5 | +15.9%+4.5 | +13.8%−1.6 | +26.2% | +8.2% | −41.7% | |
| +17.5%−100.2 | +16.5%−108.7 | −22.9%+27.4 | +70.4%−168.6 | +87.7%−83.5 | +10.1%−28.8 | +12.8%+12.7 | +23.3% | +65.2% | −50.7% | |
| +147.2%+70.5 | −18.0%−51.8 | −28.8%−2.0 | +7.7%−40.4 | +32.8%+2.7 | +0.7%−7.9 | +43.5%+14.9 | +17.2% | +25.2% | −55.4% |
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 2 tracks side by side. Each day, the first rule whose conditions hold in each track acts.
1. LEAPS + floor
- PS1Rule
When:
leg.leap.open == 0Do: buy call (as leap)delta 0.80dte 730 - PS2Rule
When:
spot >= leg.leap.entry_spot * 1.10Do: close wait_call; buy put (as floor_put)delta 0.30strike_min leg.leap.strike + 1expiry leg.leap.expiry - PS5Rule
When:
leg.leap.dte <= 270 or leg.leap.delta >= 0.95Do: close wait_call; roll leapdelta 0.80dte 730 - PS5Rule
When:
leg.leap.dte <= 270 or leg.leap.delta >= 0.95Do: close floor_put; roll leapdelta 0.80dte 730 - PS7Rule
When:
leg.floor_put.dte <= 30Do: roll floor_putdelta 0.30dte 90expiry_max leg.leap.expirystrike_min leg.floor_put.strike - Rule
When:
leg.floor_put.open == 0Do: nothing (hold)
2. Covered call while waiting
- PS8Rule
When:
leg.leap.open == 1andleg.floor_put.open == 0andleg.wait_call.open == 0Do: sell call (as wait_call)delta 0.20dte 40strike_min spot + 1 - PS8Rule
When:
leg.floor_put.open == 1Do: close wait_call - Rule
When:
leg.wait_call.open == 0Do: nothing (hold) - PS8Rule
When:
leg.wait_call.dte <= 3Do: roll wait_calldelta 0.20dte 40strike_min spot + 1
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…
The 90-day example with one change: the put expires with the LEAPS call
What it is
The 90-day protective put example with one change: the put is bought to expire with the LEAPS call, so the pair is a single long-dated position with a fixed floor.
When to use it
Use it to compare a single long-dated put against rolling shorter ones under the same LEAPS.
Maximum risk
Once the put is on, the worst case is the gap between the LEAPS call's value at that point and the put strike, plus the put's cost.
Questions
What is a married put?
A long position paired with a put bought at the same time and held for the same period, setting a fixed floor.
Why match the put's expiry to the LEAPS call?
One put for the whole life of the LEAPS call avoids the cost of rolling, at a higher price up front.
Is this a main strategy?
No, it is an example for comparison. LEAPS + Protective Put is the full version.