Parsing IPO lock-ups from 440 prospectuses: the 90 days that aren't, and other traps

2026-11-04来源 dev.to DataEnglish

Every US IPO prospectus describes its lock-up: who agreed not to sell, for how long, and what can end it early. No structured feed carries those terms, so I read them out of the text for 440 IPOs from January 2024 to October 2026. The headline numbers came out clean (89% use 180 days or six months, 26 deals write in an early release, and on the Nasdaq Capital Market 154 of 180 lock-ups bind only insiders and the largest holders), but my first pass got a lot of them wrong. These are the traps, roughly in the order I hit them.

1. Finding the IPOs is its own problem

EDGAR full-text search is the easiest way in. I searched final prospectuses (Form 424B4) for the phrase "there has been no public market", which nearly every IPO prospectus uses, plus "lock-up". That returned 824 filings. Then:

  • Blank-check companies. 314 were SPACs (SIC code 6770). Their lock-ups work differently, so they go.
  • Direct listings and resale registrations. These also say there has been no public market, but they register existing holders' shares, and their "lock-up" passages usually say that nobody has one. 25 of them.
  • Duplicates. A repriced deal files a second 424B4 days later. Keep the later one if it follows within 30 days, otherwise keep the first: a later 424B4 can be a follow-on offering that repeats the phrase.

2. The text fights back

Prospectuses are HTML generated by filing agents, and the same words come out in many shapes:

  • 180 days and zero-width spaces between words. Normalize \xa0 and ​ to spaces before any regex.
  • lock -up, lock- up, lockup and Lock-Up, often in the same document.
  • Periods written as 180 days, 180-day, one hundred eighty (180) days, six (6) months, 6 months and until the 181st day.

Sentence splitting breaks too. "J.P. Morgan Securities LLC" and "Morgan Stanley & Co. LLC" each contain periods, and the lock-up sentence usually names the underwriters right before the parties. Splitting on . cut the subject off half my sentences, so I switched to a fixed window of characters before each match.

3. The 90 days that aren't the lock-up

My first parser took the most common period mentioned near "lock-up". In small deals it kept answering 90 days. The prospectuses describe two restrictions side by side: the company agrees not to issue new shares for 90 days or three months, and the directors, officers and big holders agree not to sell for six months. The company's promise is often repeated more times, so it wins a count.

The fix was to keep only periods whose preceding text names holders, and to prefer a long one when both appear:

HOLDER = re.compile(r'director|officer|shareholder|stockholder|holders? of|securityholder', re.I) def insider_period(passages): found = Counter() for text in passages: for pos, days in periods_in(text): # (offset, length in days)  if HOLDER.search(text[max(0, pos - 700):pos]): found[days] += 1 long_ = Counter({d: n for d, n in found.items() if d >= 120}) return (long_ or found).most_common(1)[0][0] if found else None 

That moved most of the false 90-day lock-ups to six months. A hand check of 30 random prospectuses then found the right period in 29.

4. "Earlier of" is where the real date hides

An early-release clause doesn't announce itself. The common forms:

  • Earnings-based: the period ends on "the earlier of (i) the second trading day after we publicly announce earnings for the second quarter following the most recent period for which financial statements are included in this prospectus and (ii) 180 days". To date it you need the company's earnings 8-Ks (Item 2.02) and the latest period in the prospectus.
  • Price-based: a slice is released if the stock closes 25% or 30% above the IPO price on five of ten trading days.
  • Staged: tranches on fixed days. SpaceX's prospectus lists 15 release dates, from two full trading days after its first earnings report to mid-2027.
  • "Later of": Chime's employee release starts at the later of an earnings date and day 90, so a pattern that looks only for "earlier of" misses it.

One false positive is everywhere: the blackout extension. Many large-company lock-ups say that if day 180 falls inside a trading blackout, the period runs a few days longer. That is the opposite of an early release, and it uses the same words ("earnings", "trading day"). I dropped any earnings match whose sentence mentions a blackout, then read all 26 early-release deals by hand.

5. Who signed is a different question from how long

A lock-up only binds the people who sign it. On the larger exchanges the parties are usually "our directors, executive officers and the holders of substantially all of our outstanding securities". On the Capital Market they're usually "our directors, officers and holders of 5% or more".

Classifying that sentence had its own traps:

  • The wrong sentence. "Shares purchased by our directors or officers in the directed share program will be subject to lock-up" matches "directors" and "lock-up" but says nothing about who signed. Skip sentences about directed share programs, Rule 701 and 10b5-1 plans.
  • "Certain" changes everything. "Holders of the outstanding ordinary shares" means everyone; "certain holders of the outstanding ordinary shares" doesn't.
  • Thresholds vary. 5% is the most common, but I saw 1%, 2% and 10%, and one deal that locked up "holders of not less than 95%".

A hand check of 20 found 19 right. The classifier still reads wording, not share counts: in a founder-owned company, "directors, officers and 5% holders" can cover nearly every share.

6. Which date is day 0?

Lock-ups run from the prospectus date, and the 424B4 is filed a day or two after it. Using the filing date minus one business day was wrong for about half the deals, usually by a day, so I read the stated date: "The date of this prospectus is June 3, 2026", or on many covers just the date printed after the underwriters' names, right before the table of contents. Some covers print it in capitals, and a few stated dates turned out to be a different document's, so I kept a stated date only if it fell within five days before the filing; Rule 424(b) requires the filing within two business days.

Then the counting convention. "For a period of 180 days after the date of this prospectus" restricts sales through day 180. SpaceX's own table lists day 180 as the earliest date the last tranche is available. Rather than pick one reading, the event test uses a three-day window from the day before to the day after the first sale day, which contains it either way.

What came out of it

On the day a lock-up ended, the typical stock didn't fall: across 330 standard lock-ups, the median three-day return against SPY was +0.7%, against -1.2% for the same stocks a month earlier. Volume did jump, a median 1.34 times its prior level for big deals where substantially all holders signed, and didn't move on the Capital Market, where most lock-ups name only the insiders. The full study, with the charts, an expiry calendar for November to January, and the method:

https://equibles.com/research/who-is-actually-locked-up-after-an-ipo

Has anyone found a way to get lock-up waivers systematically? Underwriters can release shares at any time, and only some deals announce it.

Data: SEC prospectuses and daily prices, processed by Equibles.

原文:https://www.a8q9.cn/en/article/parsing-ipo-lock-ups-from-440-prospectuses-the-90-days-that-aren-t-and-other-tra-0e87ca.html

相关文章