{"slug":"learn-quant-trading-open-source-book","qid":"universe_churn","label":"US tickers trading in a June week, and how many still traded in June 2026","post_title":"Learn Quant Trading From an Open Source Book","post_url":"/blog/learn-quant-trading-open-source-book#q-universe_churn","columns":["year","tickers_traded","still_trading_2026","still_trading_pct"],"rows":[{"year":2016,"tickers_traded":8224,"still_trading_2026":4110,"still_trading_pct":50},{"year":2017,"tickers_traded":8234,"still_trading_2026":4335,"still_trading_pct":52.6},{"year":2018,"tickers_traded":8398,"still_trading_2026":4690,"still_trading_pct":55.8},{"year":2019,"tickers_traded":8594,"still_trading_2026":5066,"still_trading_pct":58.9},{"year":2020,"tickers_traded":8787,"still_trading_2026":5503,"still_trading_pct":62.6},{"year":2021,"tickers_traded":10712,"still_trading_2026":6217,"still_trading_pct":58},{"year":2022,"tickers_traded":11938,"still_trading_2026":7117,"still_trading_pct":59.6},{"year":2023,"tickers_traded":11104,"still_trading_2026":7705,"still_trading_pct":69.4},{"year":2024,"tickers_traded":10798,"still_trading_2026":8639,"still_trading_pct":80},{"year":2025,"tickers_traded":11216,"still_trading_2026":10030,"still_trading_pct":89.4},{"year":2026,"tickers_traded":12523,"still_trading_2026":12523,"still_trading_pct":100}],"shape":"ranking","sql":"WITH june_week AS (\n    SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS year,\n           ticker\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE toMonth(toTimeZone(window_start, 'America/New_York')) = 6\n      AND toDayOfMonth(toTimeZone(window_start, 'America/New_York')) BETWEEN 10 AND 16\n      AND toYear(toTimeZone(window_start, 'America/New_York')) BETWEEN 2016 AND 2026\n      AND volume > 0\n    GROUP BY year, ticker\n),\nsurvivors AS (\n    SELECT ticker FROM june_week WHERE year = 2026\n)\nSELECT year,\n       uniqExact(ticker) AS tickers_traded,\n       uniqExactIf(ticker, ticker IN (SELECT ticker FROM survivors)) AS still_trading_2026,\n       round(100 * uniqExactIf(ticker, ticker IN (SELECT ticker FROM survivors))\n             / uniqExact(ticker), 1) AS still_trading_pct\nFROM june_week\nGROUP BY year\nORDER BY year","computed_at":"2026-08-02T08:19:52.225415+00:00","elapsed":0.003149671}