{"slug":"does-ipo-gmp-predict-listing-gains","qid":"turnover_tiers","label":"turnover_tiers","post_title":"does-ipo-gmp-predict-listing-gains","post_url":"/blog/does-ipo-gmp-predict-listing-gains#q-turnover_tiers","columns":["day1_turnover_tier","listings","median_offer_to_open_pct","p10_to_p90_spread"],"rows":[{"day1_turnover_tier":"under $5M traded","listings":178,"median_offer_to_open_pct":12.1,"p10_to_p90_spread":61672.8},{"day1_turnover_tier":"$5M to $50M","listings":652,"median_offer_to_open_pct":1.2,"p10_to_p90_spread":1917.8},{"day1_turnover_tier":"$50M to $500M","listings":894,"median_offer_to_open_pct":3.8,"p10_to_p90_spread":64.1},{"day1_turnover_tier":"$500M and up","listings":152,"median_offer_to_open_pct":32.8,"p10_to_p90_spread":103.9}],"shape":"ranking","sql":"WITH day_one AS\n(\n    SELECT\n        i.ticker                                          AS ticker,\n        i.list_date                                       AS list_date,\n        (toFloat64(d.open_px) / i.offer_price - 1) * 100  AS offer_to_open,\n        toFloat64(d.open_px) * toFloat64(d.day_volume)    AS day1_turnover\n    FROM\n    (\n        SELECT\n            ticker,\n            toDate(argMax(listing_date, last_updated))         AS list_date,\n            argMax(toFloat64(final_issue_price), last_updated) AS offer_price\n        FROM global_markets.stocks_ipos\n        WHERE listing_date >= '2017-01-01'\n          AND listing_date <  '2026-09-01'\n          AND final_issue_price > 0\n          AND currency_code = 'USD'\n          AND ticker NOT IN ('SPCX')\n        GROUP BY ticker\n    ) AS i\n    INNER JOIN\n    (\n        SELECT\n            ticker,\n            date,\n            max(open)   AS open_px,\n            max(volume) AS day_volume\n        FROM global_markets.stocks_daily_aggs\n        WHERE date >= '2017-01-01'\n          AND date <  '2026-09-01'\n        GROUP BY ticker, date\n    ) AS d\n        ON d.ticker = i.ticker AND d.date = i.list_date\n    WHERE d.day_volume > 0\n      AND d.open_px > 0\n      AND i.offer_price > 0\n)\nSELECT\n    multiIf(day1_turnover <   5000000, 'under $5M traded',\n            day1_turnover <  50000000, '$5M to $50M',\n            day1_turnover < 500000000, '$50M to $500M',\n                                       '$500M and up') AS day1_turnover_tier,\n    count()                                            AS listings,\n    round(quantileDeterministic(0.5)(offer_to_open, cityHash64(ticker)), 1) AS median_offer_to_open_pct,\n    round(quantileDeterministic(0.9)(offer_to_open, cityHash64(ticker))\n        - quantileDeterministic(0.1)(offer_to_open, cityHash64(ticker)), 1) AS p10_to_p90_spread\nFROM day_one\nGROUP BY day1_turnover_tier\nORDER BY min(day1_turnover)","computed_at":"2026-10-03T15:20:14.525178+00:00","elapsed":0.00443245}