{"slug":"how-to-calculate-covered-call-returns","qid":"capped_months","label":"AAPL by month: the stock's move against the same move capped at 5%","post_title":"How to Calculate Covered Call Returns","post_url":"/blog/how-to-calculate-covered-call-returns#q-capped_months","columns":["month","stock_pct","called_away_pct"],"rows":[{"month":"2024-08","stock_pct":2.37,"called_away_pct":2.37},{"month":"2024-09","stock_pct":1.76,"called_away_pct":1.76},{"month":"2024-10","stock_pct":-4.91,"called_away_pct":-4.91},{"month":"2024-11","stock_pct":7.12,"called_away_pct":5},{"month":"2024-12","stock_pct":5.45,"called_away_pct":5},{"month":"2025-01","stock_pct":-6.19,"called_away_pct":-6.19},{"month":"2025-02","stock_pct":3.01,"called_away_pct":3.01},{"month":"2025-03","stock_pct":-8.6,"called_away_pct":-8.6},{"month":"2025-04","stock_pct":-5.52,"called_away_pct":-5.52},{"month":"2025-05","stock_pct":-4.17,"called_away_pct":-4.17},{"month":"2025-06","stock_pct":2.57,"called_away_pct":2.57},{"month":"2025-07","stock_pct":3.48,"called_away_pct":3.48},{"month":"2025-08","stock_pct":9.13,"called_away_pct":5},{"month":"2025-09","stock_pct":9.27,"called_away_pct":5},{"month":"2025-10","stock_pct":6.52,"called_away_pct":5},{"month":"2025-11","stock_pct":3.07,"called_away_pct":3.07},{"month":"2025-12","stock_pct":-2.24,"called_away_pct":-2.24},{"month":"2026-01","stock_pct":-4.79,"called_away_pct":-4.79},{"month":"2026-02","stock_pct":1.77,"called_away_pct":1.77},{"month":"2026-03","stock_pct":-3.28,"called_away_pct":-3.28},{"month":"2026-04","stock_pct":8.4,"called_away_pct":5},{"month":"2026-05","stock_pct":12.64,"called_away_pct":5},{"month":"2026-06","stock_pct":-7.18,"called_away_pct":-7.18},{"month":"2026-07","stock_pct":6.35,"called_away_pct":5}],"shape":"series","sql":"WITH monthly AS\n(\n    SELECT\n        toStartOfMonth(toTimeZone(window_start, 'America/New_York')) AS m,\n        toFloat64(argMax(close, window_start))                       AS last_close\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'AAPL'\n      AND window_start >= '2024-07-01'\n      AND window_start <  '2026-08-01'\n    GROUP BY m\n)\nSELECT\n    formatDateTime(m, '%Y-%m')                                AS month,\n    round(100 * (last_close / prev_close - 1), 2)             AS stock_pct,\n    round(least(100 * (last_close / prev_close - 1), 5.0), 2) AS called_away_pct\nFROM\n(\n    SELECT\n        m,\n        last_close,\n        lagInFrame(last_close) OVER (ORDER BY m ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close\n    FROM monthly\n)\nWHERE prev_close > 0\nORDER BY m","computed_at":"2026-08-05T15:18:29.340920+00:00","elapsed":0.0026385}