The same 0.30 delta AAPL write, repeated on the first session of every month
Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-10-05, from Covered Calls on AAPL: A Worked Example.
| month | month_label | strike | premium | premium_pct | move_to_expiry_pct | outcome |
|---|---|---|---|---|---|---|
| 2021-09 | September 2021 | 160 | 1.4 | 0.91 | -6.86 | kept |
| 2021-10 | October 2021 | 149 | 1.79 | 1.26 | 5.06 | called away |
| 2021-11 | November 2021 | 155 | 1.37 | 0.92 | 9.03 | called away |
| 2021-12 | December 2021 | 175 | 2.15 | 1.3 | 7.12 | called away |
| 2022-01 | January 2022 | 190 | 2.99 | 1.64 | -5.23 | kept |
| 2022-02 | February 2022 | 180 | 2.72 | 1.56 | -6.39 | kept |
| 2022-03 | March 2022 | 170 | 3 | 1.83 | 6.47 | called away |
| 2022-04 | April 2022 | 180 | 2.65 | 1.52 | -9.4 | kept |
| 2022-05 | May 2022 | 165 | 3.2 | 2.03 | -7.93 | kept |
| 2022-06 | June 2022 | 155 | 3 | 2.03 | -6.13 | kept |
| 2022-07 | July 2022 | 145 | 3.15 | 2.27 | 16.9 | called away |
| 2022-08 | August 2022 | 167.5 | 2.41 | 1.49 | -3.46 | kept |
| 2022-09 | September 2022 | 165 | 2.55 | 1.61 | -12.87 | kept |
| 2022-10 | October 2022 | 152.5 | 2.68 | 1.87 | -3.21 | kept |
| 2022-11 | November 2022 | 160 | 2.08 | 1.38 | -1.73 | kept |
| 2022-12 | December 2022 | 155 | 2.16 | 1.46 | -12.22 | kept |
| 2023-01 | January 2023 | 134 | 2.6 | 2.08 | 23.64 | called away |
| 2023-02 | February 2023 | 152.5 | 2.19 | 1.5 | 3.45 | kept |
| 2023-03 | March 2023 | 152.5 | 1.9 | 1.31 | 13.47 | called away |
| 2023-04 | April 2023 | 172.5 | 2.7 | 1.63 | 4.55 | called away |
| 2023-05 | May 2023 | 175 | 2.94 | 1.74 | 6.82 | called away |
| 2023-06 | June 2023 | 185 | 2.45 | 1.36 | 7.47 | called away |
| 2023-07 | July 2023 | 200 | 2.22 | 1.15 | -5.44 | kept |
| 2023-08 | August 2023 | 205 | 1.94 | 0.99 | -2.99 | kept |
| 2023-09 | September 2023 | 195 | 1.79 | 0.95 | -9.56 | kept |
| 2023-10 | October 2023 | 180 | 3 | 1.73 | 1.63 | kept |
| 2023-11 | November 2023 | 180 | 2.56 | 1.46 | 9.44 | called away |
| 2023-12 | December 2023 | 195 | 1.85 | 0.97 | 0.67 | kept |
| 2024-01 | January 2024 | 195 | 1.63 | 0.88 | 0.29 | kept |
| 2024-02 | February 2024 | 190 | 3.95 | 2.18 | -0.71 | kept |
| 2024-03 | March 2024 | 185 | 1.94 | 1.08 | -4.22 | kept |
| 2024-04 | April 2024 | 180 | 1.78 | 1.05 | 8.19 | called away |
| 2024-05 | May 2024 | 180 | 1.93 | 1.13 | 12.86 | called away |
| 2024-06 | June 2024 | 200 | 2.66 | 1.37 | 16.62 | called away |
| 2024-07 | July 2024 | 225 | 3.6 | 1.66 | 1.48 | kept |
| 2024-08 | August 2024 | 230 | 3.1 | 1.41 | 4.28 | kept |
| 2024-09 | September 2024 | 230 | 3.8 | 1.72 | 2.69 | kept |
| 2024-10 | October 2024 | 235 | 3.65 | 1.62 | -1.24 | kept |
| 2024-11 | November 2024 | 230 | 3.05 | 1.37 | 6.58 | called away |
| 2024-12 | December 2024 | 245 | 2.87 | 1.2 | 1.51 | kept |
| 2025-01 | January 2025 | 255 | 2.55 | 1.05 | -2.98 | kept |
| 2025-02 | February 2025 | 240 | 2.48 | 1.08 | 4.35 | kept |
| 2025-03 | March 2025 | 250 | 2.99 | 1.26 | -20.9 | kept |
| 2025-04 | April 2025 | 235 | 3.2 | 1.43 | -8.1 | kept |
| 2025-05 | May 2025 | 220 | 4.95 | 2.41 | -2.14 | kept |
| 2025-06 | June 2025 | 210 | 3.4 | 1.69 | 5.89 | called away |
| 2025-07 | July 2025 | 220 | 2.8 | 1.34 | -3.13 | kept |
| 2025-08 | August 2025 | 210 | 3.25 | 1.61 | 14.78 | called away |
| 2025-09 | September 2025 | 245 | 1.41 | 0.6 | 9.08 | called away |
| 2025-10 | October 2025 | 265 | 4.26 | 1.67 | 5.91 | called away |
| 2025-11 | November 2025 | 280 | 3.15 | 1.17 | 3.96 | kept |
| 2025-12 | December 2025 | 295 | 2.7 | 0.95 | -4.26 | kept |
| 2026-01 | January 2026 | 280 | 3.5 | 1.29 | -4.24 | kept |
| 2026-02 | February 2026 | 280 | 3.25 | 1.21 | -4.13 | kept |
| 2026-03 | March 2026 | 275 | 4.2 | 1.59 | -3.24 | kept |
| 2026-04 | April 2026 | 270 | 2.95 | 1.16 | 9.87 | called away |
| 2026-05 | May 2026 | 290 | 3.3 | 1.18 | 11.42 | called away |
| 2026-06 | June 2026 | 320 | 3.6 | 1.18 | 1.11 | kept |
| 2026-07 | July 2026 | 310 | 3.84 | 1.3 | 4.91 | kept |
| 2026-08 | August 2026 | 320 | 3.85 | 1.27 | 5.41 | kept |
| 2026-09 | September 2026 | 340 | 3.88 | 1.19 | 2.63 | kept |
- Rows × columns
- 61 × 7
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
month |
text | 61 distinct values (2021-09, 2021-10, 2021-11…) | |
month_label |
text | 61 distinct values (April 2022, April 2023, April 2024…) | |
strike |
text | 35 distinct values (134, 145, 149…) | |
premium |
number | 1.37 to 4.95 | US dollars |
premium_pct |
number | 0.6 to 2.41 | percent |
move_to_expiry_pct |
number | -20.9 to 23.64 | percent |
outcome |
text | 2 distinct values (called away, kept) |
Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.
Run it yourself
This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.
WITH month_open AS
(
SELECT min(date) AS write_date
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND lower(toString(option_type)) IN ('call', 'c')
AND toFloat64(option_close) > 0
AND date >= '2021-09-01'
GROUP BY toStartOfMonth(date)
),
picked AS
(
SELECT
write_month,
argMin(strike_usd, gap) AS strike_usd,
argMin(expiry, gap) AS expiry,
argMin(premium_usd, gap) AS premium_usd,
argMin(spot_usd, gap) AS spot_usd
FROM
(
SELECT
toStartOfMonth(date) AS write_month,
(abs(toInt32(days_to_expiry) - 30), abs(toFloat64(delta) - 0.30)) AS gap,
toFloat64(strike_price) AS strike_usd,
expiration_date AS expiry,
toFloat64(option_close) AS premium_usd,
toFloat64(underlying_close) AS spot_usd
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND lower(toString(option_type)) IN ('call', 'c')
AND toFloat64(option_close) > 0
AND toInt32(days_to_expiry) BETWEEN 21 AND 45
AND toFloat64(delta) BETWEEN 0.10 AND 0.50
AND expiration_date <= today() - 3
AND date IN (SELECT write_date FROM month_open)
)
GROUP BY write_month
)
SELECT
formatDateTime(p.write_month, '%Y-%m') AS month,
concat(monthName(p.write_month), ' ', toString(toYear(p.write_month))) AS month_label,
toString(round(p.strike_usd, 1)) AS strike,
round(p.premium_usd, 2) AS premium,
round(100 * p.premium_usd / p.spot_usd, 2) AS premium_pct,
round(100 * (toFloat64(s.close) / p.spot_usd - 1), 2) AS move_to_expiry_pct,
if(toFloat64(s.close) > p.strike_usd, 'called away', 'kept') AS outcome
FROM picked AS p
INNER JOIN
(
SELECT date, close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2021-09-01'
) AS s ON s.date = p.expiry
ORDER BY p.write_month
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.