Insights
Using Share-Count Changes to Audit Dilution Data
Alphanume Team · August 9, 2026
Use dated shares outstanding to audit whether a registered dilution event is followed by a measurable share-count change, while treating the change as corroboration rather than proof that one filing caused it.
Alphanume's Dilution dataset records S-1 registration statements as filing events. Its dilutive flag identifies filings that register new shares, resale separates existing-holder resale, and lifecycle fields show later effectiveness or withdrawal. Historical Market Cap supplies shares_outstanding and market_cap as they stood on each covered trading date.
The audit joins those two contracts without collapsing them. Registration means shares were authorized for sale through that filing path. It does not mean the full registered amount was issued immediately, or ever. A later increase in shares outstanding can support the timing of completed issuance, though conversions, employee compensation, acquisitions, other offerings, and source revisions can also move the count.
Separate registration from issuance
Observation | What it supports | What it cannot prove alone |
|---|---|---|
dilutive = 1 | The filing was classified as registering new supply | That shares reached the market |
shares_offered | Shares registered in the filing | Final issued shares or proceeds |
became_effective = 1 | The registration was declared effective | That every registered share was sold |
offering_withdrawn = 1 | The filing was withdrawn | That no other financing occurred |
shares_outstanding increase | More company-level shares appear in the dated series | Which transaction caused the change |
This is why shares outstanding works well as an audit field. It can flag registrations whose later share path deserves review, including an apparently large offering followed by no observed count change and a small registration followed by a much larger jump. Both are questions for the filing history, not automatic data errors.
The dilution short failure-mode review explains why filing labels and completed supply should remain separate.
Build a dated filing table
Start with every S-1 row in the research window and keep its filing date, exact Eastern Time filing timestamp, ticker as of filing, dilutive and resale labels, registered shares, pre-filing market cap, effectiveness fields, withdrawal fields, accession number, and filing URL. Save this event file before querying share history.
filing_fields = [
"date", "filing_timestamp", "ticker", "dilutive", "resale",
"shares_offered", "market_cap_at_filing", "became_effective",
"effective_date", "offering_withdrawn", "withdrawal_date",
"accession_number", "filing_url", "last_updated",
]
# One audit row per filing. Keep lifecycle fields as observed in each snapshot.
filings = dilution_rows[filing_fields].copy()
filings["filing_date"] = pd.to_datetime(filings["date"])
filings.to_parquet("dilution_filings_raw.parquet", index=False)Lifecycle fields update when a registration becomes effective or is withdrawn. Preserve the first-observed filing row and later revisions separately, or the final outcome will leak backward into the original event decision. last_updated is useful for tracking that evolution.
Measure the share-count path
For each filing ticker, query Historical Market Cap across a window that begins before the filing and continues after the relevant effectiveness or withdrawal milestone. Ticker-scoped ranges can span the required audit window. Market-wide ranges without a ticker are capped at seven calendar days, so per-event ticker pulls are the practical shape here.
import os
import requests
def get_share_history(ticker, start, end):
response = requests.get(
"https://api.alphanume.com/v1/historical-market-cap",
headers={"X-API-Key": os.environ["ALPHANUME_API_KEY"]},
params={"ticker": ticker, "date_gte": start, "date_lte": end},
timeout=30,
)
response.raise_for_status()
return response.json()["data"]
# Page with cursor_date and cursor_ticker if has_more is true.
share_rows = get_share_history("AAPL", "2026-01-01", "2026-06-30")For large single-name histories, follow next_cursor with both cursor_date and cursor_ticker. Use the last observed count before filing as the baseline, then measure the first stable post-event plateau under a written rule. One-day differences can reflect timing noise or data updates, so retain the entire path rather than only two endpoints.
Flag mismatches for source review
Audit flag | Example condition | Next review |
|---|---|---|
registered_no_change | Large dilutive shares_offered and flat later count | Check effectiveness, withdrawal, pricing, and partial issuance |
change_no_scale_match | Count increase far exceeds registered shares | Search other offerings, conversions, or acquisitions |
resale_with_change | Resale filing coincides with a larger count | Check whether the filing also contains primary shares |
pre_effective_change | Count rises before effective_date | Review timing and other corporate actions |
missing_history | No baseline or post-event count | Check ticker coverage and identifier changes |
Treat tolerance as a declared research parameter. Rounding, reporting cadence, and several transactions close together can prevent exact equality between shares_offered and the observed change. The audit should prioritize filing review, not auto-label causation.
Know what share counts miss
- Shares outstanding is a company-level count and is not free float or immediately tradable supply.
- Ticker changes and reorganizations can break a single-symbol history.
- Market-cap data contains no standalone price field and does not repair corporate-action adjustments in another price source.
- A filing can register shares in tranches, price below expectations, remain pending, or be superseded.
- A share increase near the event establishes timing overlap and does not establish that the filing caused the full change.
Audit one filing month
Pull one month of dilution filings and save the first-observed event rows. For each ticker, retrieve a pre-filing and post-lifecycle share-count window, calculate the percentage change from the last pre-filing observation, and assign the mismatch flags above. Export every missing history and ambiguous cause for manual filing review.
Inspect the point-in-time fields on the Historical Market Cap dataset page, then follow the Historical Market Cap guide for coverage and pagination details. The output is a filing audit queue, not a causal label.