{"slug":"why-do-stocks-gap-overnight","qid":"premarket_path","label":"MSFT: how the January 29, 2026 gap formed, 30-minute premarket buckets","post_title":"Why Do Stocks Gap Up or Down Overnight?","post_url":"/blog/why-do-stocks-gap-overnight#q-premarket_path","columns":["et_time","price","prior_close","vs_prior_close_pct","pct_below_prior_close","shares_thousands","cum_shares_millions","cum_pct_of_regular_volume"],"rows":[{"et_time":"04:00","price":454,"prior_close":481.72,"vs_prior_close_pct":-5.75,"pct_below_prior_close":5.75,"shares_thousands":128,"cum_shares_millions":0.13,"cum_pct_of_regular_volume":0.11},{"et_time":"04:30","price":451.32,"prior_close":481.72,"vs_prior_close_pct":-6.31,"pct_below_prior_close":6.31,"shares_thousands":137,"cum_shares_millions":0.26,"cum_pct_of_regular_volume":0.23},{"et_time":"05:00","price":450.2,"prior_close":481.72,"vs_prior_close_pct":-6.54,"pct_below_prior_close":6.54,"shares_thousands":191,"cum_shares_millions":0.46,"cum_pct_of_regular_volume":0.4},{"et_time":"05:30","price":449.13,"prior_close":481.72,"vs_prior_close_pct":-6.77,"pct_below_prior_close":6.77,"shares_thousands":111,"cum_shares_millions":0.57,"cum_pct_of_regular_volume":0.5},{"et_time":"06:00","price":448.85,"prior_close":481.72,"vs_prior_close_pct":-6.82,"pct_below_prior_close":6.82,"shares_thousands":118,"cum_shares_millions":0.68,"cum_pct_of_regular_volume":0.61},{"et_time":"06:30","price":446.2,"prior_close":481.72,"vs_prior_close_pct":-7.37,"pct_below_prior_close":7.37,"shares_thousands":264,"cum_shares_millions":0.95,"cum_pct_of_regular_volume":0.84},{"et_time":"07:00","price":447.77,"prior_close":481.72,"vs_prior_close_pct":-7.05,"pct_below_prior_close":7.05,"shares_thousands":342,"cum_shares_millions":1.29,"cum_pct_of_regular_volume":1.14},{"et_time":"07:30","price":449.22,"prior_close":481.72,"vs_prior_close_pct":-6.75,"pct_below_prior_close":6.75,"shares_thousands":305,"cum_shares_millions":1.6,"cum_pct_of_regular_volume":1.41},{"et_time":"08:00","price":448.86,"prior_close":481.72,"vs_prior_close_pct":-6.82,"pct_below_prior_close":6.82,"shares_thousands":1010,"cum_shares_millions":2.61,"cum_pct_of_regular_volume":2.31},{"et_time":"08:30","price":448.59,"prior_close":481.72,"vs_prior_close_pct":-6.88,"pct_below_prior_close":6.88,"shares_thousands":597,"cum_shares_millions":3.2,"cum_pct_of_regular_volume":2.84},{"et_time":"09:00","price":439.74,"prior_close":481.72,"vs_prior_close_pct":-8.71,"pct_below_prior_close":8.71,"shares_thousands":1660,"cum_shares_millions":4.86,"cum_pct_of_regular_volume":4.31}],"shape":"series","sql":"WITH day_vol AS (\n    SELECT sum(toFloat64(volume)) AS rth_vol\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'MSFT'\n      AND window_start >= toDateTime('2026-01-29 09:30:00', 'America/New_York')\n      AND window_start < toDateTime('2026-01-29 16:00:00', 'America/New_York')\n),\nprior AS (\n    SELECT round(argMax(toFloat64(close), window_start), 2) AS prior_close\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'MSFT'\n      AND window_start >= toDateTime('2026-01-28 09:30:00', 'America/New_York')\n      AND window_start < toDateTime('2026-01-28 16:00:00', 'America/New_York')\n),\nbuckets AS (\n    SELECT toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 minute) AS bucket,\n           round(argMax(toFloat64(close), window_start), 2) AS price,\n           sum(toFloat64(volume)) AS shares\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'MSFT'\n      AND window_start >= toDateTime('2026-01-29 04:00:00', 'America/New_York')\n      AND window_start < toDateTime('2026-01-29 09:30:00', 'America/New_York')\n    GROUP BY bucket\n)\nSELECT formatDateTime(bucket, '%H:%i') AS et_time,\n       price,\n       (SELECT prior_close FROM prior) AS prior_close,\n       round(100 * (price - (SELECT prior_close FROM prior)) / (SELECT prior_close FROM prior), 2) AS vs_prior_close_pct,\n       round(abs(100 * (price - (SELECT prior_close FROM prior)) / (SELECT prior_close FROM prior)), 2) AS pct_below_prior_close,\n       round(shares / 1000) AS shares_thousands,\n       round(sum(shares) OVER (ORDER BY bucket) / 1000000, 2) AS cum_shares_millions,\n       round(100 * sum(shares) OVER (ORDER BY bucket) / (SELECT rth_vol FROM day_vol), 2) AS cum_pct_of_regular_volume\nFROM buckets\nORDER BY bucket","computed_at":"2026-07-26T06:36:49.206915+00:00","elapsed":0.098828025}