Backtesting Covered Calls: Historical Returns & Strategy Optimization

Covered calls are one of the most popular options strategies in existence—and for good reason. You own the stock, sell a call against it, and collect premium. Simple. But "simple" doesn't mean "optimized."

The difference between a poorly configured covered call and a well-optimized one can be 3–5% of annual return. That compounds into serious money over a decade. And the only way to find the optimal settings is to backtest.

In this guide, we'll use historical data to answer the questions every covered call writer asks: What delta should I sell? What DTE is best? Should I roll or let it expire? And how does it all hold up during a crash?

---

Covered Call Mechanics: A Quick Refresher

A covered call involves two positions:

  • Long 100 shares of the underlying (e.g., SPY)
  • Short 1 call option at a strike above the current price
  • Your profit comes from three sources:

  • Stock appreciation up to the strike price
  • Call premium collected (yours to keep regardless)
  • Dividends (for SPY, roughly 1.3–1.5% annually)
  • Your risk is the same as owning the stock—minus the premium buffer. If SPY drops 10%, your covered call position drops roughly 7–8% because the call premium offsets some of the loss.

    The key optimization variables are:

  • Delta (strike selection): How far out-of-the-money do you sell?
  • DTE (days to expiration): How much time until the call expires?
  • Rolling rules: When and how do you manage expiring positions?
  • Filters: Do you avoid selling calls during certain market conditions?
  • Let's test each one.

    ---

    Delta Comparison: 0.20 vs 0.30 vs 0.40

    Delta determines your strike selection. A 0.30-delta call has roughly a 30% probability of finishing in-the-money, meaning your stock gets called away about 30% of the time.

    Here's what 30 years of SPY data reveals when comparing three common delta targets. These are approximate annualized figures from backtests on OptionsPilot:

    | Metric | 20-Delta | 30-Delta | 40-Delta | Annualized premium collected~3.5%~5.2%~7.0% Frequency of assignment~18% of cycles~28% of cycles~38% of cycles Upside capture (% of SPY rally)~88%~76%~63% Annualized total return~11.8%~12.4%~11.1% Max drawdown-47%-44%-42% | Sharpe ratio | 0.58 | 0.65 | 0.61 |

    What the Data Shows

    30-delta is the sweet spot for most traders. It collects meaningful premium without sacrificing too much upside. The 20-delta variant lets the stock run more (better in strong bull markets), while the 40-delta variant collects more premium but caps gains aggressively (better in sideways or mildly bearish markets).

    The differences in max drawdown are relatively small because the call premium is a modest buffer relative to the magnitude of major crashes. During the 2008 crisis, even a 40-delta covered call still declined roughly 42%.

    When to Deviate From 30-Delta

  • Bull market conviction (VIX < 15): Consider 20-delta to capture more upside
  • Sideways market (VIX 15–20): Stick with 30-delta
  • Elevated volatility (VIX > 25): Consider 40-delta to maximize the rich premium
  • Post-crash recovery: Drop to 20-delta—the upside potential is likely the better bet
  • ---

    DTE Comparison: 7 vs 30 vs 45 vs 60

    Days to expiration determines how much theta (time decay) you're harvesting per cycle. Shorter DTE means faster decay but more frequent trading and higher transaction costs.

    | Metric | 7 DTE (Weekly) | 30 DTE (Monthly) | 45 DTE | 60 DTE | Annual premium (30-delta)~6.8%~5.2%~5.5%~5.1% Number of trades/year~52~12~8~6 Win rate74%72%73%75% Annualized return~12.1%~12.4%~12.6%~11.9% Sharpe ratio0.590.650.680.63 | Transaction costs impact | High | Moderate | Low | Low |

    What the Data Shows

    45 DTE produces the best risk-adjusted returns when accounting for realistic transaction costs. The premium collected is competitive with 30 DTE, but you trade less frequently (8 times per year vs. 12), reducing commissions and slippage drag.

    Weekly (7 DTE) covered calls collect more gross premium, but after accounting for transaction costs and the tighter management required, net returns are similar or slightly worse. They also require significantly more attention.

    Practical DTE Recommendation

  • Active traders: 30 DTE offers a good balance of premium and management frequency
  • Set-and-forget investors: 45 DTE provides the best risk-adjusted returns with minimal maintenance
  • Income maximizers: 7 DTE (weekly) generates the highest gross premium but demands daily attention
  • You can compare these directly in OptionsPilot's backtester by running the same strategy with different DTE values and reviewing the side-by-side results.

    ---

    Rolling Strategies: When to Roll and When to Let Expire

    Rolling a covered call means buying back the current short call and selling a new one at a later expiration (and sometimes a different strike). The three most common rolling approaches are:

    1. Let Expire, Then Sell New

    The simplest approach: let the call expire worthless (or get assigned and rebuy), then sell a new call. This works well with 30–45 DTE cycles.

  • Pros: Simple, low transaction costs
  • Cons: No adjustment during adverse moves
  • 2. Roll at 50% Profit

    When the call reaches 50% of its maximum value (you've captured half the premium), buy it back and sell a new one. This is a popular approach in the tastytrade community.

  • Pros: Redeploys capital sooner, increases annual premium collected by ~15–20%
  • Cons: More transactions, slightly higher costs
  • 3. Roll at 21 DTE

    Regardless of profit level, roll when there are 21 days left to expiration. This avoids the gamma risk that accelerates in the final weeks before expiration.

  • Pros: Avoids the highest-risk period for assignment, systematic
  • Cons: May leave premium on the table when theta decay is fastest
  • Backtest Results

    | Rolling Strategy | Annualized Return | Sharpe | Trades/Year | Let expire (45 DTE)12.6%0.688 Roll at 50% profit13.1%0.7112 | Roll at 21 DTE | 12.8% | 0.69 | 10 |

    Rolling at 50% profit produces the best overall results because it re-establishes the position when theta decay is most favorable, rather than waiting for the flat final days of a winning trade.

    ---

    Performance During Market Regimes

    Here's how an optimized covered call (30-delta, 45 DTE, roll at 50% profit) performed during each major SPY regime:

    Bull Markets (1993–2000, 2009–2020, 2023–2025)

  • Annual return: 10–14%
  • Comparison to SPY buy-and-hold: Lagged by 2–5% annually due to capped upside
  • Assessment: Covered calls underperform during strong bull runs. This is the cost of the strategy—you trade upside potential for premium income.
  • Bear Markets (2000–2002, 2007–2009, 2022)

  • Annual return during 2008: -38% (vs. SPY's -57%)
  • Annual return during 2022: -14% (vs. SPY's -19%)
  • Assessment: The premium buffer helped, but didn't prevent significant losses. Covered calls are not a hedge—they reduce volatility but don't eliminate downside risk.
  • Sideways Markets (2004–2006, 2015–2016)

  • Annual return: 8–12%
  • Comparison to SPY buy-and-hold: Outperformed by 3–6% annually
  • Assessment: This is where covered calls truly shine. The premium income adds return when stock appreciation is minimal.
  • High-VIX Periods

    During periods when VIX exceeded 25 (roughly 15% of the time since 1993), covered call premium was significantly richer:

  • Average premium collected: 2.1x the normal level
  • Win rate: 68% (slightly lower than average)
  • Net result: Higher absolute premium more than compensated for the slightly lower win rate
  • ---

    Optimal Covered Call Configuration

    Based on 30 years of backtesting, here's the configuration that maximizes risk-adjusted returns:

    | Parameter | Recommended Setting | Delta0.30 (adjust to 0.20 in strong bulls, 0.40 in high VIX) DTE45 days Rolling ruleRoll at 50% profit VIX filterIncrease delta to 0.40 when VIX > 25 Event avoidanceOptional—skip selling new calls 1 day before FOMC | Position sizing | 100% of equity (since stock is held long-term) |

    Backtest This Configuration

    Want to verify these numbers yourself? Here's exactly how to set it up in OptionsPilot:

  • Go to Run Backtest
  • Select "Covered Call" from the strategy presets
  • Set delta to 0.30, DTE to 45
  • Under exit rules, set profit target to 50%
  • Set the date range to the full available history
  • Click "Run Backtest"
  • The results page will show you the full equity curve, trade log, monthly returns heatmap, and all the statistics referenced in this post.

    ---

    FAQ

    Are covered calls worth it?

    Yes, if you're already holding the stock and willing to accept capped upside in exchange for income. Over 30 years, a covered call strategy on SPY has produced comparable total returns to buy-and-hold with meaningfully lower volatility. The Sharpe ratio improvement is roughly 0.15–0.20 higher.

    What happens if my covered call gets assigned?

    You sell the stock at the strike price. Since the strike was above your purchase price (or the price at the time you sold the call), you've locked in a profit on the stock portion plus the premium collected. You can then buy back the stock and sell a new covered call to restart the cycle.

    Should I sell covered calls on individual stocks or ETFs?

    ETFs like SPY are safer for covered calls because they don't have earnings risk, gap risk from company-specific events, or the potential for 20%+ single-day moves. Individual stocks can offer higher premium, but the tail risk is substantially greater.

    What's the ideal account size for covered calls on SPY?

    At SPY's current price (~$580), you need roughly $58,000 to hold 100 shares and sell 1 covered call. Smaller accounts can use ETFs like SPDR SSGA (SHY) or lower-priced underlyings, or use poor man's covered calls (diagonal spreads) to reduce capital requirements.

    ---

    Optimize Your Covered Calls With Data

    Stop guessing. Backtest your covered call strategy across 30 years of market data and find the settings that actually work.

    Start Backtesting Covered Calls →