Stocklore

How to check what an ETF holds

ETF holdings are disclosed in the fund’s N-PORT filing. Where to find it, and why matching that list to tickers always leaves some out.

An ETF is a basket of securities, and what is in it is disclosed by the fund.

The firmest source is N-PORT, filed with the SEC. It reports the fund’s full holdings each quarter in a fixed format, and past filings stay available — unlike a fund page that only shows today.

1. Finding the N-PORT filing

Search the fund or its manager on EDGAR (sec.gov/edgar/search) and put NPORT-P in the filing type box. One appears per quarter.

Open it and the holdings are a table — name, quantity, value, and percent of net assets (pctVal) per row.

⚠️ A fund’s own daily holdings file is more current. N-PORT is quarterly and can be months behind. The trade-off is that fund files vary in format and rarely keep history.

⚠️ The most recently filed document is not always the most recent quarter. Managers do file a prior quarter late, so ordering by filing date can put a ten-month-old file in the newest slot. Which quarter it covers is stated inside, in the reporting period.

2. What makes the list hard to match to tickers

N-PORT carries no tickers. Holdings are identified by name and CUSIP (a nine-character security identifier).

Turning a CUSIP into a ticker requires separately licensed data, so matching usually falls back to names — and names vary: `ALPHABET INC CL A`, `Alphabet Inc. Class A`.

So name matching always leaves some out. It leaves out more in funds full of small caps, and less in large-cap funds.

3. ★The weights do not add up to 100%

Add up the percentages and some funds exceed 100. That is not an error.

Cash collateral from securities lending, futures, and cash positions all appear, and the total can land at 105% or 115% in practice.

⚠️ So when working out “what share is this holding”, the denominator is the total printed in that list, not 100.

4. Reading it on Stocklore

Open an ETF and the holdings appear as a donut, ordered by weight, each slice labelled.

The last slice is “not matched” (hatched). It is the portion that name matching (step 2) did not connect to a stock we track. A donut fills the circle by definition, so without that slice a partial list would be drawn as a complete one.

⚠️ ETFs with low coverage are not hidden. In small-cap funds the hatched slice can be most of the circle — that is itself the fact.

The reverse view exists on ordinary stocks too: which ETFs hold this stock.

The donut shown when you open an ETF (QQQ here). It reads 90.1% in the centre, with holdings listed by weight beside it — NVDA 8.7%, AAPL 7.6% and on down. The last slice, “not covered” at 9.9%, is the part we could not match to our own list.The donut shown when you open an ETF (QQQ here). It reads 90.1% in the centre, with holdings listed by weight beside it — NVDA 8.7%, AAPL 7.6% and on down. The last slice, “not covered” at 9.9%, is the part we could not match to our own list.
Actual screen

What to keep in mind

  • It is quarterly. Trades between filings appear in the next one.
  • Weights are based on values at the filing date. As prices move, so do the real weights.
  • A missing holding is not an unimportant holding — only one whose name did not match.
  • This page is information, not investment advice. What an ETF held is a disclosed fact; what happens next is not in the filing.

Related terms

Last updated Aug 17, 2026. Source: SEC EDGAR public filings. This page is information about public disclosures and the tools on this site — it is not investment advice, and it does not recommend buying or selling any security.

Not an investment adviser and not personalized investment advice; not a discretionary management service. No trade recommendations, no target prices, no execution or brokerage. We do not recommend or guarantee any purchase, sale, or returns. Investment decisions and their outcomes are your own.

Stocklore · CEO Lee Seung-jae · Business reg. no. 764-36-01607 · E-commerce permit 2026-Jeonju Wansan-0476 · Tel +82-70-7954-4939 · S120, Rm 302, 3F, 21 Jungsanjungang-ro, Wansan-gu, Jeonju, Jeonbuk, Korea