IPOs: methods
Code: pipeline/tipsheet/compute/ipo.py, publish/ipo.py.
Tests: pipeline/tests/test_ipo.py.
Pre-registered spec and results: docs/research/ipo_spec.md.
Bundles: ipo/*.
What we measure
- Listing tracker: every mainboard and SME listing on NSE since 2016. For each one: issue price, listing-day open and close, listing gain, and the return since listing against Nifty 500 over the same dates.
- Returns after listing: returns at 1 month, 6 months, 1, 3 and 5 years, against three benchmarks: Nifty 500, Nifty500 Equal Weight and Smallcap 250. Reported for all listings together and by listing-year cohort.
- Calendar-time portfolio: each month, an equal-weighted portfolio of every mainboard IPO in months 1 to 36 after listing. This is the clean test of whether IPOs beat or trail the market.
- Heat gauge: how busy and how hot the IPO market is. It ranks two things against all earlier history:
- the number of mainboard listings in the last three months
- their median listing gain
Sources
- Issues: NSE’s public past-issues list. The Data bank fetches it daily as
nse_ipo_history; the exchange serves it from 2016-01. It gives the symbol, issue dates, issue price and NSE’s listing date. It has no ISIN, subscription or issue size. - Prices: NSE bhavcopy, through the adjusted price panel (
prices.md). Delisted stocks are included, and prices are adjusted for splits, bonuses, rights and demergers. - Benchmarks: niftyindices price indices (
nifty_index_history). Nifty 500 TRI is used as a robustness check.
Matching an issue to its listing
- The anchor is the issue close date. The listing is the symbol’s first NSE session after the close, within 15 sessions. Every match so far fell 2 to 11 sessions after the close; T+6 settlement applied before 2023, and T+3 since.
- The listing must be fresh. The ISIN on the listing row must never have traded on NSE before, under any symbol. This rules out FPOs, relistings and reused symbols.
- BSE-first listings are excluded. A mainboard issue whose first NSE trade is not on NSE’s listing date listed on BSE first, so its first NSE trade is not a listing day. CAMS is the example: it listed on BSE in 2020.
- NSE’s listing date is a cross-check only. It agrees exactly for 1,122 listings.
- For 129 SME issues it holds the later migration to the main board, not the SME listing.
- Some mainboard rows leave it blank, for example DCX Systems.
- Exclusions: every excluded issue is written with its reason to
.cache/derived/qa_ipo_excluded.csv.
Definitions
- Listing gain = listing-day close ÷ issue price − 1. The open gain is shown alongside.
- NSE’s listing-day open is set in the special pre-open call auction for IPOs.
- Retail and employee discounts are ignored.
- Returns after listing start from the listing-day close and use adjusted prices. They are price returns: dividends are left out on both sides, and the benchmarks are price indices.
- BHAR (buy-and-hold abnormal return) = IPO return − benchmark return over identical dates.
- Wealth relative = (1 + mean IPO return) ÷ (1 + mean benchmark return). Above 1 means IPOs did better on average.
- Horizons count NSE sessions: 21, 126, 250, 750 and 1,250. Recent listings are left out of horizons that haven’t finished.
- A stock that stops trading exits at its last close, and the benchmark is cut to the same dates. The
exited_earlycount shows how often this happens. - Heat: each row covers the three months ending that month.
- Both parts, the listing count and the median listing gain, are ranked against all earlier rows. heat is the mean of the two ranks.
- A month is hot when heat is at least 2/3.
- Ranks start in 2017-03, after 12 months of history.
- When testing hot markets, an issue listing in month m uses the row for m−1, so its own month never colours its label.
Validation
-
Listing prices: our listing close matched IPO Watch’s figure from NSE press releases exactly in 478 of 479 mainboard issues. The one miss is a join collision in the comparison, not a price error.
-
Spot checks against well-known listings:
Issue Issue price Listing open Listing close Bajaj Housing Finance ₹70 150 165 Paytm ₹2,150 1,950 1,560.80 Tata Technologies ₹500 1,200 1,313 Hyundai ₹1,960 1,934 1,819.60 Widely quoted closes sometimes differ by a few rupees. Those are BSE closes.
-
Extreme returns checked by hand:
- Mainboard: Mazagon Dock rose 11.4× in three years.
- SME: NPST rose 108× and KSOLVES 79×.
These are real. Every bonus factor behind them matches the ex-date price gap.
Findings (to 2026-09-30)
- No long-run underperformance and no outperformance. The calendar-time alpha against Nifty 500 is +4.1% a year, Newey-West t = 0.89. It isn’t significant against any benchmark.
- The typical IPO trails the market, and a few big winners lift the average. At 3 years the mean BHAR against Nifty 500 is +19%, the median is −28%, and 41% of IPOs beat the index.
- Listing gain says nothing about the next year: Spearman 0.003.
- Hot markets: IPOs from hot months trailed by 7 points at one year, p = 0.27. The direction is as expected but the result is not significant.
- Heat now: July to September 2026 had 60 mainboard listings, the most of any three months since 2016, with a median listing gain of 15.9%. heat is 0.78 (hot).
Known limits
- NSE only, from 2016. IPO Watch has issues from about 2000; adding them is a separate, validated step.
- Subscription is not published.
- IPO Watch’s figures look like a snapshot taken during the last bidding day. Bajaj Housing Finance shows 35.2× there against about 63.6× final.
- The Data bank’s 06:00 fetch sees each book before the last day’s bids.
- Since 2026-10-01 a 20:00 weekday fetch (
scripts/ipo_evening.sh) records the end-of-day book for issues closing that day, so final subscription accumulates from now on.
- Issue size is not used. No source has it reliably: IPO Watch’s sizes have a units error in about two-thirds of mainboard rows. Everything is equal-weighted.
- Small samples in some years. There were only 13–14 mainboard listings in 2019 and 2020, and the 5-year horizon rests on the 2016–2021 cohorts.
- SME is descriptive only. Thin floats and a few multibaggers dominate the means.