{"slug":"why-ticker-symbols-break-datasets","qid":"symbol_reuse","label":"New listings landing on a symbol that already had history","post_title":"Why Ticker Symbols Break Your Dataset","post_url":"/blog/why-ticker-symbols-break-datasets#q-symbol_reuse","columns":["listing_year","listings","symbols_with_earlier_history"],"rows":[{"listing_year":"2016","listings":126,"symbols_with_earlier_history":32},{"listing_year":"2017","listings":194,"symbols_with_earlier_history":48},{"listing_year":"2018","listings":211,"symbols_with_earlier_history":41},{"listing_year":"2019","listings":214,"symbols_with_earlier_history":39},{"listing_year":"2020","listings":350,"symbols_with_earlier_history":64},{"listing_year":"2021","listings":794,"symbols_with_earlier_history":113},{"listing_year":"2022","listings":161,"symbols_with_earlier_history":30},{"listing_year":"2023","listings":167,"symbols_with_earlier_history":47},{"listing_year":"2024","listings":270,"symbols_with_earlier_history":86},{"listing_year":"2025","listings":327,"symbols_with_earlier_history":54},{"listing_year":"2026","listings":207,"symbols_with_earlier_history":33}],"shape":"ranking","sql":"SELECT\n    toString(toYear(i.listing_day))                          AS listing_year,\n    count()                                                  AS listings,\n    countIf(f.first_print < subtractDays(i.listing_day, 90))  AS symbols_with_earlier_history\nFROM\n(\n    SELECT\n        ticker,\n        min(toDate(listing_date)) AS listing_day\n    FROM global_markets.stocks_ipos\n    WHERE listing_date >= '2016-01-01'\n      AND listing_date < today()\n    GROUP BY ticker\n) AS i\nINNER JOIN\n(\n    SELECT\n        ticker,\n        min(date) AS first_print\n    FROM global_markets.stocks_daily_aggs\n    GROUP BY ticker\n) AS f ON f.ticker = i.ticker\nGROUP BY listing_year\nORDER BY listing_year","computed_at":"2026-08-22T04:37:23.617117+00:00","elapsed":1.895409419}