EDGAR N-PORT Filings
Metadata for N-PORT filings, the monthly portfolio reports that registered funds submit to the SEC.
edgar_nport_filings — the dataset name to pass to the Obscura API.
What one row means
One N-PORT filing's fund-level cover summary: the registrant, its reported series/fund, the reporting-period totals (total/net assets, liabilities), and the count of portfolio positions parsed from a single NPORT-P (or NPORT-P/A) submission. Detailed positions live in the child table `edgar_nport_holdings`; this table is the one-row-per-filing header.
One row per (filename).
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_nport_filings: published: available_date is recovered by joining the primary key filename to edgar_filings.event_date, the SEC daily-index "Date Filed" — the filing's true public-dissemination date.
Refresh cadence
Obscura refreshes edgar_nport_filings every weekday — 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 — 40 columns
The full public column list for edgar_nport_filings, with the meaning of every field. The same
schema is served unauthenticated at https://api.obscura.trade/v1/catalog/edgar_nport_filings.
| Column | Type | Description |
|---|---|---|
| filename | text · not null | EDGAR filing path (e.g. edgar/data/CIK/ACCESSION.txt); primary key; foreign-joins to edgar_filings.filename and edgar_nport_holdings.filename. |
| reg_cik | bigint | Registrant CIK parsed from genInfo/regCik; the SEC entity that filed the N-PORT. |
| series_name | text | Fund series display name from genInfo/seriesName (e.g. "Bright Rock Mid Cap Growth Fund"). |
| series_id | text | SEC fund series identifier from genInfo/seriesId (e.g. S000012345). |
| available_date | date | The filing's SEC dissemination date — when the public could first see it. Recovered from edgar_filings via filename. The point-in-time anchor. |
| period_end | date | Report-period end (repPdDate) the holdings are AS OF; filed ~60 days later, so never the availability date. |
| total_assets | double precision | Fund total assets in USD as of the reporting period, from fundInfo/totAssets. |
| total_liabilities | double precision | Fund total liabilities in USD as of the reporting period, from fundInfo/totLiabs. |
| net_assets | double precision | Fund net assets in USD as of the reporting period, from fundInfo/netAssets. |
| reg_name | text | Registrant (fund-family) entity name from genInfo/regName; the filer entity behind reg_cik, distinct from the child series_name. |
| reg_lei | text | Registrant Legal Entity Identifier from genInfo/regLei; canonical cross-dataset entity id for the filer. |
| series_lei | text | Fund series Legal Entity Identifier from genInfo/seriesLei. |
| reg_file_number | text | Investment Company Act file number from genInfo/regFileNumber (e.g. 811-21598); a stable registrant identifier. |
| is_final_filing | boolean | Final-filing flag from genInfo/isFinalFiling (Y/N → bool): the fund's last N-PORT — a liquidation / deregistration signal. |
| rep_pd_end | date | Fiscal-year-end horizon date from genInfo/repPdEnd; distinct from period_end (repPdDate, the as-of period the holdings reflect). |
| mon1_flow_sales | double precision | Month-1 subscriptions (share sales) in USD from fundInfo/mon1Flow/sales. |
| mon1_flow_reinvestment | double precision | Month-1 reinvestment inflow in USD from fundInfo/mon1Flow/reinvestment. |
| mon1_flow_redemption | double precision | Month-1 redemption outflow in USD from fundInfo/mon1Flow/redemption. |
| mon2_flow_sales | double precision | Month-2 subscriptions (share sales) in USD from fundInfo/mon2Flow/sales. |
| mon2_flow_reinvestment | double precision | Month-2 reinvestment inflow in USD from fundInfo/mon2Flow/reinvestment. |
| mon2_flow_redemption | double precision | Month-2 redemption outflow in USD from fundInfo/mon2Flow/redemption. |
| mon3_flow_sales | double precision | Month-3 subscriptions (share sales) in USD from fundInfo/mon3Flow/sales. |
| mon3_flow_reinvestment | double precision | Month-3 reinvestment inflow in USD from fundInfo/mon3Flow/reinvestment. |
| mon3_flow_redemption | double precision | Month-3 redemption outflow in USD from fundInfo/mon3Flow/redemption. |
| amt_pay_one_yr_banks_borr | double precision | Borrowings/payables due within one year to banks (fundInfo/amtPayOneYrBanksBorr); USD. |
| amt_pay_one_yr_ctrld_comp | double precision | Borrowings/payables due within one year to controlled companies (fundInfo/amtPayOneYrCtrldComp); USD. |
| amt_pay_one_yr_oth_affil | double precision | Borrowings/payables due within one year to other affiliates (fundInfo/amtPayOneYrOthAffil); USD. |
| amt_pay_one_yr_other | double precision | Borrowings/payables due within one year to other counterparties (fundInfo/amtPayOneYrOther); USD. |
| amt_pay_aft_one_yr_banks_borr | double precision | Borrowings/payables due after one year to banks (fundInfo/amtPayAftOneYrBanksBorr); USD. |
| amt_pay_aft_one_yr_ctrld_comp | double precision | Borrowings/payables due after one year to controlled companies (fundInfo/amtPayAftOneYrCtrldComp); USD. |
| amt_pay_aft_one_yr_oth_affil | double precision | Borrowings/payables due after one year to other affiliates (fundInfo/amtPayAftOneYrOthAffil); USD. |
| amt_pay_aft_one_yr_other | double precision | Borrowings/payables due after one year to other counterparties (fundInfo/amtPayAftOneYrOther); USD. |
| assets_invested | double precision | Assets invested for the fund's own account (fundInfo/assetsInvested); USD. |
| assets_attr_misc_sec | double precision | Assets attributable to miscellaneous securities (fundInfo/assetsAttrMiscSec); USD. |
| liquid_pref | double precision | Liquidation preference of outstanding preferred stock (fundInfo/liquidPref); USD. |
| stand_by_commit | double precision | Payable on stand-by commitment agreements (fundInfo/standByCommit); USD. |
| delay_deliv | double precision | Payable on delayed-delivery / when-issued transactions (fundInfo/delayDeliv); USD. |
| csh_not_rptd_in_cor_d | double precision | Cash not reported in the categories of investments detail (fundInfo/cshNotRptdInCorD); USD. |
| holdings | integer · not null | Count of portfolio positions parsed and stored for this filing (fund.holdings.len()); NOT NULL default 0. Capped by max_holdings_per_filing (default 5000), so may under-count very large bond-fund portfolios. |
| scraped_at | timestamp with time zone · not null | Internal ingestion timestamp (Utc::now() at upsert); NOT NULL default now(). Internal-only, excluded from exports; not a source event date. |
Access edgar_nport_filings
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_nport_filings",
symbols=["NVDA", "AAPL"],
start="2024-01-01",
)
Create a free account Browse all 95 datasets
Frequently asked questions
What is in the edgar_nport_filings dataset?
Metadata for N-PORT filings, the monthly portfolio reports that registered funds submit to the SEC. One N-PORT filing's fund-level cover summary: the registrant, its reported series/fund, the reporting-period totals (total/net assets, liabilities), and the count of portfolio positions parsed from a single NPORT-P (or NPORT-P/A) submission. Detailed positions live in the child table `edgar_nport_holdings`; this table is the one-row-per-filing header.
How do I avoid look-ahead bias with edgar_nport_filings?
Filter on edgar_nport_filings.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — published: available_date is recovered by joining the primary key filename to edgar_filings.event_date, the SEC daily-index "Date Filed" — the filing's true public-dissemination date. 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_nport_filings?
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_nport_filings". The column schema is public at https://api.obscura.trade/v1/catalog/edgar_nport_filings.
Can I filter edgar_nport_filings by company or symbol?
Yes. edgar_nport_filings carries series_id, the column the API's symbols filter resolves against.
How often is edgar_nport_filings updated?
Obscura refreshes edgar_nport_filings on a every weekday 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.