{"slug":"straddle-vs-strangle","qid":"move_frequency","label":"How often SPY moved a given distance over 21 sessions","post_title":"Straddle vs Strangle: Break-Evens and Margin","post_url":"/blog/straddle-vs-strangle#q-move_frequency","columns":["move_size","share_of_windows_pct"],"rows":[{"move_size":"2% or more","share_of_windows_pct":62.4},{"move_size":"3% or more","share_of_windows_pct":45},{"move_size":"4% or more","share_of_windows_pct":29.7},{"move_size":"5% or more","share_of_windows_pct":19.7},{"move_size":"6% or more","share_of_windows_pct":12.2},{"move_size":"8% or more","share_of_windows_pct":6},{"move_size":"10% or more","share_of_windows_pct":2.8},{"move_size":"12% or more","share_of_windows_pct":1.4}],"shape":"ranking","sql":"WITH\n    daily AS\n    (\n        SELECT\n            date,\n            max(toFloat64(close)) AS close_px\n        FROM global_markets.stocks_daily_aggs\n        WHERE ticker = 'SPY'\n          AND date >= '2011-01-01'\n          AND date <  '2026-07-01'\n        GROUP BY date\n    ),\n    spans AS\n    (\n        SELECT\n            close_px,\n            leadInFrame(close_px, 21)\n                OVER (ORDER BY date ASC ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS close_fwd\n        FROM daily\n    )\nSELECT\n    concat(toString(threshold), '% or more')                                     AS move_size,\n    round(100 * countIf(abs(100 * (close_fwd - close_px) / close_px) >= threshold)\n        / count(), 1)                                                            AS share_of_windows_pct\nFROM spans\nARRAY JOIN [2, 3, 4, 5, 6, 8, 10, 12] AS threshold\nWHERE close_fwd > 0\nGROUP BY threshold\nORDER BY threshold","computed_at":"2026-08-22T04:22:21.888892+00:00","elapsed":0.044063859}