← All backtests

Put Ratio Spread 1×2 Strategy

IncomeThetaRules built-in

Instead of a plain CSP: buy a 0.30 Δ put and sell two puts ratio_width below it. If the price nears the short strike, close the spread and keep one short put: a CSP, run like the wheel.
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
+4.4%−10.8−1.0%−27.9+3.3%+22.8+7.2%−17.1+7.6%−15.8+7.5%−8.9+5.2%−7.3 +5.0%+13.4%−11.1%
+2.1%−43.1+2.1%−24.7+1.7%+34.7+6.0%−47.8+9.3%−15.6+8.1%−12.1+9.3%−3.4 +5.6%+18.5%−4.8%
+4.4%−14.0+4.2%−9.0+11.9%+33.5+9.3%−5.8+7.4%−2.7+1.9%−9.5+7.4%−8.0 +6.8%+8.2%−21.7%
+1.0%−116.7+4.0%−121.2−0.8%+49.6+13.0%−225.9+15.8%−155.4+17.1%−21.8+7.7%+7.6 +8.2%+65.2%−8.0%
+9.8%−66.9+5.8%−28.0+7.2%+34.1+8.7%−39.5+8.0%−22.1+5.5%−3.1+12.2%−16.4 +8.3%+25.2%−12.4%
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 4 tracks side by side. Each day, the first rule whose conditions hold in each track acts.

1. 1×2 ratio

Buy 1 put, sell 2 below it; at the short strike, close the spread and keep a CSP

  1. INOpen the 1×2 When: shares == 0 and leg.lput.open == 0 and leg.sput1.open == 0 and leg.sput2.open == 0 and leg.call.open == 0Do: buy put (as lput) delta long_delta (0.3) dte dte (30) dte_min dte_min (21) dte_max dte_max (45) avoid_earnings 1 strict 1; sell put (as sput1) strike leg.lput.strike - spot * ratio_width strike_max leg.lput.strike - 0.001 expiry leg.lput.expiry strict 1; sell put (as sput2) strike leg.sput1.strike expiry leg.lput.expiry strict 1
  2. DFNear the short strike: close the 1×1 spread, keep one short put (a CSP) When: leg.lput.open == 1 and spot <= leg.sput1.strike * (1 + test_pct)Do: close lput; close sput2
  3. EXexit_dte left and never threatened: close it all When: leg.lput.open == 1 and leg.lput.dte <= exit_dteDo: close lput; close sput1; close sput2

2. Kept put

The short put kept from the spread, run like a CSP

  1. R1aHalf its credit kept: buy it back When: leg.lput.open == 0 and leg.sput1.pnl_pct >= take_pctDo: close sput1
  2. R1bJust in the money near expiry: roll out for a credit, or take the shares When: leg.lput.open == 0 and leg.sput1.dte <= manage_dte and spot < leg.sput1.strike and (leg.sput1.strike - spot) / leg.sput1.strike <= near_bandDo: roll sput1 dte dte (30) dte_min dte_min (21) dte_max dte_max (45) avoid_earnings 1 strike_max leg.sput1.strike scan strike_desc require new.mark > leg.sput1.mark

3. Covered call

Assigned: calls at or above the adjusted basis until the shares are called

  1. C2Sell the call nearest the money, at or above the basis When: shares >= 100 and leg.call.open == 0Do: sell call (as call) qty shares / 100 strike spot strike_min adj_basis dte dte (30) dte_min dte_min (21) dte_max dte_max (45) avoid_earnings 1
  2. R5aHalf the credit kept: buy it back When: leg.call.pnl_pct >= take_pctDo: close call
  3. R5bJust in the money near expiry: roll up and out for a credit, or let the shares go When: leg.call.dte <= manage_dte and spot > leg.call.strike and (spot - leg.call.strike) / leg.call.strike <= near_bandDo: roll call dte dte (30) dte_min dte_min (21) dte_max dte_max (45) avoid_earnings 1 strike_min max(leg.call.strike, adj_basis) strike_max max(leg.call.strike, spot * 1.02) scan strike_desc require new.mark > leg.call.mark

4. 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
long_delta0.3
ratio_width0.03
dte30
dte_min21
dte_max45
test_pct0.01
exit_dte2
take_pct50
manage_dte2
near_band0.03
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…

income

Instead of a plain CSP: buy a 0.30 Δ put and sell two puts ratio_width below it. If the price nears the short strike, close the spread and keep one short put: a CSP, run like the wheel.

What it is

Instead of selling a plain put, buy one 0.30 delta put and sell two puts a few percent below it, about 30 days out, usually for a small credit. If the price nears the short strike, close the one-by-one spread and keep a single short put, then run it like the wheel.

When to use it

Use it in place of a cash-secured put when you are mildly bullish to neutral and want a profit zone between the strikes, with the same willingness to own the shares if the price falls through.

Maximum risk

Below the lower strike the extra short put behaves like a cash-secured put, so the worst case is close to owning shares from that strike down. Between the strikes the trade profits; above the long strike only the small credit (or debit) remains.

Questions

Why a 1×2 instead of a cash-secured put?

The long put pays for itself between the strikes, so a moderate fall can make more than a plain short put would.

What happens when the price nears the short strike?

The one-by-one part is closed while it holds its value, leaving one short put: a cash-secured put managed like the wheel.

How much cash does it need?

About the same as one cash-secured put at the lower strike, because one short put is covered by the long put above it.

Related strategies