{"slug":"what-happens-when-an-etf-closes","qid":"wind_down","label":"How the tape behaved into the final session","post_title":"What Happens When an ETF Closes","post_url":"/blog/what-happens-when-an-etf-closes#q-wind_down","columns":["wind_down_stage","median_daily_range_pct","median_dollar_volume_k"],"rows":[{"wind_down_stage":"121 to 250 days out","median_daily_range_pct":2.49,"median_dollar_volume_k":70.1},{"wind_down_stage":"61 to 120 days out","median_daily_range_pct":2.12,"median_dollar_volume_k":72.8},{"wind_down_stage":"31 to 60 days out","median_daily_range_pct":1.76,"median_dollar_volume_k":82.9},{"wind_down_stage":"11 to 30 days out","median_daily_range_pct":1.76,"median_dollar_volume_k":89.4},{"wind_down_stage":"final 10 days","median_daily_range_pct":2.53,"median_dollar_volume_k":112.4}],"shape":"ranking","sql":"WITH retired AS\n(\n    SELECT\n        ticker,\n        max(date) AS last_session\n    FROM global_markets.stocks_daily_aggs\n    WHERE date >= '2018-01-01'\n      AND ticker NOT IN ('SPCX')\n    GROUP BY ticker\n    HAVING max(date) >= today() - 1130\n       AND max(date) <  today() - 250\n)\nSELECT\n    multiIf(\n        dateDiff('day', d.date, r.last_session) <= 10,  'final 10 days',\n        dateDiff('day', d.date, r.last_session) <= 30,  '11 to 30 days out',\n        dateDiff('day', d.date, r.last_session) <= 60,  '31 to 60 days out',\n        dateDiff('day', d.date, r.last_session) <= 120, '61 to 120 days out',\n                                                        '121 to 250 days out')        AS wind_down_stage,\n    round(quantileDeterministic(0.5)(\n        toFloat64(d.high - d.low) / toFloat64(d.close) * 100,\n        cityHash64(d.ticker, d.date)), 2)                                             AS median_daily_range_pct,\n    round(quantileDeterministic(0.5)(\n        toFloat64(d.volume) * toFloat64(d.close) / 1000,\n        cityHash64(d.ticker, d.date)), 1)                                             AS median_dollar_volume_k\nFROM global_markets.stocks_daily_aggs AS d\nINNER JOIN retired AS r ON r.ticker = d.ticker\nWHERE d.date >= today() - 1500\n  AND d.date >  r.last_session - 250\n  AND d.date <= r.last_session\n  AND d.close > 0\nGROUP BY wind_down_stage\nORDER BY min(dateDiff('day', d.date, r.last_session)) DESC","computed_at":"2026-09-27T15:26:33.767099+00:00","elapsed":64.434080649}