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
Daily panel of Massive's listed IPOs on their listing day, by permaticker. |