{"slug":"futures-price-limits-and-price-banding","qid":"overnight_gaps","label":"Between-session gaps on four equity index ETFs, 2015 to date","post_title":"Futures Price Limits and Price Banding","post_url":"/blog/futures-price-limits-and-price-banding#q-overnight_gaps","columns":["symbol","sample_size","median_gap_pct","p99_gap_pct","largest_gap_pct"],"rows":[{"symbol":"IWM","sample_size":2934,"median_gap_pct":0.381,"p99_gap_pct":3.52,"largest_gap_pct":9.08},{"symbol":"QQQ","sample_size":2940,"median_gap_pct":0.376,"p99_gap_pct":3.12,"largest_gap_pct":9.46},{"symbol":"DIA","sample_size":2940,"median_gap_pct":0.287,"p99_gap_pct":2.67,"largest_gap_pct":11.03},{"symbol":"SPY","sample_size":2945,"median_gap_pct":0.291,"p99_gap_pct":2.6,"largest_gap_pct":10.45}],"shape":"table","sql":"WITH\n    daily AS\n    (\n        SELECT\n            ticker,\n            date,\n            any(open)  AS session_open,\n            any(close) AS session_close\n        FROM global_markets.stocks_daily_aggs\n        WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')\n          AND date >= '2015-01-01'\n          AND date <  '2026-10-01'\n        GROUP BY ticker, date\n    ),\n    gaps AS\n    (\n        SELECT\n            ticker,\n            date,\n            abs(toFloat64(session_open)\n                / any(toFloat64(session_close)) OVER (PARTITION BY ticker ORDER BY date ASC\n                                                      ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)\n                - 1) AS gap\n        FROM daily\n    )\nSELECT\n    ticker                                                                       AS symbol,\n    count()                                                                      AS sample_size,\n    round(100 * quantileDeterministic(0.5)(gap, toUInt64(toYYYYMMDD(date))), 3)  AS median_gap_pct,\n    round(100 * quantileDeterministic(0.99)(gap, toUInt64(toYYYYMMDD(date))), 2) AS p99_gap_pct,\n    round(100 * max(gap), 2)                                                     AS largest_gap_pct\nFROM gaps\nWHERE isFinite(gap)\n  AND gap > 0\nGROUP BY ticker\nORDER BY p99_gap_pct DESC","computed_at":"2026-10-09T16:48:18.292295+00:00","elapsed":0.002998865}