quantlab.dataset.massive.ipos#

Massive’s IPOs as a daily panel on the permaticker axis (#359).

Massive’s /vX/reference/ipos records, as MassiveClient.pull keeps them in the REST raw tier (quantlab.dataset.massive.raw.read_rest_records), become three variables on SEP’s trading calendar, one column per permaticker, each on the IPO’s listing day only:

  • ipo_offer_price: the final offer price per share (final_issue_price).

  • ipo_offer_size: the total amount the offer raised (total_offer_size).

  • ipo_days_announced: the trading days from the announcement (announced_date, rolled onto the next NYSE session when it is not one) to the listing day, 0 when the IPO lists on the day it is announced.

A cell without one is NaN. Only an IPO that listed is shown: its ipo_status is new, history or direct_listing_process and it has a listing_date. A pending, rumoured, postponed or withdrawn IPO stays in the raw tier only and is not counted as left out. The records have no id and a revision changes their fields (a pending IPO becomes new, then history), so each IPO, a ticker and its announcement date, is read from its newest copy (the latest last_updated, then the latest pull). A listing date that is not a trading day rolls onto the next one; an IPO listed before the store’s first day is not shown.

Each listed IPO is placed on the permaticker the Ticker map gives its ticker on the listing day, through quantlab.dataset.massive.placement.TickerPlacement; an IPO it cannot place, and one not in USD, is left out and counted in <store>.unplaced.json. Only the universe’s permatickers (by default SEP’s domestic common stock) are columns.

The store is built through the last day SEP, the REST pull and the Ticker map all reach, so update() appends a day only once each of them holds it.

Examples#

Build the store and read the IPOs of a year:

config = MassiveIposConfig(
    zarr_file_path="/data/quantlab/market/massive/massive_ipos_1d/massive_ipos_1d.zarr",
    raw_data_dir_path="/data/quantlab/downloads/sharadar",
    massive_dir="/data/quantlab/downloads/massive",
    ticker_map_path="/data/quantlab/market/massive/massive_ticker_map/massive_ticker_map",
    start_date="2016-10-10",
)
panel = MassiveIpoDataset(config).update().panel("2024-01-02", "2024-12-31")
panel["ipo_offer_price"].max("timestamp").dropna("symbol")

Classes

MassiveIpoDataset

Daily panel of Massive's listed IPOs on their listing day, by permaticker.