{"slug":"broker-exercise-cutoff-times","qid":"after_close_drift","label":"Average move between the 4:00 p.m. close and 5:30 p.m. ET","post_title":"Broker Exercise Cut-Off Times Explained","post_url":"/blog/broker-exercise-cutoff-times#q-after_close_drift","columns":["ticker","friday_count","avg_abs_drift_pct","max_abs_drift_pct"],"rows":[{"ticker":"TSLA","friday_count":21,"avg_abs_drift_pct":0.266,"max_abs_drift_pct":0.87},{"ticker":"NVDA","friday_count":21,"avg_abs_drift_pct":0.188,"max_abs_drift_pct":1.25},{"ticker":"AAPL","friday_count":21,"avg_abs_drift_pct":0.157,"max_abs_drift_pct":0.5},{"ticker":"KO","friday_count":21,"avg_abs_drift_pct":0.139,"max_abs_drift_pct":0.77},{"ticker":"MSFT","friday_count":21,"avg_abs_drift_pct":0.13,"max_abs_drift_pct":0.42},{"ticker":"SPY","friday_count":21,"avg_abs_drift_pct":0.11,"max_abs_drift_pct":0.7}],"shape":"ranking","sql":"SELECT\n    ticker,\n    count()                     AS friday_count,\n    round(avg(drift_pct), 3)    AS avg_abs_drift_pct,\n    round(max(drift_pct), 2)    AS max_abs_drift_pct\nFROM\n(\n    SELECT\n        ticker,\n        session_date,\n        abs(100 * (argMaxIf(px, ts, et_minute >= 960 AND et_minute < 1050)\n                   / argMaxIf(px, ts, et_minute >= 570 AND et_minute < 960) - 1)) AS drift_pct\n    FROM\n    (\n        SELECT\n            ticker,\n            toDate(toTimeZone(window_start, 'America/New_York'))       AS session_date,\n            toHour(toTimeZone(window_start, 'America/New_York')) * 60\n              + toMinute(toTimeZone(window_start, 'America/New_York')) AS et_minute,\n            toFloat64(close)                                           AS px,\n            window_start                                               AS ts\n        FROM global_markets.delayed_stocks_minute_aggs\n        WHERE ticker IN ('AAPL', 'KO', 'MSFT', 'NVDA', 'SPY', 'TSLA')\n          AND window_start >= today() - 730\n          AND toDayOfWeek(toDate(toTimeZone(window_start, 'America/New_York'))) = 5\n          AND toDayOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) BETWEEN 15 AND 21\n    )\n    GROUP BY ticker, session_date\n    HAVING countIf(et_minute >= 960 AND et_minute < 1050) > 0\n       AND countIf(et_minute >= 570 AND et_minute < 960) > 0\n)\nGROUP BY ticker\nORDER BY avg_abs_drift_pct DESC","computed_at":"2026-08-22T04:03:40.790635+00:00","elapsed":0.325008863}