Alphanume

Insights

S-1 Filing Data API for Event-Driven Research

Alphanume Team · August 13, 2026

Use first-known S-1 filing timestamps, point-in-time issuer size, and separate lifecycle fields to build a dilution cohort without treating registration as completed issuance.

An S-1 filing data API turns registration statements into a dated event feed. Alphanume's Stock Dilution dataset records each filing as it was known on the filing date, labels whether the registration is dilutive or a resale, attaches shares offered and market cap context, and later updates effectiveness or withdrawal fields.

The first filing creates possible future supply. It does not prove those shares were immediately sold, that the registration became effective, or that the stock must decline. A useful event study freezes the initial filing cohort, stores later lifecycle changes separately, and measures realized outcomes rather than assuming them.

Separate first-known fields from lifecycle updates

Field group

Examples

Timing rule

Filing identity

date, filing_timestamp, accession_number, root_file_number

Known when the S-1 enters EDGAR

Issuer context

ticker, company_name, market_cap_at_filing

Market cap is measured one trading day before filing

Classification

dilutive, resale, shares_offered

Describes the registration, not completed selling

Effectiveness

became_effective, effective_date, days_to_effective

Can arrive after the initial filing

Withdrawal

offering_withdrawn, withdrawal_date, days_to_withdrawal

Later resolution, not an initial-date input

Records remain in the dataset after publication. Point-in-time filing fields stay fixed, while lifecycle fields update as EFFECT or withdrawal events occur. A retrospective study can analyze time to effectiveness, but a backtest running on the filing date must not read the future value backward. Save the first-observed response if event-time reproducibility matters.

Retrieve a fixed S-1 window

The endpoint is GET /v1/dilution. Use date-range filters for cohort retrieval and read the API key from the environment. The request below pulls one quarter without assigning an outcome.

import os
import requests

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

Keep the raw response and validate unique accession_number values before filtering. The Stock Dilution guide covers strategy applications, while the field reference defines filing, classification, market-context, and lifecycle columns.

Build a small-cap filing cohort

A reproducible size screen can use market_cap_at_filing, which is attached from the session before the filing. Write the size threshold before viewing returns and keep rows with null market cap in an exclusions table. If the research independently joins Historical Market Cap, use an observation no later than the filing timestamp and retain both source dates.

import pandas as pd

frame = pd.DataFrame(events)
frame["filing_timestamp"] = pd.to_datetime(frame["filing_timestamp"], utc=True)

eligible = frame.loc[
    (frame["dilutive"] == 1)
    & (frame["market_cap_at_filing"].notna())
    & (frame["market_cap_at_filing"] <= 300_000_000)
].copy()

excluded = frame.loc[~frame.index.isin(eligible.index)].copy()
assert eligible["accession_number"].is_unique

A resale registration and a primary dilutive registration create different supply mechanisms. Keep resale in the output even when the primary screen uses dilutive=1. Also compare shares_offered with outstanding shares only when the denominators share a defensible as-of date.

Preserve the filing form and root file number as well. An issuer can amend a registration, file another statement, or move through a longer capital-raising sequence, so ticker and calendar date alone are weak deduplication keys. Accession numbers identify individual filings, while a documented root-file grouping lets the researcher decide whether later documents belong to the same registration lifecycle.

Attach outcomes after membership is frozen

Define the first tradable session after the filing timestamp. An after-close filing should not receive a same-close outcome. Measure returns over predefined sessions and keep delisted observations, ticker changes, splits, and distributions under an explicit price-data policy. The dilution API does not provide those return series or transaction costs.

Effectiveness and withdrawal can become separate later events. Do not use became_effective to filter the original filing cohort unless the study is explicitly retrospective. Otherwise it selects using information unavailable at entry and favors registrations whose later path is known.

Audit the failure modes
  • Registration versus issuance. Shares registered are possible supply, not confirmed shares sold.
  • Lifecycle leakage. Effectiveness and withdrawal fields can update after the event date.
  • Size selection. Null market cap must remain an exclusion reason, not become zero.
  • Disclosure timing. The full filing timestamp determines whether the event was public during market hours.
  • Outcome claims. One sample cannot establish a universal negative post-filing return.

Free access supplies the trailing 20 trading sessions after a one-trading-session delay. Use recent rows to validate code and field behavior. A multi-regime event study requires deeper history and a coverage report.

Save one cohort with its source evidence

Export raw API data, the predefined inclusion rule, eligible and excluded tables, source filing URLs, and the retrieval timestamp. Manually inspect five filings and compare the structured labels with their EDGAR pages. Freeze membership before adding returns, then report primary and resale registrations separately. The data-driven short research framework is related context, not evidence that this cohort is profitable.