{"slug":"covered-call-screener-from-the-free-sql-api","qid":"replay_outcomes","label":"replay_outcomes","post_title":"covered-call-screener-from-the-free-sql-api","post_url":"/blog/covered-call-screener-from-the-free-sql-api#q-replay_outcomes","columns":["month","calls_screened","avg_annual_yield_pct","itm_rate_all_pct","itm_rate_richest_pct"],"rows":[{"month":"2025-09","calls_screened":34,"avg_annual_yield_pct":12.5,"itm_rate_all_pct":52.9,"itm_rate_richest_pct":42.9},{"month":"2025-10","calls_screened":28,"avg_annual_yield_pct":17.9,"itm_rate_all_pct":42.9,"itm_rate_richest_pct":83.3},{"month":"2025-11","calls_screened":27,"avg_annual_yield_pct":18.4,"itm_rate_all_pct":3.7,"itm_rate_richest_pct":0},{"month":"2025-12","calls_screened":30,"avg_annual_yield_pct":15,"itm_rate_all_pct":10,"itm_rate_richest_pct":16.7},{"month":"2026-01","calls_screened":27,"avg_annual_yield_pct":15.3,"itm_rate_all_pct":14.8,"itm_rate_richest_pct":20},{"month":"2026-02","calls_screened":18,"avg_annual_yield_pct":20,"itm_rate_all_pct":0,"itm_rate_richest_pct":0},{"month":"2026-03","calls_screened":35,"avg_annual_yield_pct":15.8,"itm_rate_all_pct":5.7,"itm_rate_richest_pct":14.3},{"month":"2026-04","calls_screened":52,"avg_annual_yield_pct":15.8,"itm_rate_all_pct":92.3,"itm_rate_richest_pct":100},{"month":"2026-05","calls_screened":38,"avg_annual_yield_pct":17,"itm_rate_all_pct":57.9,"itm_rate_richest_pct":100},{"month":"2026-06","calls_screened":29,"avg_annual_yield_pct":17.8,"itm_rate_all_pct":3.4,"itm_rate_richest_pct":0},{"month":"2026-07","calls_screened":22,"avg_annual_yield_pct":20.8,"itm_rate_all_pct":40.9,"itm_rate_richest_pct":0}],"shape":"series","sql":"WITH\n    selection_days AS\n    (\n        SELECT min(date) AS session_date\n        FROM global_markets.options_greeks\n        WHERE date >= '2025-09-01' AND date < '2026-08-01'\n        GROUP BY toStartOfMonth(date)\n    ),\n    picks AS\n    (\n        SELECT\n            formatDateTime(date, '%Y-%m')      AS month,\n            underlying_symbol                  AS symbol,\n            expiration_date                    AS expiry,\n            toFloat64(strike_price)            AS strike,\n            toFloat64(option_close) / toFloat64(underlying_close)\n                * 365.0 / days_to_expiry * 100 AS annual_yield_pct\n        FROM global_markets.options_greeks\n        WHERE date >= '2025-09-01'\n          AND date <  '2026-08-01'\n          AND date IN (SELECT session_date FROM selection_days)\n          AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMD', 'KO', 'JNJ', 'XOM', 'SPY')\n          AND iv_converged = 1\n          AND volume >= 100\n          AND days_to_expiry BETWEEN 20 AND 45\n          AND delta BETWEEN 0.25 AND 0.35\n          AND toFloat64(strike_price) / toFloat64(underlying_close) - 1 BETWEEN 0.02 AND 0.12\n          AND option_close >= 0.30\n          AND expiration_date <= '2026-09-19'\n    ),\n    rich_line AS\n    (\n        SELECT\n            month,\n            avg(annual_yield_pct) * 1.5 AS cutoff\n        FROM picks\n        GROUP BY month\n    )\nSELECT\n    p.month                                                          AS month,\n    count()                                                          AS calls_screened,\n    round(avg(p.annual_yield_pct), 1)                                AS avg_annual_yield_pct,\n    round(countIf(toFloat64(u.close) > p.strike) / count() * 100, 1) AS itm_rate_all_pct,\n    round(countIf(toFloat64(u.close) > p.strike AND p.annual_yield_pct >= r.cutoff)\n          / countIf(p.annual_yield_pct >= r.cutoff) * 100, 1)        AS itm_rate_richest_pct\nFROM picks AS p\nINNER JOIN\n(\n    SELECT ticker, date, close\n    FROM global_markets.stocks_daily_aggs\n    WHERE date >= '2025-09-15'\n      AND date <= '2026-09-19'\n      AND ticker IN ('AAPL', 'MSFT', 'NVDA', 'AMD', 'KO', 'JNJ', 'XOM', 'SPY')\n) AS u ON u.ticker = p.symbol AND u.date = p.expiry\nINNER JOIN rich_line AS r ON r.month = p.month\nGROUP BY p.month\nHAVING countIf(p.annual_yield_pct >= r.cutoff) > 0\nORDER BY p.month","computed_at":"2026-09-23T14:49:23.137037+00:00","elapsed":0.006905749}