{"slug":"what-is-gmp-in-an-ipo","qid":"debut_two_legs","label":"debut_two_legs","post_title":"what-is-gmp-in-an-ipo","post_url":"/blog/what-is-gmp-in-an-ipo#q-debut_two_legs","columns":["band","listing_count","median_pop_pct","median_day1_change_pct","closed_above_open_pct"],"rows":[{"band":"opened below offer","listing_count":234,"median_pop_pct":-5.3,"median_day1_change_pct":0.1,"closed_above_open_pct":51.3},{"band":"opened 0-10% above offer","listing_count":378,"median_pop_pct":0.7,"median_day1_change_pct":0,"closed_above_open_pct":38.1},{"band":"opened 10-30% above offer","listing_count":194,"median_pop_pct":17.6,"median_day1_change_pct":-0.8,"closed_above_open_pct":45.4},{"band":"opened more than 30% above offer","listing_count":413,"median_pop_pct":461.2,"median_day1_change_pct":-4.2,"closed_above_open_pct":39.2}],"shape":"table","sql":"WITH issues AS\n(\n    SELECT\n        ticker,\n        min(listing_date)                 AS listing_dt,\n        max(toFloat64(final_issue_price)) AS offer_price\n    FROM global_markets.stocks_ipos\n    WHERE listing_date >= '2021-01-01'\n      AND listing_date <  '2026-07-01'\n      AND final_issue_price > 0\n      AND issuer_name NOT ILIKE '%acquisition%'\n      AND ticker NOT IN ('SPCX')\n    GROUP BY ticker\n),\ndebut AS\n(\n    SELECT\n        i.ticker                                                               AS ticker,\n        round(100 * (argMin(toFloat64(d.open), d.date) / i.offer_price - 1), 2) AS pop_pct,\n        round(100 * (argMin(toFloat64(d.close), d.date)\n                     / argMin(toFloat64(d.open), d.date) - 1), 2)              AS day1_change_pct\n    FROM issues AS i\n    INNER JOIN global_markets.stocks_daily_aggs AS d ON d.ticker = i.ticker\n    WHERE d.date >= i.listing_dt\n      AND d.date <  i.listing_dt + 7\n    GROUP BY i.ticker, i.offer_price\n)\nSELECT\n    band,\n    count()                                                                             AS listing_count,\n    round(quantileDeterministic(0.5)(pop_pct, toUInt32(cityHash64(ticker))), 1)         AS median_pop_pct,\n    round(quantileDeterministic(0.5)(day1_change_pct, toUInt32(cityHash64(ticker))), 1) AS median_day1_change_pct,\n    round(100 * countIf(day1_change_pct > 0) / count(), 1)                              AS closed_above_open_pct\nFROM\n(\n    SELECT\n        ticker,\n        pop_pct,\n        day1_change_pct,\n        multiIf(pop_pct < 0, 1, pop_pct < 10, 2, pop_pct < 30, 3, 4) AS band_rank,\n        multiIf(pop_pct < 0,  'opened below offer',\n                pop_pct < 10, 'opened 0-10% above offer',\n                pop_pct < 30, 'opened 10-30% above offer',\n                              'opened more than 30% above offer') AS band\n    FROM debut\n    WHERE isFinite(pop_pct) AND isFinite(day1_change_pct)\n)\nGROUP BY band, band_rank\nORDER BY band_rank","computed_at":"2026-10-02T15:09:03.248016+00:00","elapsed":0.005623469}