{"slug":"the-3-5-7-rule-in-options","qid":"drawdown_clustering","label":"Worst five-session stretch and deepest in-window drawdown, July 2025 to June 2026","post_title":"The 3-5-7 Rule in Options, Examined","post_url":"/blog/the-3-5-7-rule-in-options#q-drawdown_clustering","columns":["ticker","worst_5_session_pct","deepest_drawdown_pct","pct_days_10pct_below_high"],"rows":[{"ticker":"MSFT","worst_5_session_pct":-14.41,"deepest_drawdown_pct":-34.99,"pct_days_10pct_below_high":59},{"ticker":"TSLA","worst_5_session_pct":-10.27,"deepest_drawdown_pct":-29.92,"pct_days_10pct_below_high":49},{"ticker":"NVDA","worst_5_session_pct":-10.67,"deepest_drawdown_pct":-20.28,"pct_days_10pct_below_high":34.3},{"ticker":"AAPL","worst_5_session_pct":-8,"deepest_drawdown_pct":-13.87,"pct_days_10pct_below_high":11.6},{"ticker":"JNJ","worst_5_session_pct":-5.83,"deepest_drawdown_pct":-10.91,"pct_days_10pct_below_high":2.4},{"ticker":"SPY","worst_5_session_pct":-3.81,"deepest_drawdown_pct":-9.13,"pct_days_10pct_below_high":0},{"ticker":"KO","worst_5_session_pct":-5.52,"deepest_drawdown_pct":-8.49,"pct_days_10pct_below_high":0}],"shape":"ranking","sql":"WITH daily AS (\n    SELECT ticker,\n           toDate(toTimeZone(window_start, 'America/New_York')) AS d,\n           toFloat64(argMax(close, window_start)) AS px\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('SPY', 'KO', 'JNJ', 'AAPL', 'MSFT', 'NVDA', 'TSLA')\n      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2025-07-01')\n      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959\n    GROUP BY ticker, d\n),\nwin AS (\n    SELECT ticker, d, px,\n           any(px) OVER (PARTITION BY ticker ORDER BY d\n                         ROWS BETWEEN 5 PRECEDING AND 5 PRECEDING) AS px_5_ago,\n           max(px) OVER (PARTITION BY ticker ORDER BY d\n                         ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_high\n    FROM daily\n)\nSELECT ticker,\n       round(min(100 * (px / px_5_ago - 1)), 2) AS worst_5_session_pct,\n       round(min(100 * (px / running_high - 1)), 2) AS deepest_drawdown_pct,\n       round(100 * countIf(px / running_high - 1 <= -0.1) / count(), 1) AS pct_days_10pct_below_high\nFROM win\nWHERE isFinite(px_5_ago)\nGROUP BY ticker\nORDER BY deepest_drawdown_pct","computed_at":"2026-08-15T14:55:33.647838+00:00","elapsed":0.003877941}