{"slug":"market-making-in-prediction-markets","qid":"near_expiry_risk","label":"near_expiry_risk","post_title":"market-making-in-prediction-markets","post_url":"/blog/market-making-in-prediction-markets#q-near_expiry_risk","columns":["dte_bucket","atm_iv_pct","delta_shift","contract_count"],"rows":[{"dte_bucket":"0-1d","atm_iv_pct":20.4,"delta_shift":0.275,"contract_count":2387},{"dte_bucket":"2-3d","atm_iv_pct":17.4,"delta_shift":0.229,"contract_count":3666},{"dte_bucket":"4-7d","atm_iv_pct":14.7,"delta_shift":0.191,"contract_count":9744},{"dte_bucket":"8-14d","atm_iv_pct":14.8,"delta_shift":0.149,"contract_count":13644},{"dte_bucket":"15-30d","atm_iv_pct":15.7,"delta_shift":0.103,"contract_count":9574},{"dte_bucket":"31-60d","atm_iv_pct":15.7,"delta_shift":0.075,"contract_count":10446}],"shape":"ranking","sql":"SELECT\n    multiIf(days_to_expiry <= 1,  '0-1d',\n            days_to_expiry <= 3,  '2-3d',\n            days_to_expiry <= 7,  '4-7d',\n            days_to_expiry <= 14, '8-14d',\n            days_to_expiry <= 30, '15-30d',\n                                  '31-60d')           AS dte_bucket,\n    round(100 * avg(toFloat64(implied_volatility)), 1) AS atm_iv_pct,\n    round(avg(toFloat64(gamma) * toFloat64(underlying_close)) / 100, 3) AS delta_shift,\n    count()                                            AS contract_count\nFROM global_markets.options_greeks\nWHERE underlying_symbol = 'SPY'\n  AND date >= '2026-04-01'\n  AND date <= '2026-06-30'\n  AND iv_converged = 1\n  AND volume > 0\n  AND days_to_expiry >= 0\n  AND days_to_expiry <= 60\n  AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.02\nGROUP BY dte_bucket\nORDER BY min(days_to_expiry)","computed_at":"2026-09-24T15:00:12.068737+00:00","elapsed":0.00341585}