Insights
Measuring Stock Reactions to FDA Complete Response Letters
Alphanume Team · August 12, 2026
Measure CRL stock reactions from the first public filing timestamp, with explicit event windows, confounder rules, and handling for securities that later disappear.
A defensible FDA Complete Response Letter event study begins with a de-duplicated public event panel, not a search of headlines after large price moves. Use the initial disclosure filing as the observation, map its EDGAR acceptance time to an eligible trading session, and predefine how earnings, financing, trial results, and market-wide moves will be handled. Alphanume's FDA Response Events dataset supplies adverse FDA actions disclosed in Form 8-K filings with exact filing timestamps, program identifiers, evidence fields, and market cap at filing.
The closest existing workflow is the event-study design guide. The dataset-specific work is deciding which rows are genuine first CRL disclosures and which timestamp belongs at day zero. The FDA Response Events field reference explains why one regulatory event can have multiple filing rows.
Define the event population before returns
Request event_type=crl with filing_role=initial_disclosure. That filter is essential because follow-up and resolution filings belong to the same regulatory chain. Use accession number as the row key and group by CIK plus asset_key when checking whether multiple disclosures refer to one program. Keep amendments visible during review, but do not let an 8-K/A become a new CRL unless the study explicitly concerns amended disclosure.
Input | Event-study role | Common error |
|---|---|---|
filing_timestamp | Public event clock | Using filing date without before-close logic |
filing_role | Separates first disclosure from updates | Counting every filing as a new CRL |
asset_key and CIK | Program-level grouping | Grouping by ticker after a rename |
market_cap_at_filing | Point-in-time size control | Joining current market cap |
filing_url | Primary evidence | Classifying from a later news recap |
The dataset covers 8-K disclosures, not every CRL issued by FDA. State that sampling frame. The first disclosed event can arrive after the letter date, and the market cannot trade on a private letter merely because the date is later mentioned in a filing. Use event_letter_date for disclosure-latency research, not as the default market event clock.
Map timestamps to day zero
Write one market-session rule and apply it to every event. A filing accepted before the chosen close cutoff can map to that session if the security was open and tradable. A filing accepted after the close maps to the next eligible session. Weekends and holidays map forward. Record the raw timestamp, its offset, the mapped session, and the rule version so the mapping can be audited.
GET /v1/biotech/fda-response-events
event_type=crl
filing_role=initial_disclosure
date_gte=2024-01-01
date_lte=2025-12-31
event_key = accession_number
day_zero = session_map(filing_timestamp, close_rule)
size_bucket = bucket(market_cap_at_filing)
program_key = cik + ":" + asset_key
windows = [-1, 1], [0, 1], [0, 5]
save filing_url and every exclusion reasonShort windows reduce the chance that unrelated information dominates, but they do not eliminate it. Report several prespecified windows instead of choosing the one with the strongest result. If intraday data are unavailable, describe day zero as a session mapping rather than an exact reaction interval.
Control for market, size, and confounders
Estimate abnormal returns against a stated benchmark or matched control design. Market cap at filing is already aligned to the last session before the disclosure, which is preferable to a current value. A stronger matched design can also condition on sector, liquidity, and pre-event volatility, provided those controls are point in time. Do not use fields learned from later resolution filings to select the initial-event sample.
- Flag earnings releases, financing announcements, clinical data, and merger news in the same filing or event window.
- Run results with and without confounded events rather than deleting them silently.
- Keep severity evidence separate from realized stock loss because the grade is regulatory precedence, not market impact.
- Report missing market-cap and price coverage before calculating averages.
The event sample is naturally sparse, so standard errors and the influence of individual observations matter. Show medians, distributions, and event-level results alongside means. If one micro-cap dominates an equal-weighted average, the study should make that visible.
Handle halts, delistings, and missing prices
The most damaging failure mode is dropping a security because a clean post-event price cannot be found. A halt, delisting, ticker change, or terminal decline is economically meaningful missingness. Keep those events in the denominator, identify the last observable price, and publish a separate missing-outcome table. Do not forward-fill across a halt and call the flat line a zero return.
A second failure is survivorship bias in the source universe. Join by dated identifiers where possible, not by today's ticker list. Preserve CIK and accession number even when the symbol changes. If the study excludes OTC or nonstandard securities, make that rule prospective and disclose the number removed.
Produce a reproducible event sheet
The concrete next action is to pull a completed two-year CRL window and create one row per initial disclosure. Add the mapped day zero, market-cap bucket, benchmark, event-window returns, confounder flags, and an outcome-status field for traded, halted, delisted, or unavailable. Open every filing in a small pilot and confirm the CRL and timestamp. Publish the inclusion flow before any aggregate chart. That sheet makes the research reproducible and shows where the conclusion depends on thin or unavailable market data.