Obscura

EDGAR N-PORT Holdings

Holdings inside fund N-PORT reports, security by security.

edgar_nport_holdings — the dataset name to pass to the Obscura API.

Category Regulatory Columns 30 Refresh Every weekday Entity key ticker Point-in-time available_date

What one row means

A single security position (one `invstOrSec` line) reported in an SEC Form N-PORT-P filing — a registered fund's holding of one security, with the issuer, its identifiers (CUSIP/ISIN/ticker/LEI), balance, USD value and percent of net assets. Parsed from the filing's `edgarSubmission` XML `invstOrSec` list.

One row per (filename, seq).

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_holdings: join-derived: available_date = edgar_filings.event_date via filename, the SEC dissemination/acceptance date of the N-PORT-P filing.

Refresh cadence

Obscura refreshes edgar_nport_holdings 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 — 30 columns

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

ColumnTypeDescription
filenametext · not nullEDGAR archive path of the N-PORT-P submission (under sec.gov/Archives/); part of PK, denormalized from edgar_filings and used to join back to the filing's public filing date.
seqinteger · not null0-based position index within the filing's invstOrSec list; assigned by the task via `.enumerate()`, not sourced from the filing. Part of PK.
reg_cikbigintFiler (registrant) CIK, denormalized from the filing's genInfo/regCik for easy joins.
available_datedateThe filing's SEC dissemination date — when the public could first see it. Recovered (DB-generated) from edgar_filings via filename. The point-in-time anchor.
period_enddateReport-period end (`repPdDate`) the holdings are AS OF; filed ~60 days later, so never the availability date.
nametextIssuer / security name as reported in invstOrSec/name.
titletextSecurity title / description (invstOrSec/title), e.g. the instrument label.
cusiptextSecurity CUSIP (invstOrSec/cusip); indexed. Nullable.
isintextSecurity ISIN from invstOrSec/identifiers/isin@value. Nullable.
tickertextSecurity ticker from invstOrSec/identifiers/ticker@value; indexed. Nullable.
leitextLegal Entity Identifier of the issuer (invstOrSec/lei). Nullable.
balancedouble precisionQuantity held; interpretation depends on units (shares for NS, principal amount for PA, etc.).
unitstextUnits of balance: "NS" (shares), "PA" (principal amount), ...
cur_cdtextCurrency code of the position (invstOrSec/curCd), e.g. USD.
val_usddouble precisionUSD market value of the position (invstOrSec/valUSD).
pct_valdouble precisionPercent of the fund's net assets.
payoff_profiletext"Long" / "Short".
asset_cattextAsset category (EC=equity common, DBT=debt, ...).
issuer_cattextIssuer category (CORP, USGSE, ...).
inv_countrytextInvestment / issuer country code (invstOrSec/invCountry), e.g. US.
fair_val_leveltextASC 820 fair-value hierarchy level (invstOrSec/fairValLevel): "1"/"2"/"3" (level 3 = unobservable inputs, hard to value). Valuation-quality signal.
is_restricted_secbooleanRestricted-security flag (invstOrSec/isRestrictedSec, Y/N → bool): 144A / illiquid. A liquidity status not derivable from other stored fields.
is_loan_by_fundbooleanSecurities-lending flag (invstOrSec/securityLending/isLoanByFund, Y/N → bool): whether this position is out on loan by the fund.
is_cash_collateralbooleanLoan collateral flag (securityLending/isCashCollateral, Y/N → bool): whether cash collateral was received for a loaned position.
is_non_cash_collateralbooleanLoan collateral flag (securityLending/isNonCashCollateral, Y/N → bool): whether non-cash collateral was received for a loaned position.
maturity_dtdateDebt-security maturity date (invstOrSec/debtSec/maturityDt); present only for fixed-income holdings, parsed `%Y-%m-%d`.
coupon_kindtextDebt-security coupon type (invstOrSec/debtSec/couponKind), e.g. "Fixed" / "Floating" / "Zero coupon". Fixed-income only.
annualized_rtdouble precisionDebt-security annualized coupon rate percent (invstOrSec/debtSec/annualizedRt). Fixed-income only.
is_defaultbooleanDebt-security default flag (invstOrSec/debtSec/isDefault, Y/N → bool): whether the issuer is in default. Fixed-income only.
scraped_attimestamp with time zone · not nullInternal ingestion timestamp; excluded from exports.

Access edgar_nport_holdings

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

Create a free account Browse all 95 datasets

Frequently asked questions

What is in the edgar_nport_holdings dataset?

Holdings inside fund N-PORT reports, security by security. A single security position (one `invstOrSec` line) reported in an SEC Form N-PORT-P filing — a registered fund's holding of one security, with the issuer, its identifiers (CUSIP/ISIN/ticker/LEI), balance, USD value and percent of net assets. Parsed from the filing's `edgarSubmission` XML `invstOrSec` list.

How do I avoid look-ahead bias with edgar_nport_holdings?

Filter on edgar_nport_holdings.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — join-derived: available_date = edgar_filings.event_date via filename, the SEC dissemination/acceptance date of the N-PORT-P filing. 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_holdings?

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

Can I filter edgar_nport_holdings by company or symbol?

Yes. edgar_nport_holdings carries ticker, the column the API's symbols filter resolves against.

How often is edgar_nport_holdings updated?

Obscura refreshes edgar_nport_holdings 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.

Related datasets

CFTC Commitments of TradersThe CFTC's weekly Commitments of Traders report: how commercial, non-commercial and small traders are positioned in each… ECHO Enforcement CasesEnvironmental enforcement actions and penalties from the EPA's ECHO database. ECHO FacilitiesEPA-regulated facilities and their compliance history, from ECHO. EDGAR 13F FilingsMetadata for every 13F report, the quarterly filing where large institutional managers list their U.S. equity holdings. EDGAR 13F HoldingsThe line-item positions inside each 13F: which manager held which security, and how much, each quarter. EDGAR 8-K ItemsThe item numbers reported on each 8-K (5.02 officer changes, 2.01 acquisitions, 1.01 material agreements, and so on), so… EDGAR Dilution MetricsShare-issuance headroom and overhang metrics built from companies' XBRL filings: authorized versus outstanding shares, a… EDGAR Filing TextSignals mined from the text of filings, such as mentions of distress, litigation, going-concern doubt and restructuring.