{"slug":"asx-options-expiry-and-settlement","qid":"first_print_drift","label":"first_print_drift","post_title":"asx-options-expiry-and-settlement","post_url":"/blog/asx-options-expiry-and-settlement#q-first_print_drift","columns":["symbol","avg_move_bps"],"rows":[{"symbol":"NVDA","avg_move_bps":83.8},{"symbol":"MSFT","avg_move_bps":75.8},{"symbol":"XOM","avg_move_bps":67.5},{"symbol":"AAPL","avg_move_bps":66.4},{"symbol":"WMT","avg_move_bps":61.8},{"symbol":"JNJ","avg_move_bps":58.4},{"symbol":"PG","avg_move_bps":57.9},{"symbol":"KO","avg_move_bps":49.9}],"shape":"ranking","sql":"WITH opening_window AS (\n    SELECT\n        ticker                                               AS symbol,\n        toDate(toTimeZone(window_start, 'America/New_York')) AS session_day,\n        (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n         + toMinute(toTimeZone(window_start, 'America/New_York'))) AS et_minute,\n        toFloat64(open)                                      AS bar_open,\n        toFloat64(close)                                     AS bar_close\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'JNJ', 'PG', 'WMT', 'XOM')\n      AND window_start >= today() - 300\n      AND window_start <  today() - 2\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 600\n)\nSELECT\n    symbol,\n    round(avg(abs(half_hour_price / first_print - 1) * 10000), 1) AS avg_move_bps\nFROM\n(\n    SELECT\n        symbol,\n        session_day,\n        argMin(bar_open, et_minute)  AS first_print,\n        argMax(bar_close, et_minute) AS half_hour_price\n    FROM opening_window\n    GROUP BY symbol, session_day\n    HAVING first_print > 0\n)\nGROUP BY symbol\nORDER BY avg_move_bps DESC","computed_at":"2026-09-30T15:30:22.878563+00:00","elapsed":6.16799756}