IPO Lockup Expiry: Wetin E Mean and Release Date
IPO lockup expiry na when insiders fit sell shares, normally 180 days after listing. See where to find the exact date and how five unlocks traded.
IPO lockup na contractual ban wey stop insiders from selling their shares for one set period after listing. For traditional IPO, this period normally dey around 180 days. When the lockup expire, number of shares wey fit enter market for sale fit multiply overnight. People dey know the date months before. This page measure wetin really happen on five famous expiry days: price, volume, and options tape. E no dey make conclusion from just one anecdote.
Wetin be IPO lockup period?
Lockup na agreement, no be regulation: how long e go last, which shares e cover, and wetin fit trigger early release dey inside each deal prospectus, plus agreements wey insiders, founders, employees and pre-IPO funds sign with underwriters. While lockup still dey hold, the tradable float roughly na the shares wey dem sell for the offering; the float guide measure say H1 2026 IPOs wey list get median of just under one-third of their shares available for trading, meaning say the locked majority often pass everything wey dey trade by far. Expiry no force anybody to sell; e only make selling possible, and markets dey spend the weeks before am debating the difference.
The length dey change based on the deal type, and “180 days” na common practice, no be rule. Traditional IPOs usually use about 180 days. SPAC sponsors commonly agree to around one year, often with early release if the shares stay above a stated price. Follow-on offerings often use 90-day lockups. Many modern deals also stagger the release in tranches: employee shares on one date, early investors on another, so one date no carry the whole overhang.
How to find the actual expiration date
The real date dey inside the deal’s own filings, no be date arithmetic. The final prospectus, wey be the 424(B)(4) filed for SEC’s EDGAR site when pricing happen, explain the terms for two sections: Shares Eligible for Future Sale (how many shares go unlock, and when) and Underwriting (who dey bound, and wetin fit allow early release). Company investor-relations pages often repeat the date. Counting 180 days from the listing na fallback guess, but the guess fit miss. Lyft’s 2019 unlock happen on August 19, weeks before 180-day calculation from its March 29 listing. The deal’s own terms set the earlier date. Underwriters fit also waive a lockup early, and dem normally disclose such waivers.
Before the date: Facebook's run-in
The lockup wey market watch pass for history na Facebook release for November 14, 2012. Na that day, plenty insider shares become available at once. The claim wey people normally attach to that day be say market don price known dates in advance. The two weeks before the date na the real test:
| session | close | shares m | day change pct | vs peak close pct |
|---|---|---|---|---|
| 2012-10-22 | 19.32 | 31.1 | 0 | -16.8 |
| 2012-10-23 | 19.5 | 51.4 | 0.9 | -16 |
| 2012-10-24 | 23.21 | 193.1 | 19 | 0 |
| 2012-10-25 | 22.53 | 74.3 | -2.9 | -2.9 |
| 2012-10-26 | 21.94 | 70.7 | -2.6 | -5.5 |
| 2012-10-31 | 21.12 | 94.4 | -3.7 | -9 |
| 2012-11-01 | 21.22 | 36.3 | 0.5 | -8.6 |
| 2012-11-02 | 21.18 | 37.7 | -0.2 | -8.8 |
| 2012-11-05 | 21.25 | 31.3 | 0.3 | -8.5 |
| 2012-11-06 | 21.19 | 27.2 | -0.3 | -8.7 |
| 2012-11-07 | 20.48 | 32.7 | -3.4 | -11.8 |
| 2012-11-08 | 20 | 33.7 | -2.4 | -13.8 |
| 2012-11-09 | 19.19 | 41 | -4.1 | -17.3 |
| 2012-11-12 | 20.09 | 63 | 4.7 | -13.5 |
| 2012-11-13 | 19.88 | 70.2 | -1.1 | -14.4 |
The exact SQL behind every number
SELECT session, close, shares_m,
round((close / lagInFrame(close, 1, close) OVER (ORDER BY session) - 1) * 100, 1) AS day_change_pct,
round((close / max(close) OVER () - 1) * 100, 1) AS vs_peak_close_pct
FROM (
SELECT toString(toDate(toTimeZone(window_start, 'America/New_York'))) AS session,
round(argMax(close, window_start), 2) AS close,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'FB'
AND window_start >= toDateTime('2012-10-22 00:00:00')
AND window_start < toDateTime('2012-11-14 00:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY session
)
ORDER BY sessionFor 2012-10-24, the session after e report third-quarter results, FB close at $23.21, up 19% on 193.1 million shares. Na the highest closing price for the period. E later give back the rise before the date. On the eve of the unlock, the stock close at $19.88, -14.4% below that peak and within a few percent of the $19.5 wey e close at before the report. (The gap for the table na correct. U.S. equity markets close October 29–30, 2012 because of Hurricane Sandy.) Anybody wey really wan sell before the unlock get weeks to do am without rush. The prospectus don list the date since May.
The day itself, and the two weeks after
Then the most feared date on the young stock's calendar arrived:
| session | close | shares m | vs eve close pct |
|---|---|---|---|
| 2012-11-13 | 19.88 | 70.2 | 0 |
| 2012-11-14 | 22.36 | 216 | 12.5 |
| 2012-11-15 | 22.18 | 77 | 11.6 |
| 2012-11-16 | 23.55 | 106 | 18.5 |
| 2012-11-19 | 22.9 | 81.8 | 15.2 |
| 2012-11-20 | 23.1 | 44.8 | 16.2 |
| 2012-11-21 | 24.33 | 87.4 | 22.4 |
| 2012-11-23 | 24 | 28.3 | 20.7 |
| 2012-11-26 | 25.92 | 117.1 | 30.4 |
| 2012-11-27 | 26.16 | 82 | 31.6 |
| 2012-11-28 | 26.34 | 48 | 32.5 |
| 2012-11-29 | 27.3 | 83.7 | 37.3 |
| 2012-11-30 | 27.98 | 85.7 | 40.7 |
The exact SQL behind every number
SELECT session, close, shares_m,
round((close / first_value(close) OVER (ORDER BY session) - 1) * 100, 1) AS vs_eve_close_pct
FROM (
SELECT toString(toDate(toTimeZone(window_start, 'America/New_York'))) AS session,
round(argMax(close, window_start), 2) AS close,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'FB'
AND window_start >= toDateTime('2012-11-13 00:00:00')
AND window_start < toDateTime('2012-12-01 00:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY session
)
ORDER BY sessionOn 2012-11-14, the unlock day itself, FB close at $22.36, 12.5% above the previous day close, on 216 million shares against 70.2 million for the session before. The follow-through answer the next question wey skeptic suppose ask: did the pop survive actual insider selling? E survive, and e continue. By 2012-11-30, the stock stand 40.7% above the previous day close, while volume stay above the pre-expiry norm for most of the period. When unlocked supply dey sell, e show for volume. For this case, the tape absorb the supply while price still rise. The standard interpretation be say expiry na the event wey market participants signal well-well before time for the young stock. Fear don already enter price, and when the date arrive, e remove uncertainty instead of adding am.
Beyond Facebook: five expiries, measured
One rally na anecdote. Na the same measurement be this one: expiry-day close compared with the previous session, plus the volume multiple, across five of the most-watched unlocks for the past fifteen years. Each date na the deal’s most-reported unlock session. Some of these companies release shares in multiple tranches, so one row na one cliff, no be the whole overhang.
| ticker | expiry session | prior close | expiry close | expiry day change pct | expiry shares m | volume multiple |
|---|---|---|---|---|---|---|
| FB | 2012-11-14 | 19.88 | 22.36 | 12.5 | 216 | 3.1 |
| TWTR | 2014-05-06 | 38.72 | 31.86 | -17.7 | 123.8 | 12.3 |
| SNAP | 2017-07-31 | 13.82 | 13.68 | -1.1 | 46.8 | 2.9 |
| LYFT | 2019-08-19 | 52.51 | 51.67 | -1.6 | 22.9 | 3.9 |
| UBER | 2019-11-06 | 28.01 | 26.94 | -3.9 | 114.2 | 2.3 |
The exact SQL behind every number
WITH daily AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(close, window_start) AS close,
sum(toFloat64(volume)) AS vol
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((ticker = 'FB' AND window_start >= toDateTime('2012-11-12 00:00:00') AND window_start < toDateTime('2012-11-15 00:00:00'))
OR (ticker = 'TWTR' AND window_start >= toDateTime('2014-05-04 00:00:00') AND window_start < toDateTime('2014-05-07 00:00:00'))
OR (ticker = 'SNAP' AND window_start >= toDateTime('2017-07-27 00:00:00') AND window_start < toDateTime('2017-08-01 00:00:00'))
OR (ticker = 'LYFT' AND window_start >= toDateTime('2019-08-15 00:00:00') AND window_start < toDateTime('2019-08-20 00:00:00'))
OR (ticker = 'UBER' AND window_start >= toDateTime('2019-11-04 00:00:00') AND window_start < toDateTime('2019-11-07 00:00:00')))
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker, d
),
packed AS (
SELECT ticker, arraySort(x -> x.1, groupArray((d, close, vol))) AS rows
FROM daily
GROUP BY ticker
)
SELECT ticker,
toString(rows[-1].1) AS expiry_session,
round(rows[-2].2, 2) AS prior_close,
round(rows[-1].2, 2) AS expiry_close,
round((rows[-1].2 / rows[-2].2 - 1) * 100, 1) AS expiry_day_change_pct,
round(rows[-1].3 / 1e6, 1) AS expiry_shares_m,
round(rows[-1].3 / rows[-2].3, 1) AS volume_multiple
FROM packed
ORDER BY expiry_sessionThe distribution, no be the anecdote, na the lesson. Four out of the five close lower that day, while FB’s 12.5% rise na the outlier, no be the normal pattern. Most of the declines small: SNAP -1.1%, LYFT -1.6%, and UBER -3.9%. Without the date attached, those sessions for hardly attract notice. The exception na Twitter: -17.7% on 12.3x the previous day’s volume. Na the biggest multiple for the table, on 2014-05-06, with 123.8 million shares changing hands during the session. One marked date still fit break a stock. The thing all five rows get in common na the volume column: all five expiry sessions record at least double the previous session’s share count. Direction depend on the deal; the crowd wey show up no dey.
Options tape wey dey lead up to known date
Shareholders no be the only people wey dey position. Person wey hold shares but no fit or no wan sell before known date fit buy puts instead. That pre-positioning dey show for derivatives tape before unlock happen. Uber’s November 6, 2019 lockup expiration na the clear example inside our options-trades coverage:
| session | put contracts k | call contracts k | put share pct | prints k |
|---|---|---|---|---|
| 2019-10-23 | 11.3 | 11.6 | 49.3 | 2.8 |
| 2019-10-24 | 21.4 | 11.6 | 64.8 | 2.5 |
| 2019-10-25 | 14.3 | 13.4 | 51.7 | 2.9 |
| 2019-10-28 | 9.6 | 14.9 | 39.1 | 3.1 |
| 2019-10-29 | 43.5 | 19.4 | 69.2 | 5.6 |
| 2019-10-30 | 40 | 25.4 | 61.2 | 6.7 |
| 2019-10-31 | 51.2 | 30.9 | 62.4 | 9 |
| 2019-11-01 | 65.5 | 31.4 | 67.6 | 10.4 |
| 2019-11-04 | 171.5 | 119.6 | 58.9 | 36.6 |
| 2019-11-05 | 226.2 | 132.2 | 63.1 | 46.6 |
| 2019-11-06 | 245.3 | 116.5 | 67.8 | 41.5 |
| 2019-11-07 | 69.1 | 65.8 | 51.2 | 14.5 |
| 2019-11-08 | 51.7 | 48.6 | 51.5 | 9.6 |
The exact SQL behind every number
SELECT toString(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) AS session,
round(sumIf(size, substring(ticker, length(ticker) - 8, 1) = 'P') / 1e3, 1) AS put_contracts_k,
round(sumIf(size, substring(ticker, length(ticker) - 8, 1) = 'C') / 1e3, 1) AS call_contracts_k,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 8, 1) = 'P') / sum(size), 1) AS put_share_pct,
round(count() / 1e3, 1) AS prints_k
FROM global_markets.options_trades
WHERE ticker >= 'O:UBER19' AND ticker < 'O:UBER20'
AND sip_timestamp >= toDateTime('2019-10-23 00:00:00') AND sip_timestamp < toDateTime('2019-11-09 00:00:00')
GROUP BY session
ORDER BY sessionTwo weeks before, on 2019-10-23, UBER options tape nearly balance: puts make up 49.3% of contract volume, with 11.3 thousand put contracts. As the date near, tape become more put-heavy and much bigger. On 2019-11-06, the expiry day, 245.3 thousand put contracts trade. That one many times pass the number for when the window open. Puts make up 67.8% of all the day’s contracts. One important caveat: Uber quarterly report come out after market close on November 4 that same week. So, two marked dates dey only two sessions apart for this tape. For the session after the unlock, put share quickly return to 51.2%, nearly even, and contract count drop sharply from the peak. People dey hedge scheduled risk; after that, the hedges dey disappear.
Holding through an unlock: practitioners dey check wetin
Nothing for here be advice; na the mechanics wey worth checking. Collect the real date from the filing, the 424(B)(4), no be 180-day arithmetic, and check whether dem release am in stages. Watch volume, no be price alone: if expiry pass during ordinary volume, e mean say unlock remain theoretical, while insider supply go show for tape as dem execute the trades. Hedging a known date dey cost premium: puts for event wey everybody fit see dey usually expensive, and wetin e cost to trade options cover the spread and premium arithmetic wey any hedge go pay. Staggered releases dey reduce sharp cliffs by design, as dem spread the overhang across different dates.
The next major expiry for this site watchlist belong to SpaceX's June 12, 2026 listing. If person apply the customary 180-day convention, the window fit end around early December 2026. Na arithmetic based on the receipted listing date, no be statement of the deal actual terms. The actual terms dey for the prospectus and fit different. The SK Hynix debut join the same watchlist one month later, while the H1 2026 IPO class add more of these dates into late 2026.
Lockup expiry FAQ
IPO lockup period na wetin?
Na agreement for contract wey stop company insiders, founders, employees and pre-IPO investors from selling shares for certain period after IPO. The exact terms dey inside each deal prospectus, and underwriters fit waive dem before time.
IPO lockups dey last how long?
Normally, traditional IPO lockup dey last about 180 days. But that figure na convention. SPAC sponsor lockups often dey run for about one year, with price-based early release. Follow-on offerings commonly use 90 days. Many deals dey stagger releases across different dates.
Stocks always dey fall when lockup expire?
No. Among the five major expiries wey we measure above, four close lower. One, Facebook, for November 2012, close 12.5% higher on 3.1x volume. The worst among the five, Twitter May 2014 unlock, print -17.7% for that day. The reliable pattern na volume. Every one of the five record at least double the previous session volume. Direction no follow the same pattern.
How I fit find stock lockup expiry date?
Check the deal final prospectus, form 424(B)(4), for SEC EDGAR site. Look under Shares Eligible for Future Sale and Underwriting. Those sections state the duration, share count for each tranche and any early-release triggers. Na that version be the authoritative date, because headlines often dey approximate am.
SpaceX lockup expiry na when?
The deal actual terms dey inside its prospectus. The customary 180-day convention, applied to its June 12, 2026 listing date, point to early December 2026. Treat am as arithmetic, no be confirmed date.
Every panel above na stored, versioned query over the as-traded tape. Expand the SQL under any panel, or measure the next unlock session yourself on the Strasmore terminal.