如何查找 IPO 鎖定期到期日
IPO 鎖定期到期日應查閱最終公開說明書,而非從首次交易日起計算。本文說明在 EDGAR 找到日期的位置,以及提前解除條款可能造成的差異。
鎖定期到期日會寫入 IPO 公開說明書。最快的查找方式,是在 EDGAR 開啟發行人的最終公開說明書,查看兩個位置:「Shares Eligible for Future Sale」一節,以及「Underwriting」內的「Lock-Up Agreements」說明。兩者會分別提供可開始出售的股份數量,以及限制解除的日期。下方的計算規則是多數已發布日期出錯的原因;而其後的提前解除條件,則說明為何印出的日期有時不是實際生效日期。
如果想先了解概念,什麼是 IPO 鎖定期會說明協議的作用及簽署對象。本頁則專門用於查找日期。
鎖定期到期日寫在哪裡
每宗美國 IPO 都會留下相同的文件紀錄。開啟 EDGAR 全文搜尋,找到公司後,查看其申報文件清單。
- S-1 是註冊申報文件。從最初的公開草案起,其中就會載有鎖定期條款。後續修訂會以 S-1/A 提交,條款可能在不同版本間變更。
- 424B4 是最終公開說明書,通常在定價後兩個營業日內提交。它反映實際完成的交易。應以這份文件為準。
在文件內搜尋「lock-up」和「lockup」兩種拼法,因為申報文件對連字號的使用並不一致。答案通常分布在三個部分。
- Shares Eligible for Future Sale 是供給時程表:列出受限制股份的數量,以及各批股份符合出售資格的日期。你要找的句子通常類似「beginning 181 days after the date of this prospectus」。
- Underwriting 有時標題為「No Sales of Similar Securities」,是合約條款所在:包括簽署者、不得從事的行為、例外條款,以及哪些承銷商有權提前解除股份限制。
- Risk Factors 幾乎都會在關於未來大量出售的風險因素中,以較易理解的英文重述這項時程。
公司提交的申報文件涵蓋其餘表格代號。
從定價日計算,不是從首個交易日計算
計算起點是「the date of this prospectus」。這就是定價日,也就是承銷商確定價格的當晚。股票會在下一個交易時段開盤。若從圖表上的第一根 K 線起算 180 天,會晚一天。
計算單位也是日曆日,而非交易日;到期日還可能落在星期六。以下列出九宗知名上市案,並以各交易的定價日計算第 180 天:
每個數據背後的精確 SQL 語法
WITH ipos AS (
SELECT tupleElement(pair, 1) AS ticker,
toDate(tupleElement(pair, 2)) AS pricing_date
FROM (
SELECT arrayJoin([('LYFT', '2019-03-28'), ('UBER', '2019-05-09'),
('DASH', '2020-12-08'), ('ABNB', '2020-12-09'),
('HOOD', '2021-07-28'), ('RIVN', '2021-11-09'),
('CAVA', '2023-06-14'), ('BIRK', '2023-10-10'),
('RDDT', '2024-03-20')]) AS pair
)
),
sessions AS (
SELECT DISTINCT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2019-03-01 00:00:00')
AND window_start < toDateTime('2026-08-01 00:00:00')
)
SELECT i.ticker AS ticker,
formatDateTimeInJodaSyntax(i.pricing_date, 'MMM d, yyyy') AS pricing_date_label,
formatDateTimeInJodaSyntax(addDays(i.pricing_date, 180), 'MMM d, yyyy') AS day_180_label,
formatDateTime(addDays(i.pricing_date, 180), '%W') AS day_180_weekday,
countIf(s.session_date > i.pricing_date
AND s.session_date <= addDays(i.pricing_date, 180)) AS market_opens,
formatDateTimeInJodaSyntax(
minIf(s.session_date, s.session_date >= addDays(i.pricing_date, 180)),
'MMM d, yyyy') AS next_open_session_label
FROM ipos AS i
CROSS JOIN sessions AS s
GROUP BY i.ticker, i.pricing_date
ORDER BY (minIf(s.session_date, s.session_date >= addDays(i.pricing_date, 180))
> addDays(i.pricing_date, 180)) DESC,
i.pricing_date ASC一百八十個日曆日對應 122 個市場開盤日,涵蓋 DASH 和 123,對應 RDDT。若改用 180 個交易日計算,日期會約晚兩個月。這是另一種常見錯誤。
面板已排序,讓落在休市日的日期優先顯示。DASH 在 Dec 8, 2020 定價,第 180 天落在 Sunday,其後或當日的首個交易時段是 Jun 7, 2021。股份會在合約指定日期起可出售,但只有到下一個開盤時才可能實際成交。
180 天是慣例,不是規則
180 天期限是市場慣例,屬於普遍做法,而非強制要求。申報文件中常見的變體包括:
- 90 天,在規模較小的交易中較常見。
- 365 天,有時適用於創辦人或控制股東;同一宗交易中的其他持有人則可能適用 180 天。
- 分階段解除,部分股份在一個日期解除限制,其餘股份在另一個日期解除。公開說明書會分別列出各批股份的數量與日期。
- 依群組採用不同期限。 高階主管與董事、IPO 前基金及員工,可能在同一宗交易中分別簽署不同協議。這種情況下,根本不存在單一的鎖定期到期日。
股份數量與日期同樣重要。將受限制股份與股票流通股數比較,可了解這項時程表在紙面上增加多少可交易供給。
印出日期後,哪些因素會改變日期
- 豁免。 指定承銷商可以以書面方式提前解除持有人的限制,且經常會與有市場推介的次級發行同步進行。原始申報文件不會因此更改。
- 提前解除條件。 許多近期協議規定,若股票在指定期間內、於一定交易日數達到或高於 IPO 價格加計指定溢價的水準,且已過首次或第二次季度財報發布後的限制期,某一批股份即可提前解除。
- 財報期間開放。 協議通常會規定,財報發布後經過若干交易日,才開放解除限制窗口。這會使實際生效日期取決於財報行事曆,而非單純的週年日計算。
- 新的註冊。 再出售註冊申報文件,或依 shelf registration 進行的 takedown,可能按照各自時程將一批股份投入市場。
上述各項資訊都會出現在申報文件或公司公告中。若行事曆網站上的日期沒有任何申報文件支持,就只是猜測。
第 180 天附近的市場成交狀況
成交量是可以觀察的部分。以下是一宗上市案在首年逐週追蹤的結果,標的是 Reddit,定價日為 2024年3月20日:
每個數據背後的精確 SQL 語法
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
toFloat64(sum(volume)) AS shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'RDDT'
AND window_start >= toDateTime('2024-03-21 00:00:00')
AND window_start < toDateTime('2025-03-21 00:00:00')
GROUP BY session_date
)
SELECT toMonday(session_date) AS week,
round(avg(shares) / 1e6, 2) AS avg_daily_volume_m
FROM daily
GROUP BY week
ORDER BY week圖表涵蓋 53 週。前段期間每個交易時段平均成交 32.21 百萬股。後段期間平均成交 12.16 百萬股。再依各交易時段距離定價日的天數分組,可量化鎖定期分析者關注的時段:
每個數據背後的精確 SQL 語法
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
toFloat64(sum(volume)) AS shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'RDDT'
AND window_start >= toDateTime('2024-03-21 00:00:00')
AND window_start < toDateTime('2025-03-21 00:00:00')
GROUP BY session_date
)
SELECT multiIf(dateDiff('day', toDate('2024-03-20'), session_date) <= 30, 'Days 1-30',
dateDiff('day', toDate('2024-03-20'), session_date) <= 90, 'Days 31-90',
dateDiff('day', toDate('2024-03-20'), session_date) <= 170, 'Days 91-170',
dateDiff('day', toDate('2024-03-20'), session_date) <= 200, 'Days 171-200',
'Days 201-365') AS window_label,
round(avg(shares) / 1e6, 2) AS avg_daily_volume_m,
round(max(shares) / 1e6, 2) AS busiest_session_m
FROM daily
GROUP BY window_label
ORDER BY min(dateDiff('day', toDate('2024-03-20'), session_date))第 1 天至第 30 天每個交易時段平均成交 10.17 百萬股。第 91 天至第 170 天,也就是進入第 180 天前的期間,平均成交 3.39 百萬股。第 171 天至第 200 天,即涵蓋第 180 天前後四週的期間,平均成交 3.92 百萬股;其中最繁忙的交易時段成交 7.2 百萬股。
應將這些結果視為單一公司的紀錄,而不是普遍規則。接著以 180 天慣例為假設,套用至全部九宗上市案:
每個數據背後的精確 SQL 語法
WITH ipos AS (
SELECT tupleElement(pair, 1) AS ticker,
toDate(tupleElement(pair, 2)) AS pricing_date
FROM (
SELECT arrayJoin([('LYFT', '2019-03-28'), ('UBER', '2019-05-09'),
('DASH', '2020-12-08'), ('ABNB', '2020-12-09'),
('HOOD', '2021-07-28'), ('RIVN', '2021-11-09'),
('CAVA', '2023-06-14'), ('BIRK', '2023-10-10'),
('RDDT', '2024-03-20')]) AS pair
)
),
daily AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
toFloat64(sum(volume)) AS shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('LYFT', 'UBER', 'DASH', 'ABNB', 'HOOD', 'RIVN', 'CAVA', 'BIRK', 'RDDT')
AND window_start >= toDateTime('2019-07-01 00:00:00')
AND window_start < toDateTime('2024-11-01 00:00:00')
GROUP BY ticker, session_date
)
SELECT d.ticker AS ticker,
round(avgIf(d.shares, dateDiff('day', i.pricing_date, d.session_date) BETWEEN 120 AND 170) / 1e6, 2) AS baseline_volume_m,
round(avgIf(d.shares, dateDiff('day', i.pricing_date, d.session_date) BETWEEN 171 AND 200) / 1e6, 2) AS window_volume_m,
round(avgIf(d.shares, dateDiff('day', i.pricing_date, d.session_date) BETWEEN 171 AND 200)
/ avgIf(d.shares, dateDiff('day', i.pricing_date, d.session_date) BETWEEN 120 AND 170), 2) AS volume_ratio
FROM daily AS d
INNER JOIN ipos AS i ON d.ticker = i.ticker
GROUP BY d.ticker
HAVING countIf(dateDiff('day', i.pricing_date, d.session_date) BETWEEN 120 AND 170) >= 20
AND countIf(dateDiff('day', i.pricing_date, d.session_date) BETWEEN 171 AND 200) >= 10
ORDER BY volume_ratio DESC該比率是第 171 天至第 200 天的日均成交量,除以第 120 天至第 170 天的相同數值。若讀數接近 1,表示第 180 天前後幾週的成交狀況與此前幾週相近。UBER 的比率最高,為 4.53x,基準為每個交易時段 8.47 百萬股。LYFT 的比率最低,為 0.93x。以相同假設套用至 9 宗交易後,結果差異很大。這正是應閱讀申報文件,而非只依循慣例的原因。
註冊發行公告會在收市後發布,市場看到的第一筆成交會出現在次日開盤。隔夜跳空說明這項機制。
日期附近的次級發行與 Form 144
解除限制時,附近通常會出現兩類申報文件。
- 註冊發行。 依 Rule 424(b)(5) 提交的公開說明書補充文件,或註冊既有股份再出售的新 S-1,表示持有人是透過承銷商出售,而不是在交易所逐筆出售。文件會列出出售股東及其股份數量。
- Form 144。 關係人擬出售受限制股份或控制股份時,若在任何三個月期間內出售量超過 5,000 股或金額超過 $50,000,便須提交通知。自 2023 年起,這些通知以電子方式在 EDGAR 提交,因此可以與其他文件一起搜尋。Rule 144 也將關係人的季度出售量限制在以下兩者中的較高者:流通在外股份的 1%,或通知前四週的平均每週申報成交量。
Form 4 申報文件記錄內部人實際出售的股份。合併閱讀時,Form 144 是出售意圖,Form 4 則是實際成交紀錄。
2026 年這一批 IPO 使用相同的文件流程
針對你關注的公司,調出 424B4,閱讀上述兩個部分,從公開說明書日期起算,然後確認協議是否包含提前解除條件。2026 年 IPO 市場涵蓋上半年交易流量,而SpaceX 上市首月則追蹤該股上市後數週的成交表現。
對即將到期日期的已發布表格,還有一點需要注意。多數表格是將上市日期加上 180 天,因而重複上述兩項錯誤:一是相差一天,二是假設所有持有人都適用這項慣例。只有申報文件支持的日期才有參考價值,因此本頁不提供預測表格。
鎖定期到期日常見問答
S-1 中的鎖定期到期日在哪裡?
在兩個部分。「Shares Eligible for Future Sale」列出多少股份會解除限制,以及何時解除。「Underwriting」內的「Lock-Up Agreements」文字則列出合約條款,以及有權豁免限制的承銷商名稱。最終 424B4 公開說明書會以實際定價交易的數字重述這兩部分。
鎖定期從 IPO 日還是定價日開始?
從定價日開始。申報文件通常寫成「the date of this prospectus」後若干天,而該日期就是交易定價日,早於股票開盤一個交易時段。依此方式計算,第 180 天涵蓋 122 個市場開盤日,對 DASH 而言,第 180 天落在 Jun 6, 2021。
每宗 IPO 的鎖定期都是 180 天嗎?
不是。180 天是慣例。申報文件中也會出現 90 天和 365 天期限;分階段解除安排可能讓部分持股提前解除,而同一宗交易中的不同持有人群組也可能簽署不同協議。
鎖定期可能在公開說明書所列日期前結束嗎?
可以。承銷商可以以書面方式豁免限制。許多協議也包含提前解除條件,依股票在一段交易日窗口內的價格表現判定,且通常還會受財報發布後期間的限制。任何提前解除都應在申報文件或公司公告中確認。
如何判斷內部人在鎖定期到期後是否出售股票?
Form 144 通知記錄關係人的出售意圖,Form 4 申報文件則記錄已完成的內部人交易。註冊次級發行會以 424(b)(5) 補充文件或再出售 S-1 的形式出現,並列出出售股東。
以上每個數字都來自針對交易時段資料執行的已儲存查詢,各面板下方均附有 SQL。你可以更換 ticker、調整日期區間,並在 Strasmore terminal 執行相同的計算。