IPO listing and long-run returns: pre-registered specification
Written 2026-10-01, before any IPO return was computed. Up to this point the only things looked at were:
- the schemas and coverage of NSE’s issue list (
nse_ipo_history) and IPO Watch - a match-rate check between NSE’s issue list and bhavcopy: symbols and first trading dates only, no prices compared with issue prices
- one IPO Watch subscription record (Bajaj Housing Finance), to check the survey’s claim that it is understated
The horizons, benchmarks and tests follow the standard IPO literature (Ritter 1991; Loughran and Ritter 1995; Ritter and Welch 2002) and are not tuned on Indian data. Any change must be logged here with the date and the reason.
Before the first run, two definitions were tightened (still 2026-10-01, no results seen): the heat window ends with the previous completed month, so it has no look-ahead; and the rule for windows with no listings was added.
Questions
- Listing: how far above or below the issue price do Indian IPOs open and close on day one, and how has that changed?
- Long run: after the first day, do IPOs beat or trail the market over 1, 3 and 5 years? This is the “long-run IPO underperformance” result from the US. Does it hold in India?
- Flipping: does a big listing gain predict a worse year after?
- Hot markets: do IPOs that list in busy, high-listing-gain months do worse afterwards than those that list in quiet months?
Universe
- Source of issues: NSE’s public past-issues list (
nse_ipo_history, Data bank). It is the exchange’s own record of symbol, issue dates, listing date and issue price, served from 2016-01. - Mainboard: security type
EQorBE, not withdrawn, with an issue price and a listing date. - SME (security type
SME) is reported separately and descriptively only. SME listings are small, thinly traded and prone to manipulation, and the stock exchanges changed SME listing rules several times. It is not pooled with mainboard. - A fresh listing, not an FPO or relisting: the issue is matched to the adjusted price panel (
equity_prices_adjusted.parquet, NSE bhavcopy) by symbol on the first session on or within 5 sessions after NSE’s listing date. That row’s ISIN must not appear in bhavcopy on any earlier date under any symbol. Issues that fail this test (FPOs, partly paid shares, relistings, reused symbols) are excluded and listed in a QA file. - Excluded by type: InvITs, REITs, debt, and any issue whose name says FPO, rights or partly paid.
- Survivorship: the universe comes from the issue list, not from today’s listed stocks. Stocks that later delisted or were suspended stay in.
- Period: listings from 2016-01-01 to the latest bhavcopy date. Pre-2016 issues (IPO Watch has them from about 2000) are out of scope for this spec. Adding them would be a logged amendment with its own validation.
Prices and returns
- Issue price: NSE’s
issue_price(the final price; the retail or employee discount is ignored). - Listing-day open and close: the raw bhavcopy open and close on the listing session. NSE’s listing-day open is the price set in the special pre-open call auction for IPOs.
- Listing gain = listing close ÷ issue price − 1. The listing open gain is reported next to it.
- After listing: prices adjusted for splits, bonuses, rights and demergers (
close × adjfrom the panel). Dividends are not included, so these are price returns. - Horizons, counted in the stock’s own NSE sessions from the listing-day close: 21 (1 month), 126 (6 months), 250 (1 year), 750 (3 years) and 1,250 (5 years).
- An issue enters a horizon only if that many sessions have elapsed on the NSE calendar since listing. Recent listings are excluded from long horizons, not given partial returns.
- Delisting or suspension: if the stock stops trading before the horizon ends, its return runs to its last close. The benchmark is measured over the same shortened window, so the abnormal return after delisting is zero. The count of such cases is reported per horizon.
- This treats a delisting as exit at the last price. For a bankruptcy or a suspension that wipes out holders, that flatters the IPO. The count makes the size of this bias visible.
Benchmarks
- Primary: Nifty 500 price index, so stock and benchmark both exclude dividends.
- Secondary, size and weight: Nifty500 Equal Weight and Nifty Smallcap 250 (price indices). Most IPOs are mid and small companies, and the IPO averages are equal-weighted, so these are the closer comparison.
- Robustness: Nifty 500 TRI. This is harsh on the IPOs, since their dividends are left out. Dividend yields of new listings are typically under 1%.
Measures
- Buy-and-hold abnormal return (BHAR) per issue and horizon = (1 + R_ipo) − (1 + R_bench) over identical dates.
- Per horizon, reported: n, mean and median raw return, mean and median BHAR, the share of issues beating the benchmark, and Ritter’s wealth relative = (1 + mean R_ipo) ÷ (1 + mean R_bench).
- By listing-year cohort: the same statistics.
- Equal-weighted only. Issue size is not reliable in any source we have (IPO Watch’s sizes have a units error in about two-thirds of mainboard rows), so no size-weighted figures are produced.
Tests
BHARs from overlapping cohorts are correlated in calendar time and heavily skewed, so they are reported but not used for inference.
- H1, long-run returns (calendar-time portfolio). Each month, form an equal-weighted portfolio of every mainboard IPO in months 1 to 36 after listing (the listing month is excluded). Monthly returns are from adjusted closes. Test:
- the mean monthly return minus Nifty 500 (price), with a t-statistic over months
- the intercept of r_p − r_cash = a + b (r_nifty500 − r_cash), with Newey-West standard errors (3 lags); cash is the 91-day T-bill series
- the same with Nifty500 Equal Weight and Smallcap 250
- A month needs at least 10 stocks in the portfolio; earlier months are dropped. The first eligible month is reported.
- Primary result: the Nifty 500 intercept and its t-statistic.
- H2, flipping. Spearman correlation between listing gain and the 1-year BHAR (Nifty 500), across issues. Also the mean 1-year BHAR by listing-gain tercile.
- H3, hot markets.
- “Heat” known at the start of month m = the number of mainboard listings in the three completed months m−3 to m−1, and the median listing gain of those listings. An issue listing in month m is labelled with the heat of m. It never uses listings later in its own month. (Published rows are dated by the end of their three-month window, so the row dated m−1 is the heat used for listings in m. Same numbers, different label.)
- Each part is ranked against its values in all earlier months (an expanding percentile: the share of earlier months with a value at or below this one). The first 12 months of the sample only build history and are not ranked.
- A window with no listings has no median gain; its heat is the count percentile alone, which is low by construction.
- A month is hot when the mean of the two percentiles is at or above 2/3.
- Compare the mean 1-year and 3-year BHAR (Nifty 500) of issues listed in hot months against the rest, with a Welch t-test. Issues listed in the same month are not independent, so the test is also run on month-level average BHARs.
- Exploratory, not a test: does the heat score predict the next 12 months of Nifty 500 returns? With ten years there are fewer than ten independent 12-month periods, so this is shown as a chart with that caveat and no p-value.
p-values use the normal approximation to the t statistic (no SciPy in this environment; the samples are 100+ months or 300+ issues). Results are reported whatever their sign. Three primary tests (H1 intercept, H2 correlation, H3 hot-vs-rest 1-year difference) are run, so a p-value has to be under 0.0167 (Bonferroni) to count.
Section measures (descriptive, refreshed daily)
- Listing tracker: every mainboard and SME listing with issue price, listing open, close and gain, and returns since listing against Nifty 500.
- IPO heat gauge: the H3 heat score each month, with its two parts (listing count and median listing gain), from 2016.
- Cohort table: the per-listing-year statistics above.
- Subscription is not published. IPO Watch’s subscription figures look like a snapshot taken during the last bidding day, not the final consolidated book: Bajaj Housing Finance shows 35.2× against about 63.6× final. The Data bank’s daily NSE fetch runs at 06:00, before the final day’s bids. Subscription comes in only once a source of final figures is in place and validated.
Known biases, stated up front
- NSE only. BSE-only listings are absent.
- Issue price ignores discounts. Retail and employee discounts are ignored, which slightly understates those investors’ listing gains.
- Allotment returns are not investor returns. Popular issues are heavily oversubscribed, so the listing gain is not what a typical applicant earns. The expected gain per application is much smaller.
- Sample. From 2016 the sample is about 560 mainboard listings, clustered in 2021 and 2023–26. The long horizons (3 and 5 years) rest on few cohorts and include no full market cycle after 2021’s boom.
- Equal weighting. Results are equal-weighted, so small issues count as much as large ones.
Amendments
- 2026-10-01, matching anchor (made while validating the match, before any return was computed or looked at):
- The listing session is now found from the issue close date, not NSE’s listing date. It is the symbol’s first session within 15 sessions after the close.
- NSE’s listing date proved unreliable as an anchor. For 129 SME issues it holds the later migration to the main board (AAKASH: listed on NSE Emerge in 2018, NSE’s date is 2020).
- Some mainboard rows leave the listing date blank.
- NSE’s listing date is now a cross-check. The 1,122 listings where it exists and isn’t a migration agree exactly.
- A mainboard issue whose first NSE trade differs from NSE’s listing date is excluded as a BSE-first listing. CAMS listed on BSE in 2020. The close-date anchor also removed two wrong rows from the first match: Protean, listed on BSE in 2023 and on NSE in 2025, and RHFL, a 2017 demerger listing with a 2016 “issue”.
- The listing session is now found from the issue close date, not NSE’s listing date. It is the symbol’s first session within 15 sessions after the close.
- 2026-10-01, by-name filter: a regex excludes FPO, rights and partly paid issues. It caught one issue.
Results log
2026-10-01: first run (bhavcopy to 2026-09-30)
Sample:
- 529 mainboard and 728 SME listings from 2016-01. 60 issues were excluded; reasons are in
.cache/derived/qa_ipo_excluded.csv:- 29 have no issue price
- 27 were not traded within 15 sessions (mostly SME NCD-like rows, or SME issues that listed on BSE SME; two mainboard issues, SAATVIK and LEAP, where NSE’s issue list uses a different symbol from the traded one)
- 2 have not listed yet
- 1 was an FPO by name
- 1 was a BSE-first listing
- Listing prices validated against IPO Watch’s figures from NSE press releases. Closes matched exactly in 478 of 479 cases. The one miss (IndiQube) is a join collision in the cross-check, not a bad price.
- Spot checks against known listings also agree: Bajaj Housing Finance (₹70 → open 150, close 165), Paytm (2,150 → 1,950, 1,560.80), Tata Technologies (500 → 1,200) and Hyundai (1,960 → 1,934).
Listing day (mainboard):
- The median listing-day gain by year runs from 0.1% (2018) to 21% (2020, 2021, 2023, 2024). It was 5% in 2025 and 10% in 2026 so far.
- Between 52% and 86% of listings close above the issue price, depending on the year.
H1, long-run returns (calendar-time portfolio). 124 months from 2016-06 to 2026-09, with a median of 79 stocks:
| Benchmark | Mean monthly excess | t | Alpha (annualised) | NW t | Beta |
|---|---|---|---|---|---|
| Nifty 500 (primary) | +0.47% | 1.27 | +4.1% | 0.89 | 1.22 |
| Nifty500 Equal Weight | +0.26% | 1.13 | +2.4% | 0.77 | 1.07 |
| Smallcap 250 | +0.14% | 0.64 | +1.9% | 0.63 | 0.98 |
| Nifty 500 TRI | +0.38% | 1.02 | +2.7% | 0.59 | 1.22 |
No long-run underperformance and no outperformance: none of the four intercepts is significant. The US underperformance result does not show up in India in 2016–2026.
Buy-and-hold returns (mainboard, from the listing-day close, against Nifty 500):
| Horizon | n | Mean BHAR | Median BHAR | Share beating | Wealth relative |
|---|---|---|---|---|---|
| 1 year | 402 | +6.5% | −7.6% | 44% | 1.06 |
| 3 years | 231 | +18.9% | −28.2% | 41% | 1.13 |
| 5 years | 143 | +51.9% | −29.2% | 41% | 1.28 |
- The typical IPO trails the market, and a few big winners lift the average. Mazagon Dock rose 11.4× in three years; Kaynes, Angel One and Anand Rathi each rose 6–7×.
- Against size-matched benchmarks the mean BHARs shrink. Against Smallcap 250 they are +4.4% (1 year), +5.4% (3 years) and +30.6% (5 years).
- Only one mainboard issue stopped trading inside its 3- or 5-year window.
H2, flipping:
- No relationship between listing gain and the 1-year BHAR: Spearman 0.003, p = 0.95, n = 402.
- Mean 1-year BHAR by listing-gain tercile: low +2.6%, mid +10.5%, high +6.5%. Medians: −11.5%, −1.0%, −7.4%.
H3, hot markets:
- Primary (issue-level, 1 year): issues listed in hot months trailed the rest by 7.0 points (+3.1% vs +10.1%), t = −1.10, p = 0.27, with 221 hot and 154 other issues.
- At month level the gap is −19.1 points, t = −1.91, p = 0.056 (36 hot and 46 other months).
- At 3 years: +8.7 points (issue level, p = 0.69) and −14.9 points (month level, p = 0.60).
- Not significant at the pre-registered threshold of 0.0167, nor at 0.05. The direction at 1 year is what the hot-market literature predicts.
SME (descriptive only):
- 1-year mean return +43% but median −4%; 41% beat Nifty 500.
- 5 years (n = 202): mean BHAR +270%, median +21%. 13 of the 202 stopped trading inside the window.
- The extremes are real and the adjustments check out: NPST rose 108× in three years and KSOLVES 79×, with every bonus factor matching its ex-date price gap. SME averages are dominated by a handful of thin-float multibaggers and should be read through the medians.
What goes on the site: the null H1 result is the headline. Put next to it the gap between the mean and the median, and the share of IPOs that trail.