Obscura

SEC Registration Effectiveness Notices

SEC notices that a registration statement has been declared effective - the moment an IPO, a shelf or a fund registration becomes usable. Carries which form went effective (S-1, S-3, N-1A), its 333- file number, the effectiveness time, and any co-registrants on the same registration.

edgar_effectiveness_notices - the dataset name to pass to the Obscura API.

Category Regulatory Columns 17 Refresh Every 6 hours Entity key cik Point-in-time available_date

What one row means

One SEC `EFFECT` notice - the announcement that a registration statement (S-1, S-3, S-4, F-1, N-1A, `POS AM`, …) has been **declared effective**, i.e. the moment an IPO, a shelf or a fund registration becomes usable. The notice is generated by SEC itself (every accession is `9999999995-YY-NNNNNN`), so the whole submission is a ~600-byte `primary_doc.xml`. It is one of very few EDGAR families carrying a real clock time: `effective_at` is the measured effectiveness instant, and `occurred_on` is its date part. Both are EARLIER than `available_date` - SEC batch-generates these notices at ~00:15 ET on the following dissemination morning, so the notice for a Friday-16:00 effectiveness first becomes readable on Monday. See `docs/datasets/edgar_effectiveness_notices.md`.

One row per One row per EFFECT notice, keyed by its ACCESSION. One notice = ONE registration statement (one 333-/811-/2- file number) declared effective at one instant - co-registrants sharing that registration are a child list on the same row (co_registrant_ciks), never extra rows. The key is the accession and NOT the archive path because EDGAR indexes one notice under one path PER associated CIK: accession 9999999995-15-001321 (EnPro + 18 guarantor subsidiaries) appears as 19 separate rows of master.20150514.idx, and keying on the path would turn one effectiveness event into 19..

Point-in-time availability

Every Obscura dataset carries available_date: the calendar day the publisher made the row available, day-of, with no session rounding. It is the one column a backtest filters on, and it means the same thing on every dataset in the catalog.

For edgar_effectiveness_notices: filing_join: available_date is the EDGAR DISSEMINATION day, taken from the bronze object's own day partition. It is systematically ONE dissemination day AFTER occurred_on because SEC batch-generates these notices at ~00:15 ET the next morning - MEASURED on the daily indexes for 2015-05-13/14 (39/39), 2019-08-14/15 (11/11) and 2024-04-12/15 (28/28). Dating a row from the effectiveness date instead is a one-day look-ahead on the whole family.

Refresh cadence

Obscura refreshes edgar_effectiveness_notices every 6 hours - the most frequent scheduled job that re-collects or re-exports it. This is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when a row became public is recorded per row in available_date.

Schema - 17 columns

The full public column list for edgar_effectiveness_notices, with the meaning of every field. The same schema is served unauthenticated at https://api.obscura.trade/v1/catalog/edgar_effectiveness_notices.

ColumnTypeDescription
accessiontext · not nullPK. SEC accession number of the notice, always `9999999995-YY-NNNNNN` because EFFECT notices are generated by SEC rather than filed by a registrant. The key is the accession, not the archive path: EDGAR lists one notice under one path per co-registrant CIK.
filenametext · not nullThe PRIMARY registrant's SEC EDGAR Archives path for this notice (`edgar/data/{cik}/{accession}.txt`), derived from the first `<filer>` in the payload rather than from whichever index row was walked - so it is the same value on every ingestion path. The join key into `edgar_filings`.
available_datedatePublic availability date: the EDGAR DISSEMINATION day, recovered from the bronze object's day partition. Systematically one dissemination day after `occurred_on`; this is the point-in-time anchor and the only date a backtest may key on.
occurred_ondateThe day the registration actually became effective, from `<finalEffectivenessDispDate>`. The real-world event date - earlier than `available_date`, and NOT a date anything could have been read on.
effective_attimestamp with time zoneThe exact effectiveness instant from `<finalEffectivenessDispDate>` + `<finalEffectivenessDispTime>`, e.g. 2024-04-12 16:00:00. US-Eastern wall clock stored under a UTC type, matching `edgar_filing_text.accepted_at`. MEASURED to vary (16:00:00, 16:30:00, 10:00:00 across sampled notices), so it is a real time and not a schema constant. NULL when the notice states a date but no time.
accepted_attimestamp with time zoneWhen SEC's own system GENERATED the notice (`<ACCEPTANCE-DATETIME>`) - always ~00:15 ET on the dissemination day. Provenance for the next-day mechanism; deliberately not the event time. NULL on a row ingested from the dissemination feed rather than from Archives: the feed's PDS envelope does not carry this stamp (measured absent on all 5,602 members of the 2025-08-29 feed day), so a NULL here is a fact about the envelope and not a decoder gap.
filed_as_ofdateSEC's legal filing date for the notice (`FILED AS OF DATE`), which equals `occurred_on` on every sampled notice. Kept for parity with `edgar_filings`; never an availability date - SEC back-dates it.
registered_formtextThe form that went effective - `S-1`, `S-3`, `S-4`, `F-1`, `N-1A`, `POS AM`, … From `<form>`, falling back to `<effectiveData><submissionType>` on the post-effective-amendment shape. This is the column that separates an IPO from a shelf from a fund registration.
registration_accessiontextAccession of the registration statement being declared effective, from `<effectiveData><accessionNumber>`. Present only on the post-effective-amendment shape; the exact filing-level link back to the document that went effective.
securities_acttextWhich statute the effectiveness is under, from `<act>`: `33` (Securities Act) or `40` (Investment Company Act).
cikbigintCentral Index Key of the PRIMARY registrant, from the first `<effectiveData><filer><cik>` with leading zeros stripped.
company_nametextPrimary registrant's name as stated in the notice (`<filer><entityName>`).
file_numbertextThe registration file number, e.g. `333-278013`. The join key BACK to the S-1/S-3 filed months earlier and FORWARD to every 424B* takedown off the same shelf.
co_registrant_ciksjsonb · not nullJSON array of `{cik, name, file_number}` for the co-registrants sharing this registration (guarantor subsidiaries on a `333-NNNNNN-NN` suffix), from the second and subsequent `<filer>` elements. Empty array on a single-registrant notice.
co_registrant_countinteger · not nullNumber of co-registrants on the notice (0 for a plain one, 60 for the GEO Group sample). A cheap proxy for a guaranteed-debt shelf, and the guard against fanning one effectiveness event into 61.
sic_codeintegerPrimary registrant's SIC code, from the bracketed integer in the SGML header's `STANDARD INDUSTRIAL CLASSIFICATION:` (or the feed envelope's bare `<ASSIGNED-SIC>`).
state_of_incorporationtextPrimary registrant's state/country of incorporation, from the SGML header's `STATE OF INCORPORATION:`.

Access edgar_effectiveness_notices

Two delivery paths, one identifier. Both require an Obscura account and an active subscription; the catalog entry and the schema above are public.

import obscura

client = obscura.Client("obs_live_…")

df = client.query(
    dataset="edgar_effectiveness_notices",
    symbols=["NVDA", "AAPL"],
    start="2024-01-01",
)

Create a free account Browse all 122 datasets

Frequently asked questions

What is in the edgar_effectiveness_notices dataset?

SEC notices that a registration statement has been declared effective - the moment an IPO, a shelf or a fund registration becomes usable. Carries which form went effective (S-1, S-3, N-1A), its 333- file number, the effectiveness time, and any co-registrants on the same registration. One SEC `EFFECT` notice - the announcement that a registration statement (S-1, S-3, S-4, F-1, N-1A, `POS AM`, …) has been **declared effective**, i.e. the moment an IPO, a shelf or a fund registration becomes usable. The notice is generated by SEC itself (every accession is `9999999995-YY-NNNNNN`), so the whole submission is a ~600-byte `primary_doc.xml`. It is one of very few EDGAR families carrying a real clock time: `effective_at` is the measured effectiveness instant, and `occurred_on` is its date part. Both are EARLIER than `available_date` - SEC batch-generates these notices at ~00:15 ET on the following dissemination morning, so the notice for a Friday-16:00 effectiveness first becomes readable on Monday. See `docs/datasets/edgar_effectiveness_notices.md`.

How do I avoid look-ahead bias with edgar_effectiveness_notices?

Filter on edgar_effectiveness_notices.available_date, the day the publisher made the row public. For this dataset that date is derived as follows - filing_join: available_date is the EDGAR DISSEMINATION day, taken from the bronze object's own day partition. It is systematically ONE dissemination day AFTER occurred_on because SEC batch-generates these notices at ~00:15 ET the next morning - MEASURED on the daily indexes for 2015-05-13/14 (39/39), 2019-08-14/15 (11/11) and 2024-04-12/15 (28/28). Dating a row from the effectiveness date instead is a one-day look-ahead on the whole family. A query of the form WHERE available_date <= '<as-of date>' never sees a row before it existed.

In what formats can I get edgar_effectiveness_notices?

As a Parquet bulk export (POST https://api.obscura.trade/v1/download) or as JSON from the typed query API (POST https://api.obscura.trade/v1/query), both with dataset="edgar_effectiveness_notices". The column schema is public at https://api.obscura.trade/v1/catalog/edgar_effectiveness_notices.

Can I filter edgar_effectiveness_notices by company or symbol?

Yes. edgar_effectiveness_notices carries cik, the column the API's symbols filter resolves against.

How often is edgar_effectiveness_notices updated?

Obscura refreshes edgar_effectiveness_notices on a every 6 hours schedule - that is the most frequent scheduled job that re-collects or re-exports the table. It is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when the publisher makes a row available is described by the availability rule above, and is recorded per row in available_date.

Related datasets

CFTC Commitments of Traders (COT)The CFTC's weekly Commitments of Traders report: how commercial, non-commercial and small traders are positioned in each… EPA Environmental Enforcement ActionsEnvironmental enforcement actions and penalties from the EPA's ECHO database. One row per case, with the facility, the s… EPA Regulated Facilities and ComplianceEPA-regulated facilities and their compliance history, from ECHO: one row per facility, with location, industry, permit … 13F Filing MetadataMetadata for every 13F report, the quarterly filing where large institutional managers list their U.S. equity holdings. … 13F Institutional HoldingsThe line-item positions inside each 13F: which manager held which security, and how much, each quarter. Deep history is … 13F Other Included ManagersWhich other manager reports a fund's 13F holdings, from the 13F-NT notices managers file when their positions appear on … SEC 8-K Item Codes and Material EventsThe item numbers reported on each 8-K (5.02 officer changes, 2.01 acquisitions, 1.01 material agreements, and so on), so… Asset-Backed Securities Distributions (Form 10-D)Form 10-D distribution reports for asset-backed securities: which trust paid out, for which distribution period, its dep…