Sources¶
Every holding openbasket shows comes from one of the sources below, and is shown with that source’s name, link, credit line and as-of date. Each source has its own page with its endpoints, coverage, terms and known gaps.
Status as tested on 2026-11-03.
Source |
Status |
Used for |
|---|---|---|
SEC Form N-PORT |
Working |
Full holdings of US-registered funds and ETFs, equity and bond, with ISINs, CUSIPs and LEIs. |
SEC |
Working |
Fund and ETF ticker to series ID. |
TickerInside |
Working |
Daily issuer holdings for US equity ETFs, keyed by ticker. |
OpenFIGI |
Working |
ISIN to name, ticker and security type; ISIN to US ticker when matching a fund. |
iShares UK |
Working |
Daily full holdings of UCITS ETFs with ISINs and five-decimal weights, from the issuer’s site. |
iShares US |
Working |
Daily full holdings of US iShares ETFs with ISINs; equity weights to two decimals. |
SPDR (State Street) |
Working |
Daily full holdings of US ETFs (including SPY and DIA) and UCITS ETFs. |
justETF, FT and others |
Not built |
Top holdings only. |
SEC Form N-PORT¶
Quarterly ZIPs of tab-delimited tables from
https://www.sec.gov/files/dera/data/form-n-port-data-sets/{quarter}_nport.zip.
2026 Q3 is 462 MB zipped and 1.6 GB unzipped; FUND_REPORTED_HOLDING alone is
5.6 million rows. The pipeline extracts four tables, converts them to Parquet
with DuckDB, and never loads the full quarter into pandas.
What the data shows:
PERCENTAGEis in percent of net assets (IVV’s lines sum to 100.12).A quarter holds several report periods per fund, plus late amendments (
NPORT-P/A) to old ones. Each series uses its latest report date, and an amendment replaces the original filing for the same date.96.6% of holding rows carry an ISIN in
IDENTIFIERS. Where a row has only a CUSIP, the ISIN another filing reported for that CUSIP is used (385,195 CUSIPs), then one derived from the CUSIP (1,323 CUSIPs, US and Canadian numbers only).A fund holding another fund is linked by
ISSUER_LEI= the held fund’sSERIES_LEI.N-PORT is filed monthly but published quarterly, 60 days after the period, so holdings run two to five months behind.
Gaps:
Unit investment trusts such as SPY and DIA do not file N-PORT. SPY is missing from
company_tickers_mf.jsonfor the same reason.Non-US funds (UCITS, including IE- and LU-ISIN ETFs) are not in N-PORT; iShares UCITS ETFs are covered from the issuer instead.
Swap-based ETFs report the swap and its collateral, not the index. Map them to a physical ETF on the same index with
lookthrough.proxies; the rows are labelled as a proxy.Private funds such as BlackRock Cash Funds stay as a single line.
TickerInside¶
pip install tickerinside. The equity issuer layer (source_layer == "issuer") is the issuer’s daily file, a day or two old, keyed by ticker.
Tickers are matched to ISINs through the same fund’s N-PORT lines and
OpenFIGI; a ticker that entered the fund after its last N-PORT filing stays
unresolved and appears in lookthrough_unidentified.csv. Other layers
(sec_nport, sec_nport_bonds) are rebuilt from N-PORT, which this package
reads in full, so they are skipped.
Terms. Current data is published under CC BY 4.0 and must be credited.
Every row from TickerInside carries its cite_as text in source_ref;
keep it in anything published from the output. History is under separate
terms and is not used.
OpenFIGI¶
POST https://api.openfigi.com/v3/mapping. It does not return ISINs: a
mapping response has figi, compositeFIGI, shareClassFIGI, name,
ticker, exchCode, securityType, securityType2, marketSector and
securityDescription. So ISINs come from N-PORT, and OpenFIGI supplies names
and types and the ticker that links a fund ISIN to its SEC series.
SPDR¶
State Street publishes a daily workbook per ETF. Two regions are used:
- Fund list
https://www.ssga.com/bin/v1/ssmp/fund/fundfinder?country=us&language=en&role=intermediary&product=etfs&ui=fund-finder(185 US ETFs with a holdings file) and the same withcountry=uk&language=en_gb, whoseuk-etfslist holds the 177 UCITS ETFs. The fund’s ISIN is in each entry’skeywordstext and the holdings file is linked indocumentPdf.ingestadds them todata/01_raw/issuers/issuer_products.parquetwithissuer = spdr.- Holdings
https://www.ssga.com/library-content/products/fund-data/etfs/us/holdings-daily-us-en-<ticker>.xlsxand.../emea/holdings-daily-emea-en-<ticker>-<exchange>.xlsx. A few header lines (name, ticker, as-of date), then a table whose header row starts withName(US) orISIN(UCITS). Bond funds add coupon, par value and maturity columns. Weights are percent of the fund.
SPY and DIA are unit investment trusts and file no N-PORT, so this is the only free source of their full holdings.
UCITS files carry an ISIN column. US files identify a line by Identifier
(a CUSIP, an ISIN for some bonds, or a State Street code) and SEDOL, so an
ISIN is found, in order, from:
the file’s own ISIN;
the ISIN N-PORT filings report for the CUSIP (
nport_cusip);the ISIN N-PORT filings report next to the SEDOL (
nport_sedol), fromdata/03_primary/sedol_isin_map.parquet, about 25,400 SEDOLs;the ISIN derived from the CUSIP (
derived_cusip), only if OpenFIGI knows it. State Street gives some foreign shares CUSIP-shaped internal codes (Samsung’s GDR is494281900); 345 such ISINs derived for the developed-world fund turned out not to exist, so unverified ones are dropped.
What the data shows (2 November 2026):
Fund |
Constituents |
Resolved |
|---|---|---|
SPDR S&P 500 ETF Trust (SPY, US78462F1030) |
503 |
99.90% |
SPDR Dow Jones Industrial Average ETF Trust (DIA, US78467X1090) |
30 |
99.95% |
SPDR Portfolio Developed World ex-US (SPDW, US78463X8891) |
2,359 |
99.21% |
SPDR Portfolio Aggregate Bond (SPAB, US78464A6495) |
8,707 |
99.09% |
SPDR S&P 500 UCITS ETF (IE00B6YX5C33) |
504 |
100.00% |
State Street Global High Yield Bond UCITS ETF (LU3357226557) |
2,361 |
93.75% |
What stays unresolved: State Street’s own money-market fund in US bond funds (3.1% of SPAB, internal code only), and new or 144A bonds that UCITS bond files list with no ISIN (5.4% of the high-yield fund).
Terms. Public data from State Street’s website, not reviewed for automated or bulk use; files are fetched once per fund per day.
Top-holdings fallbacks¶
justETF, FT and similar sources are not built yet.