Insights
Historical De-SPAC Data by Market-Cap Cohort
Alphanume Team · July 21, 2026
Build historical de-SPAC market-cap cohorts from completed transactions and the first supported point-in-time market capitalization after trading begins under the new ticker.
Alphanume De-SPAC Events records completed business combinations from SEC closing disclosures. Each row can include closing_date, trading_commencement_date, post-combination ticker, redemption and financing fields, and transaction values. Historical Market Cap supplies the market's as-of capitalization and shares outstanding after the new security begins trading.
The key distinction is market cap versus deal value. enterprise_value_usd and equity_value_usd are transaction figures from deal documents. They are not live market capitalization. A size-cohort study should query market_cap on a declared post-completion trading date and retain missing observations.
Set the event and size clocks
Clock | Field | Cohort rule |
|---|---|---|
Legal completion | closing_date | Confirm the completed-transaction cohort |
First new-symbol session | trading_commencement_date | Begin the market-cap search window |
Disclosure filing | date | Conservative first-known date for the database row |
Size observation | Historical Market Cap date | First supported session under a fixed rule |
A live event process can learn completion from the filing after the first new-ticker session. For a tradable backtest, do not use an earlier closing_date unless a separate timestamped source proves the event was known then. Save size_date and size_date_source beside each bucket.
One practical rule selects the first supported market-cap observation on or after both the database filing date and the first trading date, capped at five trading sessions. This favors information availability over the earliest legal event and makes missing new listings visible.
Pull completions before size
Query GET /v1/de-spac-events for the intended filing-date range. The route returns completed events only, newest first, with no pagination. Keep every row and enriched null before requesting market cap.
import os
import requests
import pandas as pd
headers = {"X-API-Key": os.environ["ALPHANUME_API_KEY"]}
response = requests.get(
"https://api.alphanume.com/v1/de-spac-events",
headers=headers,
params={"date_gte": "2020-01-01", "date_lte": "2025-12-31"},
timeout=30,
)
response.raise_for_status()
events = pd.DataFrame(response.json()["data"])
for column in ["date", "closing_date", "trading_commencement_date"]:
events[column] = pd.to_datetime(events[column], errors="coerce")
events["market_cap_search_start"] = events[["date", "trading_commencement_date"]].max(axis=1)The maximum of those two dates is a conservative availability rule, not a universal definition. Export cases with missing trading commencement, post-combination ticker, or filing date for source review rather than filling all three from the same field.
Join the first supported market cap
Join result | Treatment | Reason |
|---|---|---|
Exact start-date row | Use as the primary size observation | Matches the declared clock |
Later row within allowed window | Use with lag recorded | New-symbol coverage can begin later |
No row in window | Keep in a missing-size cohort | Dropping it biases toward easier listings |
Ticker transition conflict | Resolve with dated security identifiers | Symbol alone can attach the wrong history |
Query Historical Market Cap by new ticker across the small allowed window, follow its date-and-ticker cursor if needed, and choose the earliest qualifying row. Do not substitute deal equity value or today's market cap when no observation exists.
Once market_cap is attached, freeze bucket boundaries before loading returns. Fixed dollar buckets are easy to interpret but change real purchasing-power meaning through time. Per-date quantiles compare each cohort with contemporaries but can become unstable when few de-SPACs complete in a month. Report both boundary method and counts.
Compare dispersion, not a slogan
- Keep all completions. Start from the event table and retain missing-size rows.
- Use one return clock. Begin at the first eligible session after the event is known and size is observed.
- Preserve delistings. Use an outcome source that retains inactive securities and terminal returns.
- Report distribution. Show median, interquartile range, tails, and missing outcomes by size bucket.
- Control deal economics. Redemption, remaining trust, and PIPE fields can differ systematically by size and may be null.
Micro-cap and larger transactions can have different liquidity, spreads, float, financing, and delisting rates. A size split describes those structural differences. It does not imply every small de-SPAC fails, every large one succeeds, or completion itself is a trade signal.
Repeat the cohort assignment with size measured on the first, third, and fifth supported sessions inside the allowed window. Large bucket migration across those choices means early price discovery is driving the label. Publish that sensitivity instead of choosing whichever date creates the cleanest separation. Keep transaction equity value as a separate deal-document variable in every version.
Report the number of observations in every bucket and measurement-date version, since a thin tail can make dispersion estimates hinge on one transaction.
Run one cohort audit
Pull one year of completions, export the three event clocks, market-cap search window, selected size date, missing-size rows, bucket boundaries, and later outcome coverage. Check a sample of completion evidence against filing URLs and publish the missing-size denominator before comparing return dispersion.
Explore event economics on the De-SPAC Events page and use the De-SPAC Events guide for the completion and identity contract.