ABS-15G Repurchase Demand Reports
ABS-15G reports, filed by securitizers under Rules 15Ga-1 and 15Ga-2 on demands to repurchase loans out of a securitisation. The signal is the negative space: EDGAR records three 'no activity' checkboxes in the filing header, so a report with none of them checked is one where investors actually demanded loans be bought back.
edgar_abs_securitizer_reports - the dataset name to pass to the Obscura API.
What one row means
One **Form ABS-15G** report - the Dodd-Frank Section 15G disclosure a securitizer must make about the representations and warranties on its asset-backed deals, and about the third-party due diligence performed on them. The form carries two different obligations, and `abs_rule` says which: * **`RULE-15GA1`** - the periodic (initial / quarterly / annual) report of **repurchase demands** made on the securitizer for breaches of its representations and warranties. This is the repurchase-demand history: which securitizer, which asset class, which reporting period, and - the column that matters - whether it had anything to report at all. * **`RULE-15GA2`** - the findings and conclusions of a third-party due diligence provider, furnished at the time of a rated ABS offering. # WHAT IS STRUCTURED HERE IS THE HEADER, AND THAT IS WHERE THE SIGNAL IS The body of an ABS-15G is HTML prose, and where a securitizer HAS activity to report the detail arrives as a free-form exhibit table whose shape varies by filer (`REPURCHASE REPORTING`, `AMC EXCEPTION GRADES`, `AMC DATA COMPARE`, …). None of that is a schema, and nothing here invents one. **But EDGAR structures the three no-activity checkboxes itself**, in the submission header, as `<NO-INITIAL-PERIOD-ACTIVITY>`, `<NO-QUARTERLY-ACTIVITY>` and `<NO-ANNUAL-ACTIVITY>` - and they mirror the form's own boxes exactly. `Y` means the securitizer certified it had NO repurchase activity for that period; a `RULE-15GA1` filing with none of them set is a securitizer that DID. That is `reports_repurchase_activity`, and it is the whole repurchase-demand history reduced to one boolean per securitizer per period with no HTML parsing at all. Measured on the 2024-02-14 dissemination day: 152 ABS-15G filings, 147 under Rule 15Ga-1, of which **3 report activity** and 144 certify none. # FOUR PARTIES, ONE ROW EDGAR's header carries up to four separate blocks - `FILER:`, `DEPOSITOR:`, `SECURITIZER:`, `ISSUING ENTITY:` - which are frequently, but not always, the same company. Each is kept as its own CIK/name pair, because the depositor of a shelf and the trust that issued one deal off it are different legal entities and collapsing them would destroy the join. See `docs/datasets/edgar_abs_securitizer_reports.md` and `docs/availability/edgar_abs_securitizer_reports.md`.
One row per One row per ABS-15G or ABS-15G/A submission, keyed by its ACCESSION. The key is the accession and NOT the archive path because EDGAR indexes the submission under one path PER associated party and this form names up to four: measured over three dissemination days spanning 2024-2026, 376 submissions occupy 402 index rows - 363 with one path, 2 with two, 10 with three and 1 with four. Keying on the path would count one Toyota report three times, once as the filer, once as the depositor and once as the issuing entity. The other parties are their own columns on the same row, never extra rows..
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_securitizer_reports: 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. WHY: SEC back-dates FILED AS OF DATE on 4.88 % of the EDGAR corpus, so no collector here may read it as an availability date - but this family is measurably NOT one of the offenders. On the 2024-02-14 dissemination feed all 152 ABS-15G submissions carry FILED AS OF DATE == the dissemination day, zero lag, and the form has no embargo: Rule 15Ga-1 reports are due on a fixed calendar (Feb 14 / quarterly) and are disseminated the day they are filed. The rule is nonetheless the object's own partition, because that is the one mechanism the whole EDGAR family shares and a 4.88 % corpus-wide defect is not something to opt out of on a 152-filing sample. Evidence class B; see docs/availability/edgar_abs_securitizer_reports.md. period_start/period_end are the Rule 15Ga-1 REPORTING WINDOW and are never availability anchors.
Refresh cadence
Obscura refreshes edgar_abs_securitizer_reports 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 - 31 columns
The full public column list for edgar_abs_securitizer_reports, with the meaning of every field. The same
schema is served unauthenticated at https://api.obscura.trade/v1/catalog/edgar_abs_securitizer_reports.
| Column | Type | Description |
|---|---|---|
| accession | text · not null | PK. SEC accession number of the submission, e.g. `0000769993-24-000200`. The key is the accession, not the archive path: EDGAR lists one report under the path of every party it names. |
| filename | text · not null | The FILING party's SEC EDGAR Archives path for this submission (`edgar/data/{cik}/{accession}.txt`), derived from the payload's own first `FILER:` block rather than from whichever of the report's index rows was walked - so it is the same value on every ingestion path. The join key into `edgar_filings`. |
| available_date | date | Public 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. |
| period_start | date | First day of the Rule 15Ga-1 REPORTING WINDOW (`PERIOD START:` / `<PERIOD-START>`) - the period the repurchase-demand disclosure covers. A calendar year on an annual report, a quarter on a quarterly one. NULL on a Rule 15Ga-2 due-diligence report, which covers no period. |
| period_end | date | Last day of the Rule 15Ga-1 reporting window (`CONFORMED PERIOD OF REPORT` / `<PERIOD>`). **NULL on every Rule 15Ga-2 filing by design**: that form has no reporting period, and EDGAR fills the field with the filing date instead - measured on 5 of 5 Rule 15Ga-2 submissions in the 2024-02-14 feed, all stating `20240214` with no period start. Storing that would fabricate a one-day reporting period equal to the availability date, which is exactly the collapse this column exists to prevent. |
| accepted_at | timestamp with time zone | When SEC ACCEPTED the submission (`<ACCEPTANCE-DATETIME>`), US-Eastern wall clock under a UTC type. Provenance only. NULL on a row ingested from the dissemination feed, whose envelope does not carry this stamp - a fact about the envelope, not a decoder gap. |
| filed_as_of | date | SEC's LEGAL filing date (`FILED AS OF DATE`). Kept for parity with `edgar_filings`; never an availability date, though on this family it happens to agree - 152 of 152 on the measured dissemination day. |
| form_type | text · not null | The submission type exactly as EDGAR states it: `ABS-15G` or `ABS-15G/A`. Measured as the complete family on four quarterly form indexes spanning 2015-2026. |
| is_amendment | boolean · not null | TRUE when this is an amendment (`ABS-15G/A`) restating an earlier report. A material share of the family - 189 of 1,433 in 2024Q1 - because a securitizer that discovers unreported demands amends rather than re-files. Derived from `form_type`; the migration CHECKs the derivation. |
| abs_rule | text | **WHICH OBLIGATION this report satisfies**, from `ABS RULE:` / `<ABS-RULE>`: `RULE-15GA1` (periodic repurchase-demand disclosure) or `RULE-15GA2` (third-party due diligence findings on a rated offering). The discriminator for every other column on the row - the activity flags and the reporting period exist only under 15Ga-1, `registered_entity` only under 15Ga-2. |
| item_code | text | SEC's item code for the disclosure, e.g. `1.01` (initial 15Ga-1 filing), `1.02` (periodic 15Ga-1 filing), `2.01` (due-diligence findings obtained by the issuer). Stated directly as `<ITEMS>` in the dissemination envelope; recovered from the item TITLE on an Archives-envelope submission, which states the title and not the code. |
| item_title | text | SEC's own long title for the item, verbatim: `Periodic Filing of Rule 15Ga-1 Representations and Warranties Disclosure`, `Initial Filing of Rule 15Ga-1 Representations and Warranties Disclosure`, `Findings and Conclusions of the Third Party Due Diligence Provider Obtained by the Issuer`. Stated in the Archives envelope; filled from a measured code→title table on the dissemination envelope, and left NULL for a code whose title has not been observed rather than guessed at. |
| asset_class | text | The ASSET CLASS the report covers, in EDGAR's own controlled vocabulary (`ABS ASSET CLASS:` / `<ABS-ASSET-CLASS>`): `Residential mortgages - Prime`, `Residential mortgages - Non-Prime`, `Residential mortgages - Other/Combined`, `Residential mortgages - Reverse Mortgages`, `Commercial mortgages`, `Auto loans`, `Credit card`, `Student loans`, `Other`. The dimension that turns this table into a per-sector repurchase-demand series. |
| registered_entity | boolean | The securitizer's `REGISTERED ENTITY:` / `<REGISTERED-ENTITY>` flag: TRUE when the offering the due-diligence report concerns is SEC-REGISTERED rather than a private (144A/Reg D) placement. Stated only on Rule 15Ga-2 filings - NULL under 15Ga-1 - and it is what separates a public shelf deal from a private one. |
| no_initial_period_activity | boolean | The Rule 15Ga-1(c)(1) box: TRUE when the securitizer certified it had **no repurchase activity to report for the INITIAL period**. NULL when the header does not state the box, which is every filing that is not an initial 15Ga-1 report. |
| no_quarterly_activity | boolean | The Rule 15Ga-1(c)(2)(i) box: TRUE when the securitizer certified it had **no repurchase activity for the QUARTERLY period**. |
| no_annual_activity | boolean | The Rule 15Ga-1(c)(2)(ii) box: TRUE when the securitizer certified it had **no repurchase activity for the ANNUAL period**. |
| reports_repurchase_activity | boolean | **THE SIGNAL. TRUE when this Rule 15Ga-1 report actually discloses repurchase demands** - i.e. none of the three no-activity boxes is checked. NULL on a Rule 15Ga-2 filing, which reports due diligence rather than demands. Rare and therefore informative: 3 of 147 Rule 15Ga-1 filings on the measured 2024-02-14 dissemination day, and the demand detail itself is in the exhibit the `exhibits` inventory names (`REPURCHASE REPORTING`). Derived purely from the three flags in this row, and the migration CHECKs the derivation rather than trusting the writer. |
| filer_cik | bigint | Central Index Key of the FILING party (the header's first `FILER:` block) - whoever transmitted the report, which on most filings is also the depositor or the securitizer. |
| filer_name | text | The filing party's name as EDGAR conforms it, e.g. `GS MORTGAGE SECURITIES CORP II`. |
| filer_file_number | text | The filing party's SEC file number. A `025-` number is the securitizer's own Section 15G file number; a `333-` number is the shelf registration the deal was offered off. |
| depositor_cik | bigint | Central Index Key of the DEPOSITOR - the entity that deposits the assets into the trust. NULL when the header names no depositor block, which is most Rule 15Ga-1 periodic reports. |
| depositor_name | text | The depositor's conformed name. |
| securitizer_cik | bigint | Central Index Key of the SECURITIZER - the party that actually bears the Section 15G obligation and against whom repurchase demands are made. |
| securitizer_name | text | The securitizer's conformed name. |
| issuing_entity_cik | bigint | Central Index Key of the ISSUING ENTITY - the specific trust, e.g. `Toyota Auto Receivables 2024-B Owner Trust`. Named only on Rule 15Ga-2 filings, which concern one deal; a periodic 15Ga-1 report covers a securitizer's whole book and names no trust. **NULL on every row ingested from the dissemination feed**, which is the only production path: the two envelopes DISAGREE about this block, measured on accession `0000929638-24-001465`, where the Archives envelope carries an `ISSUING ENTITY:` section naming CIK 2012786 and the dissemination envelope of the SAME submission carries `<FILER>`, `<DEPOSITOR>` and `<SECURITIZER>` and no issuing-entity section at all. That is a fact about the envelope, not a decoder gap - the same shape as `accepted_at`. The trust is recoverable for any accession from `edgar_filings`, which indexes the submission under the trust's own CIK path. |
| issuing_entity_name | text | The issuing entity's conformed name - the deal name, and the join key to that trust's own `10-D` distribution reports and `ABS-EE` asset data. Subject to the same envelope asymmetry as `issuing_entity_cik`: NULL on feed-ingested rows, recoverable from `edgar_filings`. |
| sic_code | integer | The filing party's SIC code; `6189` (asset-backed securities) on essentially the whole family. |
| state_of_incorporation | text | The filing party's state or country of incorporation, e.g. `DE`. |
| document_count | integer | Number of documents in the submission (`PUBLIC DOCUMENT COUNT:`). 1 on a no-activity certification, 3 on a typical due-diligence report, up to 13 when a filer attaches a full exception-grade pack. |
| exhibits | jsonb · not null | Ordered JSON array of every NON-image document in the submission as `[{"type":…,"sequence":…,"filename":…,"description":…}]`. The `<DESCRIPTION>` is the filer's own label and it is where the repurchase detail is named - `REPURCHASE REPORTING`, `REPORT OF INDEPENDENT ACCOUNTANTS ON APPLYING AGREED-UPON PROCEDURES`, `AMC DUE DILIGENCE EXECUTIVE SUMMARY`. This inventory is how a consumer reaches the underlying table; the table itself is filer-specific HTML and is deliberately not parsed. |
Access edgar_abs_securitizer_reports
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_securitizer_reports",
symbols=["NVDA", "AAPL"],
start="2024-01-01",
)
Create a free account Browse all 122 datasets
Frequently asked questions
What is in the edgar_abs_securitizer_reports dataset?
ABS-15G reports, filed by securitizers under Rules 15Ga-1 and 15Ga-2 on demands to repurchase loans out of a securitisation. The signal is the negative space: EDGAR records three 'no activity' checkboxes in the filing header, so a report with none of them checked is one where investors actually demanded loans be bought back. One **Form ABS-15G** report - the Dodd-Frank Section 15G disclosure a securitizer must make about the representations and warranties on its asset-backed deals, and about the third-party due diligence performed on them. The form carries two different obligations, and `abs_rule` says which: * **`RULE-15GA1`** - the periodic (initial / quarterly / annual) report of **repurchase demands** made on the securitizer for breaches of its representations and warranties. This is the repurchase-demand history: which securitizer, which asset class, which reporting period, and - the column that matters - whether it had anything to report at all. * **`RULE-15GA2`** - the findings and conclusions of a third-party due diligence provider, furnished at the time of a rated ABS offering. # WHAT IS STRUCTURED HERE IS THE HEADER, AND THAT IS WHERE THE SIGNAL IS The body of an ABS-15G is HTML prose, and where a securitizer HAS activity to report the detail arrives as a free-form exhibit table whose shape varies by filer (`REPURCHASE REPORTING`, `AMC EXCEPTION GRADES`, `AMC DATA COMPARE`, …). None of that is a schema, and nothing here invents one. **But EDGAR structures the three no-activity checkboxes itself**, in the submission header, as `<NO-INITIAL-PERIOD-ACTIVITY>`, `<NO-QUARTERLY-ACTIVITY>` and `<NO-ANNUAL-ACTIVITY>` - and they mirror the form's own boxes exactly. `Y` means the securitizer certified it had NO repurchase activity for that period; a `RULE-15GA1` filing with none of them set is a securitizer that DID. That is `reports_repurchase_activity`, and it is the whole repurchase-demand history reduced to one boolean per securitizer per period with no HTML parsing at all. Measured on the 2024-02-14 dissemination day: 152 ABS-15G filings, 147 under Rule 15Ga-1, of which **3 report activity** and 144 certify none. # FOUR PARTIES, ONE ROW EDGAR's header carries up to four separate blocks - `FILER:`, `DEPOSITOR:`, `SECURITIZER:`, `ISSUING ENTITY:` - which are frequently, but not always, the same company. Each is kept as its own CIK/name pair, because the depositor of a shelf and the trust that issued one deal off it are different legal entities and collapsing them would destroy the join. See `docs/datasets/edgar_abs_securitizer_reports.md` and `docs/availability/edgar_abs_securitizer_reports.md`.
How do I avoid look-ahead bias with edgar_abs_securitizer_reports?
Filter on edgar_abs_securitizer_reports.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. WHY: SEC back-dates FILED AS OF DATE on 4.88 % of the EDGAR corpus, so no collector here may read it as an availability date - but this family is measurably NOT one of the offenders. On the 2024-02-14 dissemination feed all 152 ABS-15G submissions carry FILED AS OF DATE == the dissemination day, zero lag, and the form has no embargo: Rule 15Ga-1 reports are due on a fixed calendar (Feb 14 / quarterly) and are disseminated the day they are filed. The rule is nonetheless the object's own partition, because that is the one mechanism the whole EDGAR family shares and a 4.88 % corpus-wide defect is not something to opt out of on a 152-filing sample. Evidence class B; see docs/availability/edgar_abs_securitizer_reports.md. period_start/period_end are the Rule 15Ga-1 REPORTING WINDOW and are never availability anchors. 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_securitizer_reports?
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_securitizer_reports". The column schema is public at https://api.obscura.trade/v1/catalog/edgar_abs_securitizer_reports.
Can I filter edgar_abs_securitizer_reports by company or symbol?
Yes. edgar_abs_securitizer_reports carries securitizer_cik, the column the API's symbols filter resolves against.
How often is edgar_abs_securitizer_reports updated?
Obscura refreshes edgar_abs_securitizer_reports 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.