quantlab.dataset.massive.disclosures#

Massive’s 8-K disclosure categories as a daily panel on the permaticker axis (#358).

Massive’s /stocks/filings/8-K/vX/disclosures records, as MassiveClient.pull keeps them in the REST raw tier (quantlab.dataset.massive.raw.read_rest_records), become one boolean per primary category of Massive’s disclosure taxonomy (/stocks/taxonomies/vX/disclosures, its newest snapshot), on SEP’s trading calendar, one column per permaticker. A variable is named by its primary category as the taxonomy spells it (financial_results, leadership_and_governance) and described by the secondary and tertiary categories the taxonomy lists under it.

A variable is true on the first trading day after the filing date of an 8-K with a disclosure in its category, and false on every other day: an 8-K is often filed after the close, so a filing shows on the next bar (one filed on a Friday shows on Monday). A filing with disclosures in two primary categories sets both. Secondary and tertiary categories stay raw.

A record names its filer’s tickers (several for a filer with several share classes); it is placed once for each ticker, on the permaticker the Ticker map gives that ticker on the day the filing shows (quantlab.dataset.massive.placement.TickerPlacement). A ticker it cannot place, and a record naming no ticker, is left out and counted in <store>.unplaced.json. Only the universe’s permatickers (by default SEP’s domestic common stock) are columns. A primary category the taxonomy does not list refuses the build, naming it, so a category the vendor adds is never dropped; the taxonomy’s categories are the store’s variables, so a new one needs the store rebuilt.

The store is built through the last day SEP, the disclosure 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 earnings 8-Ks of one security:

config = MassiveDisclosuresConfig(
    zarr_file_path="/data/quantlab/market/massive/massive_disclosures_1d/massive_disclosures_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="2020-01-02",
)
panel = MassiveDisclosureDataset(config).update().panel("2024-01-02", "2024-12-31")
panel["financial_results"].sel(symbol=199059)

Classes

MassiveDisclosureDataset

Daily panel of Massive's 8-K disclosure categories, one flag per primary category, by permaticker.