Alphanume

Insights

Withdrawn S-1 Registration Data for Event Studies

Alphanume Team · July 25, 2026

Treat an S-1 withdrawal as a later lifecycle event, measure it from dated filing and withdrawal fields, and never use eventual withdrawal status as information available on the original filing date.

Alphanume's Stock Dilution dataset records initial S-1 filings and updates a row when the registration becomes effective or is withdrawn. A withdrawn cohort can answer how long registrations remained open and how stocks behaved around the withdrawal disclosure, while preserving the original filing as a separate event.

Withdrawal removes that registration path from the active lifecycle. It does not prove the issuer abandoned every financing plan, that no securities were issued under another route, or that the stock should rise. The event changes the available-supply thesis and needs source review before an economic interpretation is assigned.

Put both clocks in the study

Clock

Fields

Question

Initial registration

filing_timestamp, accession_number

How did the market react to possible supply

Effectiveness

became_effective, effective_date

When did the registration become usable

Withdrawal

offering_withdrawn, withdrawal_date

How did the market react when this path ended

Retrieval

last_updated and saved response time

When did the research system observe the lifecycle status

A current API response can show the final withdrawal status on a row whose filing date is months earlier. That is appropriate for retrospective lifecycle analysis. A filing-date backtest must use an archived first-observed response or mask every field learned after the filing timestamp.

Retrieve then filter locally

The endpoint is GET /v1/dilution. It accepts ticker and filing-date filters, while withdrawal status is a returned field rather than a request filter. Pull the full filing cohort for a fixed range, save it, and create the withdrawn subset in code.

import os
import requests
import pandas as pd

response = requests.get(
    "https://api.alphanume.com/v1/dilution",
    headers={"X-API-Key": os.environ["ALPHANUME_API_KEY"]},
    params={"date_gte": "2025-01-01", "date_lte": "2025-12-31"},
    timeout=30,
)
response.raise_for_status()
cohort = pd.DataFrame(response.json()["data"])

withdrawn = cohort.loc[
    cohort["offering_withdrawn"].eq(1)
    & cohort["withdrawal_date"].notna()
].copy()

Keep the full cohort count next to the withdrawn count. Filtering to completed withdrawals alone cannot estimate the probability of withdrawal because effective and still-pending rows form the comparison and censoring structure.

Recompute lifecycle duration

Use filing_timestamp and withdrawal_date as the primary source fields. Treat days_to_withdrawal as a convenience value that requires validation, especially for statuses filled after initial ingestion. Recompute the elapsed calendar duration and compare it with the served field rather than assuming parity.

withdrawn["filing_timestamp"] = pd.to_datetime(
    withdrawn["filing_timestamp"], utc=True
)
withdrawn["withdrawal_date"] = pd.to_datetime(
    withdrawn["withdrawal_date"], utc=True
)
withdrawn["elapsed_calendar_days"] = (
    withdrawn["withdrawal_date"].dt.normalize()
    - withdrawn["filing_timestamp"].dt.normalize()
).dt.days

assert withdrawn["elapsed_calendar_days"].ge(0).all()

Calendar duration and trading-session duration answer different questions. Use calendar days for the regulatory lifecycle, then map the public withdrawal date to a trading calendar for returns. The served filing_url points to the original S-1, so retrieve the RW accession and URL separately through the SEC file-number trail before publishing individual examples.

Compare the right lifecycle groups

Group

Definition at analysis cutoff

Interpretation

Withdrawn

Withdrawal observed by cutoff

Registration path ended

Effective

Effectiveness observed before withdrawal

Registration reached effectiveness

Pending

Neither outcome observed by cutoff

Right-censored lifecycle

Other financing evidence

Separate source-linked event

Possible supply outside this S-1 path

Do not drop pending rows when comparing durations. They are registrations that survived at least until the cutoff. A survival framework can include that information without pretending the eventual outcome is already known. Also keep primary dilutive and resale registrations separate because withdrawal changes different supply mechanisms.

Define the market event cautiously

For a withdrawal-reaction study, the event time is when the withdrawal became public, not the earlier S-1 date. The endpoint serves withdrawal_date without an acceptance time, so a date-only study should use the first eligible session strictly after that date. An intraday rule requires a separately sourced RW acceptance timestamp, accession, and URL. Define signed and absolute returns in advance. A positive reaction can coincide with withdrawal for many reasons and does not prove the supply change caused it.

The endpoint does not provide price data, transaction costs, concurrent news, amendment history, or completed issuance. Join those sources separately and report overlapping earnings, financing, merger, or regulatory events inside the window.

Control the failure modes
  • Future leakage. Eventual withdrawal was unknown on the initial filing date.
  • Competing outcomes. Effective and pending registrations belong in the denominator.
  • Duration field. Validate convenience day counts against the underlying dates.
  • Alternative financing. One withdrawn S-1 does not close every path to raising capital.
  • Causal claims. Price behavior around withdrawal can reflect concurrent information.

Free access provides the trailing 20 trading sessions after a one-trading-session delay. Lifecycle comparisons require longer history and snapshots that preserve when status changes were observed.

Build one withdrawal audit

Follow the Stock Dilution guide, pull one filing-year cohort, and export withdrawn, effective, and pending groups at a fixed analysis cutoff. Recompute withdrawal duration, list any disagreement with the convenience field, and verify every selected source filing.

Then run separate event windows around initial registration and public withdrawal, keeping all missing and overlapping outcomes visible. Compare primary and resale rows without claiming that withdrawal guarantees a favorable supply or return outcome. That workflow measures how the thesis changed while respecting what was known at each clock.