LEAPS + Collar Strategy
Own a ~2-year 0.80 Δ LEAPS instead of shares, sell a monthly 0.20 Δ call above it and hold a 0.20 Δ put under it: a collar. Roll the LEAPS call at 6 months left.
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 |
|---|---|---|---|---|---|---|---|---|---|---|
| +225.1%+209.9 | +51.0%+24.1 | −16.1%+3.4 | +32.6%+8.3 | +22.9%−0.4 | +26.5%+10.1 | +11.3%−1.1 | +38.7% | +13.4% | −35.6% | |
| +157.7%+112.5 | +35.5%+8.6 | −24.9%+8.2 | +29.3%−24.5 | +30.7%+5.9 | +26.4%+6.2 | −0.9%−13.5 | +28.3% | +18.5% | −30.7% | |
| +190.7%+172.2 | +14.8%+1.6 | −23.4%−1.7 | +3.5%−11.7 | +26.1%+16.0 | +31.4%+20.0 | +27.7%+12.3 | +28.5% | +8.2% | −48.0% | |
| +7.6%−110.1 | +6.0%−119.1 | −14.0%+36.3 | +25.9%−213.1 | +36.7%−134.5 | +26.2%−12.6 | +6.0%+5.9 | +12.6% | +65.2% | −25.0% | |
| +112.7%+36.0 | +20.7%−13.2 | −18.6%+8.2 | +31.7%−16.5 | +17.9%−12.2 | +26.2%+17.6 | +18.2%−10.4 | +25.8% | +25.2% | −30.2% |
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 3 tracks side by side. Each day, the first rule whose conditions hold in each track acts.
1. LEAPS and call
- L0Buy the LEAPS call
When:
leg.leap.open == 0andleg.call.open == 0Do: buy call (as leap)delta leap_delta (0.8)dte leap_dte (730)dte_min leap_dte - 120dte_max leap_dte + 120strict 1 - L3Six months left on the LEAPS call: swap it for a fresh one
When:
leg.leap.dte <= leap_roll_dteDo: close leap; buy call (as leap)delta leap_delta (0.8)dte leap_dte (730)dte_min leap_dte - 120dte_max leap_dte + 120strict 1require new.strike != leg.leap.strike or new.expiry != leg.leap.expiry - K1Sell the monthly call above the price and the LEAPS call strike
When:
leg.leap.open == 1andleg.call.open == 0Do: sell call (as call)qty leg.leap.qtydelta call_delta (0.2)dte dte (30)dte_min dte_min (25)dte_max dte_max (35)strike_min max(spot, leg.leap.strike) + 0.001avoid_earnings 1 - K2aHalf the credit kept, but the call is worth under $0.05 near expiry: let it expire
When:
leg.call.pnl_pct >= take_pctandleg.call.mark < 0.05andleg.call.dte <= 5Do: nothing (hold) - K2aHalf the credit kept: buy the call back
When:
leg.call.pnl_pct >= take_pctDo: close call - K2bAt the strike near expiry: roll up and out for a credit
When:
leg.call.dte <= manage_dteandspot >= leg.call.strike or abs(spot - leg.call.strike) / leg.call.strike <= near_bandDo: roll calldte 0dte_min leg.call.dte + 1dte_max roll_max_days - leg.call.chain_agestrike_min leg.call.strikescan strike_descavoid_earnings 1require new.mark > leg.call.mark - K2cNo credit roll: buy the call back at a loss; the LEAPS call keeps the gain
When:
leg.call.dte <= manage_dteandspot >= leg.call.strikeDo: close call
2. Put age
- W2Three weeks left on the collar put: sell it (a new one is bought the same day)
When:
leg.put.dte <= put_replace_dteDo: close put
3. Collar put
- L4Buy the collar put: ~60 days, 0.20 Δ, below the price (not on a day the LEAPS call is bought)
When:
leg.leap.open == 1andleg.leap.age > 0andleg.put.open == 0Do: buy put (as put)qty leg.leap.qtydelta put_delta (0.2)dte put_dte (60)dte_min put_replace_dte + 7strike_max min(spot, if(leg.call.open == 1, leg.call.strike, spot)) - 0.001strict 1
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 |
|---|---|
leap_delta | 0.8 |
leap_dte | 730 |
leap_roll_dte | 180 |
call_delta | 0.2 |
dte | 30 |
dte_min | 25 |
dte_max | 35 |
take_pct | 50 |
manage_dte | 10 |
near_band | 0.01 |
roll_max_days | 60 |
put_delta | 0.2 |
put_dte | 60 |
put_replace_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…
Own a ~2-year 0.80 Δ LEAPS instead of shares, sell a monthly 0.20 Δ call above it and hold a 0.20 Δ put under it: a collar. Roll the LEAPS call at 6 months left.
What it is
Own a two-year 0.80 delta LEAPS instead of shares, sell a monthly 0.20 delta call above it and hold a 0.20 delta put about 60 days out under it: a collar around a LEAPS call. Calls are taken at 50% profit or rolled up and out for a credit; the put is replaced with three weeks left; the LEAPS call is rolled at six months left.
When to use it
Use it when you want steady, hedged exposure with a smoother ride than holding the LEAPS call alone, accepting a cap on big rallies in exchange.
Maximum risk
The put limits losses between rolls to roughly the distance down to its strike plus the net cost of the options. Gaps through the strike between rolls, and repeated buy-backs of the call in a strong rally, are the main costs.
Questions
Is the collar zero-cost?
Not exactly. A 0.20 delta call and a 0.20 delta put are often close in price, but put skew usually makes the put a little dearer. The backtest uses the actual prices.
What happens in a strong rally?
The call is rolled up and out for a credit when it can be; otherwise it is bought back at a loss and the LEAPS call keeps the gain.
Why roll the LEAPS call at six months instead of nine?
This version keeps the LEAPS call longer to save on roll costs, because the collar put already protects against the faster decay near the end.