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
Daily panel of Massive's 8-K disclosure categories, one flag per primary category, by permaticker. |