IPO 락업 만료일 확인 방법
IPO 락업 만료일은 달력에서 세지 말고 EDGAR 최종 투자설명서의 Shares Eligible for Future Sale와 Lock-Up Agreements에서 확인해야 합니다.
락업 만료일은 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는 대규모 향후 매도와 관련된 위험요인 안에서 해당 일정을 보다 평이한 영어로 다시 설명하는 경우가 대부분입니다.
회사가 제출하는 서류에서는 나머지 서식 체계를 설명합니다.
최초 거래일이 아니라 공모가 결정일을 기준으로 계산한다
시계는 “이 투자설명서 작성일”에 시작됩니다. 이는 인수인이 공모가를 정한 날인 공모가 결정일입니다. 주식은 다음 거래 세션에 개장합니다. 차트에 처음 표시된 거래일부터 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달력상 180일 뒤에는 122개의 시장 개장이 DASH에 해당했고, 123는 RDDT에 해당했습니다. 거래일 기준으로 180일을 계산하면 실제 날짜보다 대략 두 달 늦어집니다. 이것이 또 다른 대표적인 오류입니다.
패널은 계산 결과가 휴장일에 해당하는 사례가 먼저 오도록 정렬했습니다. DASH의 공모가 결정일은 Dec 8, 2020였고, 180일째는 Sunday에 해당했습니다. 그 이후 첫 거래 세션은 Jun 7, 2021였습니다. 주식은 계약상 날짜부터 매도할 수 있게 됩니다. 다만 실제 거래는 다음 개장 이후에만 가능합니다.
180일은 규칙이 아니라 관행이다
180일 조건은 시장의 표준이지만, 의무사항이 아니라 관행입니다. 제출 서류에서 다음과 같은 변형을 확인할 수 있습니다.
- 90일: 규모가 작은 거래에서 더 흔합니다.
- 365일: 같은 거래에서 다른 주주에게는 180일을 적용하면서 창업자나 지배주주에게만 적용되는 경우가 있습니다.
- 단계적 해제: 일부 물량은 한 날짜에 해제하고 나머지는 다른 날짜에 해제하는 방식입니다. 투자설명서에는 각 물량과 날짜가 구분되어 기재됩니다.
- 주주 집단별 조건 분리: 임원과 이사, IPO 전 투자펀드, 직원이 한 거래 안에서 서로 다른 계약을 체결할 수 있습니다. 이 경우 락업 만료일이 하나로 정해지지 않습니다.
주식 수는 날짜만큼 중요합니다. 제한 물량을 해당 주식의 유통주식수와 비교하면 일정에 따라 이론적으로 추가되는 거래 가능 물량의 규모를 파악할 수 있습니다.
공시된 날짜 이후 날짜를 바꾸는 요인
- 면제: 지정된 인수인은 서면으로 주주의 제한을 조기에 해제할 수 있습니다. 시장을 대상으로 한 2차 공모와 함께 진행되는 경우가 많습니다. 이때 원래 제출된 서류의 내용 자체는 바뀌지 않습니다.
- 조기 해제 조건: 최근 계약 중에는 특정 기간 동안 주가가 IPO 가격에 일정 프리미엄을 더한 수준 이상에서 거래되고, 첫 번째 또는 두 번째 분기 실적 발표 이후라는 조건까지 충족하면 일부 물량을 해제하는 경우가 많습니다.
- 실적 발표 후 해제 기간: 계약은 통상 실적 발표 후 일정 거래일이 지나면 해제 기간을 열도록 규정합니다. 따라서 실제 적용일은 기념일 기준 계산보다 실적 발표 일정에 좌우됩니다.
- 새로운 등록: 재매도 등록신고서나 shelf 등록에 따른 매각은 자체 일정에 따라 일부 물량을 시장에 공급할 수 있습니다.
이러한 내용은 모두 제출 서류나 회사 공시에 기재됩니다. 이를 뒷받침하는 서류가 없는 일정 사이트의 날짜는 추정치일 뿐입니다.
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백만 주였습니다. 180일째를 앞둔 구간인 91~170일은 3.39백만 주였습니다. 180일째를 전후한 4주인 171~200일은 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건의 거래에 같은 가정을 적용해도 결과 범위가 크게 달라집니다. 따라서 관행이 아니라 제출 서류를 읽어야 합니다.
등록 공모 발표는 장 마감 후 나오는 경우가 많으며, 시장에서 처음 확인하는 거래는 다음 날 아침 시초가입니다. 오버나이트 갭에서는 이 구조를 설명합니다.
해당 날짜 전후의 2차 공모와 Form 144
해제와 함께 다음 두 종류의 서류가 등장합니다.
- 등록 공모: Rule 424(b)(5)에 따른 투자설명서 보충서류나 기존 주식의 재매도를 등록하는 새 S-1은 주주가 거래소에서 한 번에 한 주씩 매도하는 대신 인수인을 통해 매도한다는 뜻입니다. 서류에는 매도 주주와 매도 주식 수가 기재됩니다.
- Form 144: 관계인이 제한주식이나 지배주주 주식을 매도하려는 경우, 3개월 동안 매도 규모가 5,000주 또는 $50,000를 초과하면 매도 통지서를 제출합니다. 2023년부터 이 통지서는 EDGAR에 전자 방식으로 제출되므로 다른 서류와 함께 검색할 수 있습니다. Rule 144는 관계인의 분기별 매도 물량을 발행주식수의 1% 또는 통지서 제출 전 4주간 평균 주간 보고 거래량 중 큰 금액으로 제한합니다.
Form 4 제출서는 내부자가 실제로 매도한 내역을 기록합니다. 함께 읽으면 Form 144는 매도 의향을, Form 4는 실제 거래 내역을 보여줍니다.
2026년 상장 종목도 같은 서류 절차를 따른다
관심 있는 기업의 424B4를 열고 두 섹션을 읽은 뒤, 투자설명서 작성일을 기준으로 계산합니다. 이후 계약에 조기 해제 조건이 있는지 확인합니다. 2026년 IPO 시장에서는 상반기 거래 흐름을 다루며, SpaceX 상장 첫 달에서는 상장 후 몇 주 동안 거래 흐름이 어떻게 나타났는지 추적합니다.
예정일을 정리한 공개 표에는 주의가 필요합니다. 대부분 상장일에 180일을 더해 계산하므로 위의 두 오류가 반복됩니다. 하루의 기준일 차이와 모든 주주에게 동일한 관행이 적용된다는 가정입니다. 제출 서류가 뒷받침할 때만 날짜를 신뢰할 수 있습니다. 이 페이지에 예상 일정표를 싣지 않은 이유도 여기에 있습니다.
락업 만료일 FAQ
S-1에서 락업 만료일은 어디에 기재되는가?
두 섹션에 기재됩니다. “Shares Eligible for Future Sale”에는 해제되는 주식 수와 날짜가 일정표 형태로 나옵니다. “Underwriting” 안의 “Lock-Up Agreements”에는 계약 조건과 해제를 승인할 수 있는 인수인이 명시됩니다. 최종 424B4 투자설명서에는 공모가가 결정된 거래의 수치와 함께 두 내용이 다시 기재됩니다.
락업은 IPO일과 공모가 결정일 중 어느 날 시작되는가?
공모가 결정일입니다. 제출 서류는 “이 투자설명서 작성일” 이후 며칠이라는 방식으로 조건을 표시합니다. 이는 거래가 결정된 날이며, 주식 거래가 시작되기 하루 전입니다. 이 방식으로 계산하면 180일째에는 122개의 시장 개장이 DASH에 해당했고, 해당 날짜는 Jun 6, 2021에 속했습니다.
모든 IPO의 락업 기간은 180일인가?
아닙니다. 180일은 관행입니다. 90일과 365일 조건도 있으며, 단계적 해제로 일부 보유 물량을 더 일찍 해제할 수 있습니다. 하나의 거래 안에서도 주주 집단별로 서로 다른 계약을 체결할 수 있습니다.
투자설명서에 적힌 날짜보다 락업이 일찍 끝날 수 있는가?
그럴 수 있습니다. 인수인은 서면으로 락업을 면제할 수 있습니다. 또한 많은 계약에는 일정 기간 동안 주가가 어떻게 움직였는지를 기준으로 하는 조기 해제 조건이 포함됩니다. 실적 발표 후 기간으로 제한되는 경우도 많습니다. 조기 해제 여부는 제출 서류나 회사 공시에서 확인해야 합니다.
락업 만료 후 내부자가 매도했는지는 어떻게 확인하는가?
Form 144 통지서는 관계인의 매도 의향을 기록하고, Form 4 제출서는 완료된 내부자 거래를 기록합니다. 등록 2차 공모는 424(b)(5) 보충서류나 재매도 등록용 S-1로 확인할 수 있으며, 매도 주주도 명시됩니다.
위의 모든 수치는 세션 데이터를 대상으로 저장된 쿼리를 실행해 산출했으며, 각 패널 아래에 SQL이 제시되어 있습니다. 티커를 바꾸고 일수 구간을 조정한 뒤 Strasmore 터미널에서 같은 계산을 실행할 수 있습니다.