{"slug":"ipo-lockup-expiration","qid":"lockup_basket","label":"Five famous lockup expirations: expiry-day price change and volume multiple vs. the prior session","post_title":"IPO Lockup Expiration: Meaning & Release Date","post_url":"/blog/ipo-lockup-expiration#q-lockup_basket","columns":["ticker","expiry_session","prior_close","expiry_close","expiry_day_change_pct","expiry_shares_m","volume_multiple"],"rows":[{"ticker":"FB","expiry_session":"2012-11-14","prior_close":19.88,"expiry_close":22.36,"expiry_day_change_pct":12.5,"expiry_shares_m":216,"volume_multiple":3.1},{"ticker":"TWTR","expiry_session":"2014-05-06","prior_close":38.72,"expiry_close":31.86,"expiry_day_change_pct":-17.7,"expiry_shares_m":123.8,"volume_multiple":12.3},{"ticker":"SNAP","expiry_session":"2017-07-31","prior_close":13.82,"expiry_close":13.68,"expiry_day_change_pct":-1.1,"expiry_shares_m":46.8,"volume_multiple":2.9},{"ticker":"LYFT","expiry_session":"2019-08-19","prior_close":52.51,"expiry_close":51.67,"expiry_day_change_pct":-1.6,"expiry_shares_m":22.9,"volume_multiple":3.9},{"ticker":"UBER","expiry_session":"2019-11-06","prior_close":28.01,"expiry_close":26.94,"expiry_day_change_pct":-3.9,"expiry_shares_m":114.2,"volume_multiple":2.3}],"shape":"series","sql":"WITH daily AS (\n    SELECT ticker,\n           toDate(toTimeZone(window_start, 'America/New_York')) AS d,\n           argMax(close, window_start) AS close,\n           sum(toFloat64(volume)) AS vol\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ((ticker = 'FB'   AND window_start >= toDateTime('2012-11-12 00:00:00') AND window_start < toDateTime('2012-11-15 00:00:00'))\n        OR (ticker = 'TWTR' AND window_start >= toDateTime('2014-05-04 00:00:00') AND window_start < toDateTime('2014-05-07 00:00:00'))\n        OR (ticker = 'SNAP' AND window_start >= toDateTime('2017-07-27 00:00:00') AND window_start < toDateTime('2017-08-01 00:00:00'))\n        OR (ticker = 'LYFT' AND window_start >= toDateTime('2019-08-15 00:00:00') AND window_start < toDateTime('2019-08-20 00:00:00'))\n        OR (ticker = 'UBER' AND window_start >= toDateTime('2019-11-04 00:00:00') AND window_start < toDateTime('2019-11-07 00:00:00')))\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959\n    GROUP BY ticker, d\n),\npacked AS (\n    SELECT ticker, arraySort(x -> x.1, groupArray((d, close, vol))) AS rows\n    FROM daily\n    GROUP BY ticker\n)\nSELECT ticker,\n       toString(rows[-1].1) AS expiry_session,\n       round(rows[-2].2, 2) AS prior_close,\n       round(rows[-1].2, 2) AS expiry_close,\n       round((rows[-1].2 / rows[-2].2 - 1) * 100, 1) AS expiry_day_change_pct,\n       round(rows[-1].3 / 1e6, 1) AS expiry_shares_m,\n       round(rows[-1].3 / rows[-2].3, 1) AS volume_multiple\nFROM packed\nORDER BY expiry_session","computed_at":"2026-07-26T05:37:33.851640+00:00","elapsed":0.114595619}