← All backtests

Call Diagonal Spread Strategy

GrowthIncomeThetaRules built-in

With the price above its 50-day average: buy a 0.70 Δ call about 4 months out and sell a 0.30 Δ call about a month out against it (bullish). Take half on the short and sell the next; close it all with 30 days left on the long or at half the debit lost.
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.

Stock2020202120222023202420252026 YTDCAGRB&H CAGRMax drawdown
+103.6%+88.4+86.6%+59.7−25.7%−6.2+49.5%+25.2+22.7%−0.7+23.9%+7.5+8.7%−3.8 +32.7%+13.4%−27.4%
+284.9%+239.8+55.9%+29.1−26.9%+6.1+44.8%−8.9+6.0%−18.9+27.3%+7.1−7.1%−19.7 +35.3%+18.5%−30.0%
+61.2%+42.8+20.0%+6.8−27.1%−5.4+23.5%+8.4+29.8%+19.7+28.3%+16.9+11.3%−4.1 +18.6%+8.2%−44.3%
+44.1%−73.6+34.8%−90.4−26.7%+23.7+102.1%−136.8+171.8%+0.6+23.4%−15.5−4.2%−4.3 +38.3%+65.2%−38.0%
+198.0%+121.3+42.3%+8.5−28.6%−1.7+67.3%+19.1+22.9%−7.2−1.6%−10.1−6.2%−34.8 +29.0%+25.2%−32.1%
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 1 track side by side. Each day, the first rule whose conditions hold in each track acts.

1. Call diagonal

  1. INBuy the long, sell the short When: book.open == 0 and spot > sma(trend_days)Do: buy call (as long) delta long_delta (0.7) dte long_dte (120) dte_min long_dte_min (90) dte_max long_dte_max (150) strict 1; sell call (as short) delta short_delta (0.3) strike_min spot + 0.001 dte dte (30) dte_min dte_min (21) dte_max dte_max (45) avoid_earnings 1 strict 1
  2. SLHalf the debit lost: close When: book.pnl_pct <= -stop_pctDo: close long; close short
  3. EXLong down to exit_long_dte: close When: leg.long.dte <= exit_long_dteDo: close long; close short
  4. S1Short at half its credit or near expiry: close it When: leg.short.open == 1 and leg.short.pnl_pct >= take_pct or leg.short.dte <= manage_dteDo: close short
  5. S2Sell the next short When: leg.long.open == 1 and leg.short.open == 0Do: sell call (as short) delta short_delta (0.3) strike_min spot + 0.001 dte dte (30) dte_min dte_min (21) dte_max dte_max (45) avoid_earnings 1
  6. 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.

ParameterDefault
trend_days50
long_delta0.7
long_dte120
long_dte_min90
long_dte_max150
short_delta0.3
dte30
dte_min21
dte_max45
take_pct50
manage_dte5
exit_long_dte30
stop_pct50

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

With the price above its 50-day average: buy a 0.70 Δ call about 4 months out and sell a 0.30 Δ call about a month out against it (bullish). Take half on the short and sell the next; close it all with 30 days left on the long or at half the debit lost.

What it is

With the price above its 50-day average, buy a 0.70 delta call about four months out and sell a 0.30 delta call about a month out against it. The short call is closed at half its credit or near expiry and the next one sold; the whole position is closed with 30 days left on the long call, or after losing half the debit.

When to use it

Use it for a moderately bullish view at less cost than a long call or shares, with income from the short calls.

Maximum risk

The most you can lose is the net debit, plus any loss from closing a short call that the stock ran through.

Questions

How is it different from a PMCC?

The same structure with a shorter long call (about 4 months, not 2 years): cheaper, but it has to be renewed often.

Why only above the 50-day average?

A call diagonal needs the stock to hold up or rise; the trend filter keeps it out of downtrends.

What makes it lose?

A sharp drop (the long call loses value) or a sharp rally past the short strike (the short call caps the gain).

Related strategies