{"slug":"when-do-options-become-available-after-an-ipo","qid":"chain_depth","label":"How a new option chain widens: strikes and expirations traded","post_title":"When Do Options Start Trading After an IPO?","post_url":"/blog/when-do-options-become-available-after-an-ipo#q-chain_depth","columns":["weeks_since_first_option","median_strikes_traded","median_expirations_traded"],"rows":[{"weeks_since_first_option":0,"median_strikes_traded":9,"median_expirations_traded":4},{"weeks_since_first_option":1,"median_strikes_traded":10,"median_expirations_traded":4},{"weeks_since_first_option":2,"median_strikes_traded":10,"median_expirations_traded":4},{"weeks_since_first_option":3,"median_strikes_traded":11,"median_expirations_traded":4},{"weeks_since_first_option":4,"median_strikes_traded":11,"median_expirations_traded":4},{"weeks_since_first_option":5,"median_strikes_traded":11,"median_expirations_traded":4},{"weeks_since_first_option":6,"median_strikes_traded":12,"median_expirations_traded":5},{"weeks_since_first_option":7,"median_strikes_traded":12,"median_expirations_traded":5},{"weeks_since_first_option":8,"median_strikes_traded":12,"median_expirations_traded":5},{"weeks_since_first_option":9,"median_strikes_traded":12,"median_expirations_traded":5},{"weeks_since_first_option":10,"median_strikes_traded":12,"median_expirations_traded":5},{"weeks_since_first_option":11,"median_strikes_traded":12,"median_expirations_traded":5}],"shape":"ranking","sql":"WITH\nlistings AS (\n    SELECT\n        ticker,\n        min(listing_date) AS listed_on\n    FROM global_markets.stocks_ipos\n    WHERE listing_date >= '2024-01-01'\n      AND listing_date < today()\n      AND ticker NOT IN ('SPCX')\n    GROUP BY ticker\n),\ndebut AS (\n    SELECT\n        a.ticker                                                 AS symbol,\n        min(a.date)                                              AS debut_date,\n        argMin(toFloat64(a.close) * toFloat64(a.volume), a.date) AS debut_turnover\n    FROM global_markets.stocks_daily_aggs AS a\n    INNER JOIN listings AS l ON l.ticker = a.ticker\n    WHERE a.date >= '2024-01-01'\n      AND a.date >= l.listed_on\n    GROUP BY a.ticker\n),\ncohort AS (\n    SELECT\n        symbol,\n        debut_date\n    FROM debut\n    ORDER BY debut_turnover DESC\n    LIMIT 40\n),\nfirst_option AS (\n    SELECT\n        g.underlying_symbol AS symbol,\n        min(g.date)         AS option_date\n    FROM global_markets.options_greeks AS g\n    INNER JOIN cohort AS c ON c.symbol = g.underlying_symbol\n    WHERE g.date >= '2024-01-01'\n      AND g.volume > 0\n      AND g.date >= c.debut_date\n    GROUP BY g.underlying_symbol\n),\ndaily_chain AS (\n    SELECT\n        g.underlying_symbol             AS symbol,\n        g.date                          AS d,\n        uniqExact(g.strike_price)       AS strikes,\n        uniqExact(g.expiration_date)    AS expiries\n    FROM global_markets.options_greeks AS g\n    INNER JOIN first_option AS f ON f.symbol = g.underlying_symbol\n    WHERE g.volume > 0\n      AND g.date >= f.option_date\n      AND dateDiff('day', f.option_date, g.date) < 84\n    GROUP BY symbol, d\n)\nSELECT\n    intDiv(dateDiff('day', f.option_date, c.d), 7)                                       AS weeks_since_first_option,\n    toUInt32(round(quantileDeterministic(toFloat64(c.strikes), cityHash64(c.symbol))))   AS median_strikes_traded,\n    toUInt32(round(quantileDeterministic(toFloat64(c.expiries), cityHash64(c.symbol))))  AS median_expirations_traded\nFROM daily_chain AS c\nINNER JOIN first_option AS f ON f.symbol = c.symbol\nGROUP BY weeks_since_first_option\nORDER BY weeks_since_first_option","computed_at":"2026-09-09T01:24:31.834012+00:00","elapsed":56.102507689}