Obscura

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 depositor and sponsor, the Regulation AB asset class, and whether asset-level data rode along with the filing. A monthly census of every publicly registered US securitisation trust and the deal parties behind it.

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

Category Regulatory Columns 22 Refresh Every 6 hours Entity key issuing_entity_cik Point-in-time available_date

What one row means

One **Form 10-D asset-backed issuer distribution report** - the mandated cover-page identity of one distribution period for one securitisation trust. 105,652 filings since 2015: a complete monthly census of every publicly-registered US securitisation, and the only public place where a trust, its depositor, its sponsor and its Reg AB asset class are stated together, per period, as identified CIKs. # What a row IS, and what it deliberately is not A row is the SUBMISSION'S IDENTITY: which trust, which period, which deal parties, which exhibits rode along. It is **not** the pool's numbers. Those live in `EX-99.1`, which Reg AB Item 1121 prescribes the *content* of and not the *shape* of: three opened servicer reports share no row labels, no column headers and not even a table count (10 vs 33 vs 33). A single field parser across 105,652 of those does not exist, so this table does not pretend to one. See `docs/datasets/edgar_abs_distributions.md`. # Every column here is a STRUCTURED SEC header field - none is parsed prose The design proposed reading the depositor, the sponsor and the trust off the cover page's English. It does not have to: SEC's own submission header states `<DEPOSITOR-CIK>`, `<SPONSOR-CIK>` and `ABS ASSET CLASS` outright, measured present on **156 of 156** filings sampled across 2015 and 2026. So the whole row is evidence class B, and the cover-page prose - the distribution date, the period start, the note-class table - is left unread rather than half-parsed. # The row costs 3.5 KB of bronze, not 52 MB The submission this describes is landed by [`edgar_abs_assets`](super::edgar_abs_asset) territory and can be enormous: one dissemination day of 10-D (2026-06-15, 106 filings) is **5.39 GB** of full submissions - median 657 KB, mean 52 MB, max 288 MB, 36 % over 10 MB - because 37 % of modern 10-Ds carry a Reg AB II asset-level `EX-102` XML rider. This dataset's bronze is instead SEC's own `-index-headers.html` submission-index object (2.5–6.6 KB, measured), which carries the complete SGML header AND the document manifest and nothing else. That is what keeps the cheap cover-page table from being hostage to the multi-terabyte asset-level one. # Two fields the trust's own block states are deliberately NOT carried A registrant's `STATE OF INCORPORATION` and `EIN` are per-block fields, and the shared header abstraction can scope them to the FIRST block only (`edgar_docs::party_field`). Here the first block is the DEPOSITOR on 19 % of filings, so reading them would record the depositor's domicile as the trust's - and reading them correctly would mean copying `HeaderField`'s spelling table into this collector, which is the failure CLAUDE.md's "fix the abstraction, not the eightieth call site" rule names. For a trust's boilerplate Delaware domicile that trade is not worth making: `issuing_entity_cik` is carried and `edgar_filings` holds both fields for every CIK.

One row per One row per Form 10-D / 10-D/A submission - one distribution period for one asset-backed issuing entity - keyed by its ACCESSION. The key is the accession and NOT the archive path because EDGAR indexes one submission under one path PER associated registrant, and a securitisation associates the trust, the depositor and often a co-issuer: measured on four dissemination days spanning 2015-2026 (master.20150415, 20190815, 20240415, 20260615), 468 index rows carry only 317 distinct submissions. Keying on the path would store 32 % of every period twice. A trust files ~12 rows a year for 3-7 years, so this is a genuine per-deal time series, not a snapshot..

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_abs_distributions: filing_join: available_date is the EDGAR DISSEMINATION day, taken from the bronze object's own day partition, never from the header's FILED AS OF DATE. period_end is CONFORMED PERIOD OF REPORT - SEC's own structured field, and systematically EARLIER than publication (CNH Equipment Trust 2023-A reports the period ending 2024-03-31 in a submission disseminated 2024-04-15), which is exactly why it can never be the availability date. The distribution date stated in the cover page's prose is deliberately NOT parsed, so there is no occurred_on: it is class C by construction and the submission bytes that carry it are 52 MB/filing on average.

Refresh cadence

Obscura refreshes edgar_abs_distributions 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 - 22 columns

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

ColumnTypeDescription
accessiontext · not nullPK. SEC accession number of the distribution report, e.g. `0001193125-26-269770`. The key is the accession, not the archive path: EDGAR lists one 10-D under the trust's CIK path, the depositor's, and any co-issuer's.
filenametext · not nullThe ISSUING ENTITY's SEC EDGAR Archives path for this report (`edgar/data/{issuing_entity_cik}/{accession}.txt`), derived from the payload's own registrant blocks 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. The point-in-time anchor and the only date a backtest may key on. It is NOT `period_end`, which precedes it by ~15 days on an amortising pool.
period_enddateThe as-of date the report describes (`CONFORMED PERIOD OF REPORT`) - SEC's own structured field and the most reliable date in the filing. Its MEANING varies by trust and the variation is real, not noise: an amortising pool states the collection period's month-end (`2024-03-31`), while many CMBS and credit-card trusts state the DISTRIBUTION date itself (`2024-06-17`, `2015-04-15`). Present on 156 of 156 sampled filings.
accepted_attimestamp with time zoneWhen SEC ACCEPTED the submission (`<ACCEPTANCE-DATETIME>`), US-Eastern wall clock stored under a UTC type. Provenance, never an availability date: an after-hours acceptance is disseminated the next morning, and this one runs three days early (`0001193125-26-269770`, accepted 2026-06-12 17:44:30, disseminated 2026-06-15).
filed_as_ofdateSEC's LEGAL filing date (`FILED AS OF DATE`). Kept for parity with `edgar_filings`; NEVER an availability date - SEC moves it in both directions across the EDGAR corpus.
form_typetext · not nullThe submission's form type - `10-D` or `10-D/A`. Amendments are 15 of 2,409 index rows in 2024Q2 (0.6 %).
is_amendmentboolean · not nullTRUE when this report AMENDS an earlier one for the same trust and period (`10-D/A`). A consumer building a period time series wants the latest row per `(issuing_entity_cik, period_end)`; a consumer reconstructing what was knowable on a date wants the original. The migration CHECKs this against `form_type` rather than trusting the writer.
asset_classtext**The Reg AB asset class, from SEC's own `ABS ASSET CLASS` header field** - a controlled publisher vocabulary, not free text: `Auto loans`, `Auto leases`, `Credit card`, `Equipment loans`, `Commercial mortgages`, `Residential mortgages - Other/Combined`, `Debt Securities`, `Other`. Present on 156 of 156 sampled filings spanning 2015-2026. This is the dimension that makes the table a consumer-credit panel rather than a filing list, and it exists nowhere in `edgar_filings`.
issuing_entity_cikbigintCentral Index Key of the ISSUING ENTITY - the trust itself. Identified STRUCTURALLY as the first registrant whose CIK is NOT `<DEPOSITOR-CIK>`, because a positional read is wrong on 29 of 156 sampled filings (19 %): Santander writes the DEPOSITOR's block first and the trust's second, so "the first FILER" records `SANTANDER DRIVE AUTO RECEIVABLES LLC` as the issuing entity of every Drive Auto Receivables Trust. The rule resolved on 156 of 156.
issuing_entity_nametextTrust name as EDGAR conforms it, e.g. `Drive Auto Receivables Trust 2021-3`, `CNH Equipment Trust 2023-A`. Taken from the header's registrant block, so it is the same string `edgar_filings` carries and joins to it without a second naming vocabulary.
issuing_entity_file_numbertextThe trust's own SEC file number on this report, e.g. `333-228364-19`. The `-NN` suffix identifies the deal WITHIN the depositor's shelf, which is what makes `shelf_file_number` recoverable.
shelf_file_numbertextThe `333-` SHELF the deal was registered off, with any co-registrant suffix removed (`333-228364-19` → `333-228364`) - **the column that groups every trust a depositor has ever issued**. NULL when the trust's number is not a Securities Act registration: `000-`/`001-` Exchange Act numbers really occur (Discover Card Master Trust I is `000-23108`), 154 of 156 sampled filings are `333-`. Derived, and the migration CHECKs the derivation rather than trusting it.
depositor_cikbigintCentral Index Key of the DEPOSITOR - the shelf registrant that sold the pool into the trust. From the header's structured `<DEPOSITOR-CIK>`, present on 156 of 156 sampled filings, so it never depends on the cover page's prose.
depositor_nametextDepositor name, and ONLY when the depositor is itself a registrant on this submission (40 % of filings, measured) - then it is EDGAR's conformed string. NULL otherwise, deliberately: `depositor_cik` is the join, `edgar_filings` carries the name for every CIK, and inventing one from the cover page's capitalised prose would seed a second naming vocabulary that drifts.
sponsor_cikbigintCentral Index Key of the SPONSOR - the originating lender whose credit book the pool is (`SANTANDER CONSUMER USA`, `CAPITAL ONE, NATIONAL ASSOCIATION`, `CNH INDUSTRIAL CAPITAL AMERICA LLC`). From the header's structured `<SPONSOR-CIK>`, present on 156 of 156. **This is the link from an anonymous trust to the operating company it is really about**, and the reason the table is worth having next to `edgar_filings`.
co_registrant_ciksjsonb · not nullEvery OTHER registrant CIK on the submission - neither the issuing entity nor the depositor - as an ordered JSON array. Non-empty on the two-tier collateral-certificate structures where a master trust issues a certificate that a note trust then issues against: `CAPITAL ONE MULTI ASSET EXECUTION TRUST` files with `CAPITAL ONE MASTER TRUST` (922869), American Express with two further entities. Empty array, never NULL, on the ordinary single-trust deal.
registrant_countinteger · not nullNumber of registrant blocks in the header - 1 to 4, measured. A structure proxy: 1 is a plain trust, 2 is the usual depositor + trust pair, 3-4 is a collateral-certificate stack.
document_countintegerNumber of documents in the submission (`PUBLIC DOCUMENT COUNT`).
exhibit_typesjsonb · not nullOrdered JSON array of the submission's document types, e.g. `["10-D","EX-99.1","EX-102","EX-103"]`. The manifest is kept; the bodies are NOT - the `EX-102` alone averages 93 MB.
has_asset_level_databoolean · not nullTRUE when Reg AB II asset-level XML (`EX-102`) rides in this submission - **the flag that identifies the filings carrying loan-by-loan data, and the join to `edgar_abs_assets`**. Also a hard vintage marker, measured: 0 of 50 filings on 2015-04-15 and 37 of 101 on 2026-06-15 (37 %), because the asset-level requirement phased in from November 2016.
has_servicer_reportboolean · not nullTRUE when an `EX-99.x` servicer distribution report rides on the submission - 145 of 151 sampled filings. Its NUMBERS are not parsed (no mandated schema; see the struct docs), but its presence says whether they exist to be parsed later from the sibling dataset's bronze.

Access edgar_abs_distributions

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_abs_distributions",
    symbols=["NVDA", "AAPL"],
    start="2024-01-01",
)

Create a free account Browse all 122 datasets

Frequently asked questions

What is in the edgar_abs_distributions dataset?

Form 10-D distribution reports for asset-backed securities: which trust paid out, for which distribution period, its depositor and sponsor, the Regulation AB asset class, and whether asset-level data rode along with the filing. A monthly census of every publicly registered US securitisation trust and the deal parties behind it. One **Form 10-D asset-backed issuer distribution report** - the mandated cover-page identity of one distribution period for one securitisation trust. 105,652 filings since 2015: a complete monthly census of every publicly-registered US securitisation, and the only public place where a trust, its depositor, its sponsor and its Reg AB asset class are stated together, per period, as identified CIKs. # What a row IS, and what it deliberately is not A row is the SUBMISSION'S IDENTITY: which trust, which period, which deal parties, which exhibits rode along. It is **not** the pool's numbers. Those live in `EX-99.1`, which Reg AB Item 1121 prescribes the *content* of and not the *shape* of: three opened servicer reports share no row labels, no column headers and not even a table count (10 vs 33 vs 33). A single field parser across 105,652 of those does not exist, so this table does not pretend to one. See `docs/datasets/edgar_abs_distributions.md`. # Every column here is a STRUCTURED SEC header field - none is parsed prose The design proposed reading the depositor, the sponsor and the trust off the cover page's English. It does not have to: SEC's own submission header states `<DEPOSITOR-CIK>`, `<SPONSOR-CIK>` and `ABS ASSET CLASS` outright, measured present on **156 of 156** filings sampled across 2015 and 2026. So the whole row is evidence class B, and the cover-page prose - the distribution date, the period start, the note-class table - is left unread rather than half-parsed. # The row costs 3.5 KB of bronze, not 52 MB The submission this describes is landed by [`edgar_abs_assets`](super::edgar_abs_asset) territory and can be enormous: one dissemination day of 10-D (2026-06-15, 106 filings) is **5.39 GB** of full submissions - median 657 KB, mean 52 MB, max 288 MB, 36 % over 10 MB - because 37 % of modern 10-Ds carry a Reg AB II asset-level `EX-102` XML rider. This dataset's bronze is instead SEC's own `-index-headers.html` submission-index object (2.5–6.6 KB, measured), which carries the complete SGML header AND the document manifest and nothing else. That is what keeps the cheap cover-page table from being hostage to the multi-terabyte asset-level one. # Two fields the trust's own block states are deliberately NOT carried A registrant's `STATE OF INCORPORATION` and `EIN` are per-block fields, and the shared header abstraction can scope them to the FIRST block only (`edgar_docs::party_field`). Here the first block is the DEPOSITOR on 19 % of filings, so reading them would record the depositor's domicile as the trust's - and reading them correctly would mean copying `HeaderField`'s spelling table into this collector, which is the failure CLAUDE.md's "fix the abstraction, not the eightieth call site" rule names. For a trust's boilerplate Delaware domicile that trade is not worth making: `issuing_entity_cik` is carried and `edgar_filings` holds both fields for every CIK.

How do I avoid look-ahead bias with edgar_abs_distributions?

Filter on edgar_abs_distributions.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, never from the header's FILED AS OF DATE. period_end is CONFORMED PERIOD OF REPORT - SEC's own structured field, and systematically EARLIER than publication (CNH Equipment Trust 2023-A reports the period ending 2024-03-31 in a submission disseminated 2024-04-15), which is exactly why it can never be the availability date. The distribution date stated in the cover page's prose is deliberately NOT parsed, so there is no occurred_on: it is class C by construction and the submission bytes that carry it are 52 MB/filing on average. 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_abs_distributions?

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_abs_distributions". The column schema is public at https://api.obscura.trade/v1/catalog/edgar_abs_distributions.

Can I filter edgar_abs_distributions by company or symbol?

Yes. edgar_abs_distributions carries issuing_entity_cik, the column the API's symbols filter resolves against.

How often is edgar_abs_distributions updated?

Obscura refreshes edgar_abs_distributions 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… ABS-15G Repurchase Demand ReportsABS-15G reports, filed by securitizers under Rules 15Ga-1 and 15Ga-2 on demands to repurchase loans out of a securitisat…