{"slug":"crypto-covered-call-etfs","qid":"capped_months","label":"capped_months","post_title":"crypto-covered-call-etfs","post_url":"/blog/crypto-covered-call-etfs#q-capped_months","columns":["symbol","months_up_over_5","months_up_over_10","months_up_over_20","months_measured"],"rows":[{"symbol":"MSTR","months_up_over_5":17,"months_up_over_10":15,"months_up_over_20":10,"months_measured":36},{"symbol":"COIN","months_up_over_5":16,"months_up_over_10":12,"months_up_over_20":8,"months_measured":36},{"symbol":"SPY","months_up_over_5":5,"months_up_over_10":0,"months_up_over_20":0,"months_measured":36}],"shape":"table","sql":"WITH monthly AS\n(\n    SELECT\n        ticker,\n        toStartOfMonth(date)           AS m,\n        argMin(toFloat64(close), date) AS first_close,\n        argMax(toFloat64(close), date) AS last_close\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker IN ('MSTR', 'COIN', 'SPY')\n      AND date >= toStartOfMonth(today() - 1095)\n      AND date <  toStartOfMonth(today())\n    GROUP BY ticker, m\n)\nSELECT\n    ticker                                        AS symbol,\n    countIf(last_close / first_close - 1 > 0.05)  AS months_up_over_5,\n    countIf(last_close / first_close - 1 > 0.10)  AS months_up_over_10,\n    countIf(last_close / first_close - 1 > 0.20)  AS months_up_over_20,\n    count()                                       AS months_measured\nFROM monthly\nGROUP BY symbol\nORDER BY months_up_over_20 DESC","computed_at":"2026-09-25T14:51:08.816230+00:00","elapsed":0.050648873}