← All backtests

Stock Repair Strategy

GrowthIncomeThetaRules built-in

Hold 100 shares and, each month, buy one at-the-money call and sell two calls repair_pct above it for about zero cost: the gains double up to the short strike. The shares cover the extra short call. Out at 7 days 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.

Unhedged: nothing protects against a crash beyond what the strategy itself holds.

Stock2020202120222023202420252026 YTDCAGRB&H CAGRMax drawdown
+25.3%+10.1+34.9%+8.0−15.1%+4.3+26.4%+2.1+26.6%+3.3+14.2%−2.2+3.7%−8.7 +15.7%+13.4%−35.2%
+59.2%+14.0+33.0%+6.2−22.6%+10.5+43.8%−10.0+28.3%+3.4+15.9%−4.3−1.6%−14.3 +19.8%+18.5%−28.2%
+26.5%+8.0+26.4%+13.1−14.9%+6.7+10.3%−4.9+10.6%+0.5+11.1%−0.3+11.4%−4.0 +11.1%+8.2%−42.5%
+13.0%−104.7+18.7%−106.5−11.0%+39.3+44.3%−194.6+62.2%−109.0+30.0%−8.9−8.5%−8.6 +19.2%+65.2%−24.7%
+49.6%−27.1+38.4%+4.6−17.7%+9.1+34.6%−13.5+30.9%+0.8+2.2%−6.4+11.9%−16.7 +19.7%+25.2%−26.0%
Gap to buy and hold: behind ahead · option prices before Feb 2024 are modelled, real quotes after

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 copy
Show flow

The strategy runs as 2 tracks side by side. Each day, the first rule whose conditions hold in each track acts.

1. Repair

  1. K0No shares: buy 100 When: shares < 100 and leg.lc.open == 0Do: buy shares qty 100
  2. R1Buy 1 at-the-money call, sell 2 higher: the repair When: shares >= 100 and leg.lc.open == 0 and leg.sc.open == 0Do: buy call (as lc) strike spot dte dte (35) dte_min dte_min (25) dte_max dte_max (50) avoid_earnings 1 strict 1; sell call (as sc) qty 2 strike leg.lc.strike * (1 + repair_pct) strike_min leg.lc.strike + 0.001 expiry leg.lc.expiry strict 1
  3. R2exit_dte left: close the spread When: leg.lc.open == 1 and leg.lc.dte <= exit_dteDo: close lc; close sc

2. Crash put

A cheap far put under whatever is held; hedge_delta 0 turns it off

  1. CP1Something is held and no crash put: buy one When: hedge_delta > 0 and leg.hedge.open == 0 and shares >= 100 or book.open > 0Do: buy put (as hedge) qty max(1, round(shares / 100)) delta hedge_delta (0) dte hedge_dte (90) dte_min hedge_replace_dte + 7 strike_max spot - 0.001 strict 1
  2. CP2Nothing left to protect: sell it When: leg.hedge.open == 1 and shares < 100 and book.open <= 1Do: close hedge
  3. CP3Down to its last month, or worth hedge_take_x its cost: sell it and buy a fresh one When: leg.hedge.open == 1 and leg.hedge.dte <= hedge_replace_dte or (hedge_take_x > 0 and leg.hedge.mark >= leg.hedge.cost * hedge_take_x)Do: close hedge; buy put (as hedge) qty max(1, round(shares / 100)) delta hedge_delta (0) dte hedge_dte (90) dte_min hedge_replace_dte + 7 strike_max spot - 0.001 strict 1

Parameters and defaults

Every named number in the rules can be changed in the Rule Builder. These are the defaults the backtest used.

ParameterDefault
repair_pct0.05
dte35
dte_min25
dte_max50
exit_dte7
hedge_delta0
hedge_dte90
hedge_replace_dte30
hedge_take_x3

Make a copy to change any of it and run your own backtest.

Trade log · every open, roll, assignment and close for SPY
Show trades

Loading…

growthincome

Hold 100 shares and, each month, buy one at-the-money call and sell two calls repair_pct above it for about zero cost: the gains double up to the short strike. The shares cover the extra short call. Out at 7 days left.

What it is

Hold 100 shares and, each month, buy one at-the-money call and sell two calls 5% above it, same expiry, for close to zero cost. Up to the short strike the position gains twice as fast as the shares; the shares cover the extra short call. The spread is closed with 7 days left and the next one opened.

When to use it

Use it on shares you hold, especially after a drop, when you expect a partial recovery and want to get back to break-even sooner.

Maximum risk

Downside is the shares', the spread adds little. Upside past the short strike is capped: the gain from the spread stops there and the extra short call is covered by the shares.

Questions

Why is it called a repair?

After a loss it lets a partial recovery count double, so the stock does not have to get all the way back to your cost.

Does it cost anything?

The 1×2 call spread is usually opened for about zero; the cost is giving up gains above the short strike.

Why run it every month in the backtest?

To show the trade-off over years: doubled gains in small rallies against a cap in big ones.

Related strategies