{"slug":"are-0dte-options-high-risk","qid":"strike_gamma","label":"strike_gamma","post_title":"are-0dte-options-high-risk","post_url":"/blog/are-0dte-options-high-risk#q-strike_gamma","columns":["moneyness","next_day_delta_shift","month_out_delta_shift"],"rows":[{"moneyness":"-2%","next_day_delta_shift":0.078,"month_out_delta_shift":0.071},{"moneyness":"-1.5%","next_day_delta_shift":0.131,"month_out_delta_shift":0.077},{"moneyness":"-1%","next_day_delta_shift":0.224,"month_out_delta_shift":0.081},{"moneyness":"-0.5%","next_day_delta_shift":0.372,"month_out_delta_shift":0.087},{"moneyness":"0%","next_day_delta_shift":0.497,"month_out_delta_shift":0.092},{"moneyness":"+0.5%","next_day_delta_shift":0.388,"month_out_delta_shift":0.097},{"moneyness":"+1%","next_day_delta_shift":0.211,"month_out_delta_shift":0.098},{"moneyness":"+1.5%","next_day_delta_shift":0.094,"month_out_delta_shift":0.097},{"moneyness":"+2%","next_day_delta_shift":0.042,"month_out_delta_shift":0.095}],"shape":"ranking","sql":"SELECT\n    concat(if(half_pct > 0, '+', ''), toString(half_pct / 2), '%')  AS moneyness,\n    round(avgIf(gma * spot / 100, dte <= 1), 3)                      AS next_day_delta_shift,\n    round(avgIf(gma * spot / 100, dte BETWEEN 21 AND 45), 3)         AS month_out_delta_shift\nFROM\n(\n    SELECT\n        toInt32(round((toFloat64(strike_price) / toFloat64(underlying_close) - 1) * 200)) AS half_pct,\n        days_to_expiry                                                                     AS dte,\n        toFloat64(gamma)                                                                   AS gma,\n        toFloat64(underlying_close)                                                        AS spot\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol = 'SPY'\n      AND date >= toDate('2026-06-01')\n      AND date <  toDate('2026-07-01')\n      AND ((days_to_expiry > 0 AND days_to_expiry <= 1) OR days_to_expiry BETWEEN 21 AND 45)\n      AND iv_converged = 1\n      AND volume > 0\n      AND option_close > 0\n      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.0225\n      AND ((lower(toString(option_type)) IN ('call', 'c') AND strike_price >= underlying_close)\n        OR (lower(toString(option_type)) IN ('put', 'p')  AND strike_price <  underlying_close))\n)\nGROUP BY half_pct\nHAVING countIf(dte <= 1) > 0 AND countIf(dte BETWEEN 21 AND 45) > 0\nORDER BY half_pct","computed_at":"2026-09-18T15:24:08.280444+00:00","elapsed":0.003949794}