{
 "title": "When is a stock really delisted? \u2014 StockQL",
 "description": "Separate missing prices, provider availability, ticker reuse, and formal delisting evidence without creating zombie securities.",
 "url": "https://stockql.ai/blog/when-is-a-stock-really-delisted.html",
 "slug": "blog/when-is-a-stock-really-delisted",
 "published": "2026-09-13",
 "site": "StockQL",
 "contact": "hello@stockql.ai",
 "body_text": "Market-data tradeoffs \u00b7 Delistings\n\nWhen is a stock really delisted?\n\nA 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.\n\nSeptember 13, 2026 \u00b7 6 minute read\n\nIn this article\n\nSeparate the lifecycle signals\n\nRecognize opposite failure modes\n\nKeep the decision reversible\n\nCompose evidence in StockQL\n\nMarket data rarely announces a security\u2019s 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.\n\nThe safe question is not \u201cDid today\u2019s file contain this ticker?\u201d It is \u201cWhat did each source observe, when did it observe it, and which conclusion does that evidence support?\u201d\n\nAbsence is not a delisting. It is evidence of provider availability. A formal delisting needs positive lifecycle evidence or a reviewed inference that remains distinguishable from the underlying observations.\n\n1. Separate the lifecycle signals\n\nA useful market-data model keeps at least four facts apart:\n\nLast observed price The latest session for which the provider published a usable bar.\nProvider availability Whether the symbol is still present and fresh in that provider\u2019s feed.\nInstrument lifecycle Whether the security itself is active, delisted, renamed, acquired, or replaced by a new instrument using the same ticker.\nResearch eligibility Whether the row is sufficiently current and trustworthy to enter a screen today.\n\nThose 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\u2019s delisted-company catalog can supply a civil date even when the last available price ended earlier.\n\n2. Recognize opposite failure modes\n\nIn 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\u2013$0.011 values. A naive return series would interpret those placeholders as a catastrophic market move rather than a lifecycle error.\n\nThe reverse also occurs. Live symbols such as GLPG and OP disappeared from one provider\u2019s active catalog before they stopped trading. Other apparent \u201czombies\u201d 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.\n\nThe 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.\n\n3. Keep the decision reversible and auditable\n\nStockQL 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.\n\nPositive 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.\n\nThe 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.\n\nThis creates a useful invariant: today\u2019s screen can exclude unavailable data without rewriting yesterday\u2019s universe, and new evidence can correct a lifecycle conclusion without erasing the earlier audit trail.\n\n4. How StockQL composes the evidence\n\nStockQL 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.\n\nThat 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.\n\nPractical rule. Store observations first, conclusions second. Keep provider availability, instrument identity, delisting date, and screen eligibility as separate fields with dated transitions.\nNext: how missing dead-ETF history creates survivorship bias \u2192"
}
