{"slug":"japan-ipo-lockup-release-conditions","qid":"reach_15x_curve","label":"Share of US listings trading at 1.5x their offer price, by day since listing","post_title":"Japanese IPO Lockups: The 1.5x Release Rule","post_url":"/blog/japan-ipo-lockup-release-conditions#q-reach_15x_curve","columns":["days_since_listing","reached_1_5x_pct"],"rows":[{"days_since_listing":0,"reached_1_5x_pct":14.9},{"days_since_listing":10,"reached_1_5x_pct":28.2},{"days_since_listing":20,"reached_1_5x_pct":30.4},{"days_since_listing":30,"reached_1_5x_pct":31.9},{"days_since_listing":40,"reached_1_5x_pct":33.2},{"days_since_listing":50,"reached_1_5x_pct":34.5},{"days_since_listing":60,"reached_1_5x_pct":35.3},{"days_since_listing":70,"reached_1_5x_pct":36},{"days_since_listing":80,"reached_1_5x_pct":36.4},{"days_since_listing":90,"reached_1_5x_pct":37.4},{"days_since_listing":100,"reached_1_5x_pct":37.6},{"days_since_listing":110,"reached_1_5x_pct":37.9},{"days_since_listing":120,"reached_1_5x_pct":38.1},{"days_since_listing":130,"reached_1_5x_pct":38.4},{"days_since_listing":140,"reached_1_5x_pct":38.5},{"days_since_listing":150,"reached_1_5x_pct":38.7},{"days_since_listing":160,"reached_1_5x_pct":39},{"days_since_listing":170,"reached_1_5x_pct":39.3},{"days_since_listing":180,"reached_1_5x_pct":39.4}],"shape":"ranking","sql":"WITH offers AS\n(\n    SELECT\n        ticker,\n        min(listing_date)                 AS listed_on,\n        toFloat64(max(final_issue_price)) AS offer_price\n    FROM global_markets.stocks_ipos\n    WHERE final_issue_price > 0\n      AND listing_date >= '2021-01-01'\n      AND listing_date <  '2026-01-01'\n      AND ticker NOT IN ('SPCX')\n    GROUP BY ticker\n),\nfirst_touch AS\n(\n    SELECT\n        o.ticker                                          AS ticker,\n        countIf(toFloat64(d.high) >= 1.5 * o.offer_price) AS touch_sessions,\n        minIf(dateDiff('day', o.listed_on, d.date),\n              toFloat64(d.high) >= 1.5 * o.offer_price)   AS days_to_touch\n    FROM global_markets.stocks_daily_aggs AS d\n    INNER JOIN offers AS o ON d.ticker = o.ticker\n    WHERE d.date >= '2021-01-01'\n      AND d.date <  '2026-07-01'\n      AND d.date >= o.listed_on\n      AND d.date <  o.listed_on + 181\n    GROUP BY o.ticker\n)\nSELECT\n    grid.day AS days_since_listing,\n    round(100 * countIf(t.touch_sessions > 0 AND t.days_to_touch <= grid.day) / count(), 1) AS reached_1_5x_pct\nFROM first_touch AS t\nCROSS JOIN\n(\n    SELECT arrayJoin(range(0, 190, 10)) AS day\n) AS grid\nGROUP BY days_since_listing\nORDER BY days_since_listing","computed_at":"2026-08-07T14:26:36.312872+00:00","elapsed":1.494456743}