Obscura

13F Other Included Managers

Which other manager reports a fund's 13F holdings, from the 13F-NT notices managers file when their positions appear on somebody else's report - the link that explains why a large manager can show no holdings of its own. One row per named manager, joined to the reporting manager by 13F file number. Rosters are anchored on the SEC 13F file number, so a pre-2013 text-era entry printed under other numbering is not captured - measured at 1 entry in 208.

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

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

What one row means

One named relationship on a 13F cover page: manager A's holdings for a quarter are reported on manager B's Form 13F, not on A's own. A `13F-NT` is the SEC form that states exactly this and nothing else - "no holdings are reported in this report, and all holdings are reported by other reporting manager(s)" - so a notice carries no positions and its entire payload is the roster of the other managers it points at. This table IS that roster: one row per (notice, other manager). The notice's own cover row lives in `edgar_13f_filings` under the same `filename`, with `report_type = '13F NOTICE'` and `positions = 0`. It is the edge list of the 13F reporting graph, and it answers the question a holdings table cannot: **why does this manager appear to hold nothing?** A Berkshire subsidiary with $0 of reported 13F positions is not flat - it filed a notice naming Berkshire's file number, and its assets are inside Berkshire's information table. Without this edge, a portfolio built by summing `edgar_13f_holdings` per CIK silently attributes zero to every manager that reports through a parent, and double-counts nothing that would have warned you.

One row per (filename, seq) - one row per other-manager entry on one 13F cover page, `seq` being the entry's zero-based position in the roster as the filer printed it; the parent submission is one row in `edgar_13f_filings` under the same `filename`, and originals and their `/A` amendments are distinct rows (no dedup to one row per (manager, quarter)).

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_13f_other_managers: published: available_date is the EDGAR DISSEMINATION day the notice was distributed, taken from the bronze object's own day partition - never the submission's `FILED AS OF DATE`, which SEC back-dates. period_end is the `periodOfReport` quarter-end the relationship is AS OF, stated up to ~45 days before the notice was disseminated, and is never the availability anchor.

Refresh cadence

Obscura refreshes edgar_13f_other_managers 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 - 12 columns

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

ColumnTypeDescription
filenametext · not nullEDGAR accession/document path of the notice that printed this roster (e.g. `edgar/data/1584304/0001104659-25-078032.txt`); first half of the composite PK and the join key to the notice's own cover row in `edgar_13f_filings` and to `edgar_filings`.
seqinteger · not nullZero-based ordinal of this entry within the notice's roster, assigned by the order the filer printed it; second half of the composite PK. It is a position, not a rank - the roster carries no ordering semantics.
cikbigint · not nullSEC Central Index Key of the manager that FILED the notice - the one whose holdings are reported elsewhere. Copied from the notice's cover page onto every roster row, exactly as `edgar_13f_holdings.cik` copies the filer down onto every position.
available_datedatePublic availability date: the day EDGAR disseminated the notice, so the first day this relationship could be acted on. The point-in-time anchor.
period_enddateReporting-period end (`periodOfReport`) - the quarter the relationship is AS OF. Stated up to ~45 days before dissemination, so NEVER the availability date.
submission_typetextSEC form type of the notice this entry came from: `13F-NT` original vs `13F-NT/A` amendment. The grain keeps amendments as distinct rows; this is the only column that says which, so a consumer reconstructing a quarter's graph takes the latest `available_date` per (cik, period_end).
relationshiptext · not null**WHICH WAY THE RELATIONSHIP RUNS.** `reports_for_filer` - the other manager named in this row reports the FILER's holdings on its own Form 13F. This is the only value written today (a `13F-NT` roster is `otherManagersInfo`, "List of Other Managers Reporting for this Manager"), and it is a stored column rather than an assumption because the sibling roster on a 13F-HR combination report (`otherManagers2Info`) runs the OPPOSITE way - there the filer aggregates the other manager's holdings. Collapsing the two directions into one untagged edge list would invert half the graph.
other_manager_cikbigintSEC Central Index Key of the OTHER manager - the one whose Form 13F actually carries the filer's positions. NULL when the filer did not state it: the pre-2013 text roster has no CIK column at all, and the XML `<otherManager>` element leaves `<cik>` optional (measured absent on 105 of 237 entries across 2013-2025, not just early filings). Prefer `other_manager_file_number` as the join key.
other_manager_nametextName of the OTHER manager as the filer wrote it (`<name>`, or the name column of the printed roster). Free text, never a resolved entity - the same institution appears as `Berkshire Hathaway Inc.` and `BERKSHIRE HATHAWAY INC`. XML character entities are decoded, so `Deer VII &amp; Co. Ltd.` is stored as `Deer VII & Co. Ltd.`.
other_manager_file_numbertext**THE JOIN KEY**, normalised to the canonical SEC form `028-NNNNN`. A 13F file number identifies a manager's 13F series and is stable across quarters, so this is what reaches the other manager's own filings - `edgar_13f_filings.form_13f_file_number`. Normalisation is load-bearing: filers write the same number as `028-04545`, `28-4545` and `028 - 4545`, and an unnormalised string joins to none of them. NULL when the filer printed no number (measured 6 of 237 XML entries and 1 of 208 text-era entries).
other_manager_file_number_rawtextThe file number EXACTLY as filed, before normalisation (`28-4545`, `028 - 14490`). Kept so the normalisation is auditable from the row itself and a future re-normalisation never has to re-read bronze.
scraped_attimestamp with time zone · not nullInternal ingestion timestamp (`Utc::now()` at upsert); the `synced_at`-equivalent for this dataset, EXCLUDED from exports and not a source event time.

Access edgar_13f_other_managers

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

Create a free account Browse all 122 datasets

Frequently asked questions

What is in the edgar_13f_other_managers dataset?

Which other manager reports a fund's 13F holdings, from the 13F-NT notices managers file when their positions appear on somebody else's report - the link that explains why a large manager can show no holdings of its own. One row per named manager, joined to the reporting manager by 13F file number. Rosters are anchored on the SEC 13F file number, so a pre-2013 text-era entry printed under other numbering is not captured - measured at 1 entry in 208. One named relationship on a 13F cover page: manager A's holdings for a quarter are reported on manager B's Form 13F, not on A's own. A `13F-NT` is the SEC form that states exactly this and nothing else - "no holdings are reported in this report, and all holdings are reported by other reporting manager(s)" - so a notice carries no positions and its entire payload is the roster of the other managers it points at. This table IS that roster: one row per (notice, other manager). The notice's own cover row lives in `edgar_13f_filings` under the same `filename`, with `report_type = '13F NOTICE'` and `positions = 0`. It is the edge list of the 13F reporting graph, and it answers the question a holdings table cannot: **why does this manager appear to hold nothing?** A Berkshire subsidiary with $0 of reported 13F positions is not flat - it filed a notice naming Berkshire's file number, and its assets are inside Berkshire's information table. Without this edge, a portfolio built by summing `edgar_13f_holdings` per CIK silently attributes zero to every manager that reports through a parent, and double-counts nothing that would have warned you.

How do I avoid look-ahead bias with edgar_13f_other_managers?

Filter on edgar_13f_other_managers.available_date, the day the publisher made the row public. For this dataset that date is derived as follows - published: available_date is the EDGAR DISSEMINATION day the notice was distributed, taken from the bronze object's own day partition - never the submission's `FILED AS OF DATE`, which SEC back-dates. period_end is the `periodOfReport` quarter-end the relationship is AS OF, stated up to ~45 days before the notice was disseminated, and is never the availability anchor. 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_13f_other_managers?

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

Can I filter edgar_13f_other_managers by company or symbol?

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

How often is edgar_13f_other_managers updated?

Obscura refreshes edgar_13f_other_managers 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 … 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… 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…