如何查找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是供给时间表:说明哪些股份受到限制,以及每一批股份何时具备出售资格。您要找的句子通常类似于“自本招股说明书之日起181天后开始”。
- Underwriting有时标题为“No Sales of Similar Securities”,是合同条款所在部分:说明签署方、禁止事项、例外情况,以及哪些承销商有权提前解除股份限制。
- Risk Factors几乎总会用更直白的语言,在有关未来大规模出售的风险因素中重述这份时间表。
公司提交的各类申报文件介绍其余表格类型。
从定价日计算,而不是从首个交易日计算
计时起点是“本招股说明书之日”。这指的是定价日,即承销商确定发行价的当天晚上。股票会在下一个交易日开盘。若从图表上的第一根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价格一定溢价的价格交易,且首份或第二份季度业绩已经发布,则可提前解除一批股份的限制。
- 业绩披露窗口开启。 协议通常规定,业绩报告发布后若干个交易日,解除窗口才会开启。因此,实际生效日期取决于业绩日程,而不是周年日计算。
- 新的注册文件。 转售注册声明,或通过储架注册发行的减持交易,都可能按照自身时间表将一批股份投放市场。
这些信息都会出现在申报文件或公司公告中。若日历网站上的日期没有任何申报文件支持,那只是猜测。
日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.53倍,基准日均成交量为8.47百万股。LYFT最低,为0.93倍。在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年上市公司遵循同样的文件流程
找到您关注公司的424B4文件,阅读上述两个章节,从招股说明书日期起计算,然后检查协议是否包含提前解除条件。2026年IPO市场介绍上半年的交易流,SpaceX上市首月表现则追踪该公司上市后数周的市场成交情况。
对于已发布的即将到期日期表,还需注意一点。大多数日期表都是在上市日基础上加180天生成的,因此同时重复了上述两种错误:一天的偏移,以及假设所有持有人都适用这一惯例。只有申报文件能够支持的日期才有参考价值,这也是本页不提供预测表的原因。
锁定期到期日常见问题
S-1中的锁定期到期日在哪里?
在两个章节中。“Shares Eligible for Future Sale”列出哪些股份会解除限制以及何时解除。“Underwriting”中的“Lock-Up Agreements”部分列出合同条款,并说明哪些承销商有权豁免这些限制。最终的424B4招股说明书会根据已定价交易的数据重复这两部分内容。
锁定期从IPO日还是定价日开始?
从定价日开始。申报文件通常表述为“自本招股说明书之日起若干天后”,这里的“本招股说明书之日”就是交易定价日,即股票开盘交易前一个交易日。按这种方式计算,日180对应122个市场开盘日,涉及DASH,其日180落在Jun 6, 2021。
每宗IPO的锁定期都是180天吗?
不是。180天只是惯例。申报文件中也会出现90天和365天条款;分阶段解除安排可以让部分股份更早解除限制;同一宗交易中的不同持有人群体也可能签署不同协议。
锁定期可以在招股说明书列明的日期之前结束吗?
可以。承销商可以书面豁免限制,许多协议还会根据某个交易日窗口内的股价表现设置提前解除条件,并通常要求相关期间位于业绩报告发布之后。任何提前解除都应通过申报文件或公司公告确认。
如何判断内幕人士是否在锁定期结束后出售了股份?
Form 144通知记录关联方的出售意图,Form 4文件记录已完成的内幕交易。已注册的二次发行会以424(b)(5)补充文件或转售S-1的形式出现,并列出出售股东。
以上每个数字均来自对交易日数据运行的存储查询,每个面板下方都附有SQL。您可以更换ticker、调整日期窗口,并在Strasmore终端上运行相同的计算。