When is a stock really delisted?
A missing symbol, a stale quote, and a formal delisting are different facts. Treating them as one state creates zombie prices, lost listings, and broken point-in-time screens.
Market data rarely announces a security’s lifecycle in one authoritative event. A ticker can disappear because it was acquired, moved venue, changed symbol, stopped trading temporarily, fell out of a provider catalog, or actually ceased to exist.
The safe question is not “Did today’s file contain this ticker?” It is “What did each source observe, when did it observe it, and which conclusion does that evidence support?”
1. Separate the lifecycle signals
A useful market-data model keeps at least four facts apart:
- Last observed price
- The latest session for which the provider published a usable bar.
- Provider availability
- Whether the symbol is still present and fresh in that provider’s feed.
- Instrument lifecycle
- Whether the security itself is active, delisted, renamed, acquired, or replaced by a new instrument using the same ticker.
- Research eligibility
- Whether the row is sufficiently current and trustworthy to enter a screen today.
Those states move on different clocks. A month of missing bars may justify excluding a symbol from a current screen, but it does not prove a delisting date. Conversely, a provider’s delisted-company catalog can supply a civil date even when the last available price ended earlier.
2. Recognize opposite failure modes
In a 2026 StockQL comparison, GES provided a clean example. The company went private in January. Financial Modeling Prep stopped its series at the $16.81 take-private price, marked the security inactive, and included it in the delisted catalog. EODHD continued publishing tiny $0.005–$0.011 values. A naive return series would interpret those placeholders as a catastrophic market move rather than a lifecycle error.
The reverse also occurs. Live symbols such as GLPG and OP disappeared from one provider’s active catalog before they stopped trading. Other apparent “zombies” were legitimate ticker reuse: a new security had inherited an old symbol. In those cases, permanently marking the bare ticker dead would discard real current data.
The lesson is domain-specific, not vendor-wide. One feed can be stronger at terminal prices while another preserves broader history. One catalog can carry a reliable date for common stocks while omitting a class such as liquidated funds. The lifecycle decision should retain those distinctions.
3. Keep the decision reversible and auditable
StockQL models provider absence separately from delisting. A symbol becomes provider-stale only after its latest price has remained old for a defined grace period. A large same-day cohort is guarded instead of being treated as mass delisting, because correlated disappearance usually points to a publication or mapping event.
Positive delisting evidence can then promote a stale row to delisted, but only when the date is valid for the current instrument tenure and does not predate a stored print. Every transition is recorded as an append-only availability event.
The reverse path matters too. If a flagged ticker appears in a current bulk file with nonzero volume, StockQL can reactivate it and backfill the missing history. If the ticker belongs to a genuinely new instrument, the old tenure is retained under a retired key and the current bare ticker receives its own stable instrument identity.
This creates a useful invariant: today’s screen can exclude unavailable data without rewriting yesterday’s universe, and new evidence can correct a lifecycle conclusion without erasing the earlier audit trail.
4. How StockQL composes the evidence
StockQL uses the broad serving feed for prices and active-universe observations, then adds independent delisting evidence where it is stronger. Fresh nonzero prints can reopen a row; a valid provider delisting date can close one; cohort guards stop a provider-wide disturbance from becoming thousands of false corporate events.
That is the value of composition. The second source is not a wholesale replacement or a vote. It contributes a narrower fact under a rule that says when that fact is allowed to change state.
Next: how missing dead-ETF history creates survivorship bias →