# Where the data comes from

A section of the TickerInside API reference, https://tickerinside.com/api/#sources, with data through 2026-10-16. Contents of the reference, each section and endpoint as a file: https://tickerinside.com/api/sections/index.md. The whole reference as Markdown: https://tickerinside.com/api/index.md

- Issuers' own holdings files: 624 funds from four issuers, read every weekday night; `source_layer` is `issuer` and `holdings_as_of` is the date of the file. iShares 289, newest file 2026-10-15. Invesco 153, newest file 2026-10-15. State Street SPDR 93, newest file 2026-10-15. Global X 91, newest file 2026-10-16. Some funds of these issuers are served from their SEC filings instead, under `sec_funds` in funds.json: 20 State Street SPDR (GNR, RWR), 13 iShares (IVVM, MAXJ), 9 Global X (PFFD, RYLD), 6 Invesco (PCEF, PBP).
- SEC Form N-PORT filings: 2,009 other US stock ETFs, from the latest filing each one makes; `source_layer` is `sec_nport` and `report_date` is the quarter end the filing describes (2026-01-31 to 2026-08-31), usually three to five months before it is read. What cannot be keyed to a ticker is left out and counted in `unmapped_pct`.
- Fixed income funds (921, `sec_nport_bonds`) and multi-asset funds (237, `sec_nport_multi_asset`), from the same filings.
- Derivative-based funds (1,368, `sec_nport_derivatives`, from the same filings) and trusts and commodity pools (130, `trust_filings`, from their own SEC filings).
- Prices: end of day prices through 2026-10-16, giving weekly total returns over the same 156 weeks. A fund or stock with fewer than 110 of them has no series and no figure over three or five years, and a week without a return is null.

The ETF ownership ledger: for each stock with a file, `etf_ownership` gives the share of the company's shares outstanding that the covered US ETFs hold, as a lower bound, at least this percent from this many funds. The shares held are the share counts of the issuer files, and for the other funds the share balances of their latest SEC filings. A Vanguard ETF's shares are counted for its ETF share class alone. A fund is counted once, and a fund's shares of another covered fund are counted in that fund. The shares outstanding are the most recent count on the cover of a periodic report the company filed with the SEC: a 10-K, 10-Q, 20-F or 40-F, amendments included. They come from the SEC's XBRL data and are published with their date and filing. The count is every class rolled up to the company; or, when the filing itself is read, the one count its cover gives; or the class's own count when only the class checks out.

A figure is published only when all three of these hold:

- The SEC's count is at most 2% below an independent current count of the same shares, since a lower count would put the percent too high. It is at most 25% above it for a company with one class, or 5% above it when several classes are rolled up.
- No split falls between the holdings dates and the date of the count.
- The figure comes to at most 100%.

So a figure can be too high by about 2% of itself, at most. A row that is another security under the stock's ticker is not counted: a preferred share, a foreign company's local code, or a value per share far from the stock's close on the row's date. A file that gives no market values is checked the same way, from its weights and the fund's stated net assets. A single issuer file's count is never published alone. Funds outside the coverage, and covered funds whose count could not be used, are not in it. Method, formula and test vectors: https://tickerinside.com/api/v1/methods.json (`ti-ownership/1`).

## Two dates in every fund file

Holdings refresh when the issuer publishes a new file, daily for some funds and monthly for others, so a fund file carries two dates. `as_of` is the price date, behind every return and risk figure. `holdings_as_of` is the date of the holdings file: often weeks older than `as_of`, and sometimes later, since some issuers date a file with the next business day. In a comparison and in holders.json, `holdings_as_of` is a map keyed by fund; in a stock file, each holder row carries its fund's file date. In ownership.json, `as_of` is the newest holdings date counted, and in history.json the newest archived file date. Quote both dates: an overlap figure without its holdings date cannot be checked.

## How fresh the holdings are, by source

Measured on the fund files of this build: funds, median age of their holdings in days, share dated within 7 and within 35 days.

| Source | Funds | Median age, days | Within 7 days | Within 35 days |
|---|---:|---:|---:|---:|
| Issuers' own files, read every weekday night | 626 | 2 | 99.4% | 100.0% |
| iShares | 289 | 2 | 99.3% | 100.0% |
| Invesco | 153 | 2 | 100.0% | 100.0% |
| State Street SPDR | 93 | 2 | 100.0% | 100.0% |
| Global X | 91 | 1 | 97.8% | 100.0% |
| Sponsors' websites, read every weekday night | 134 | 2 | 91.0% | 100.0% |
| SEC filings (Form N-PORT), stock ETFs | 2,049 | 109 | 0.0% | 0.0% |
| SEC filings (Form N-PORT), fixed income ETFs | 924 | 109 | 0.0% | 0.0% |
| SEC filings (Form N-PORT), multi-asset ETFs | 252 | 109 | 0.0% | 0.0% |
| SEC filings (Form N-PORT), derivative-based ETFs | 1,403 | 78 | 0.0% | 0.0% |
| Trusts' own reports (10-Q, 10-K and the like) | 130 | 109 | 0.0% | 0.8% |
| Prospectus only, until the first holdings filing | 307 | no holdings yet |  |  |


## How holdings are keyed

- A fund or a stock is keyed by its ticker, upper case in the files and lower case in the path (/api/v1/fund/voo.json). A share class keeps its dot: `BRK.B`, at /api/v1/sec/brk.b.json.
- A line listed outside the US is keyed by its local code and its market, a two letter country code after a dot: 7203.JP is Toyota in Tokyo, SAN.FR Sanofi in Paris. It has no stock file: /api/v1/sec/7203.jp.json answers with `coverage` `holders_only`, from the shard of its first character, /api/v1/holders/0.json, whose `aliases` give the keys written before, without a market (7203 reads as 7203.JP and 7203.SA). A key with Yahoo's exchange suffix, 005930.KS or 0700.HK, is redirected to the key here, 005930.KR or 700.HK, as the MCP tools read it; a suffix that is also a country code here (.SA, .CO, .BR) keeps its meaning here.
- A row stays under a US ticker when its issuer's file places it in New York, by its exchange, its currency or its identifiers. For a line nothing else places, the US list of tickers decides. The Toronto line of the same shares (RY) also stays under the US ticker. So a stock file's `left_out` is empty. A row in dollars that nothing places abroad counts as a US line, as a few depositary receipts traded in London do (SBID, the GDR of State Bank of India).
- Preferred shares that a file writes under their issuer's common ticker are keyed as that ticker and `.PFD` (JPM.PFD), apart from the common stock.
- A few keys are not tickers but codes of digits and a letter, which an issuer's file gives in place of a ticker, usually for a line whose ticker changed or was delisted. When such a code enters a fund at about the weight of a ticker that exits, and the reverse follows a file later, it is the same security keyed two ways, not a trade.

## How SEC filings are keyed

Filings identify most stocks by ISIN rather than by ticker, and neither ISINs nor CUSIPs are published here. A position is keyed by the ticker the filing gives it, or by the ticker the same security carries in the issuer files and in other funds' filings, or failing both by OpenFIGI's open mapping. What cannot be keyed is left out and counted in `unmapped_pct`. A row's company is read first from the issuer's Legal Entity Identifier where the filing gives one, so Merck KGaA is never taken for Merck & Co. LEIs are not published either.

Only funds with at least half of their assets in stock are in this layer, because their holdings are stocks that a ticker keys. Fixed income funds have files of their own, and so do the funds that mix asset classes. Leveraged and inverse funds are served apart, as derivative-based funds, since their stock rows alone would understate what they carry in swaps and futures. Funds holding more stock than their net assets are served with the funds that mix asset classes. A ticker listed under `abroad` in a fund file is a foreign company's local code that the US list gives to another company, and that fund is not counted among the US company's holders. Where an issuer file exists for a fund it is always the one served, because it is newer.

## Fixed income funds

The layers below have files of their own under /api/v1/etf/{ticker}.json, with no `holdings` and no `positions`. /api/v1/fund/{ticker}.json answers for each of their funds too, in the shape of the stock layers' files, built from that file: `holdings` maps the stocks and funds it holds outright by ticker, and its other lines under a key in lower case, a bond line as its issuer, coupon and maturity. `holdings_kind` says what the map holds and `listed_pct` how much of net assets it shows. A map is empty, with `listed_pct` 0, when the file lists no holding line by line: a derivative-based fund that holds no stock outright, whose Treasury bills, money market funds and repurchase agreements are in its `composition` by kind, a pool of futures, or a fund known from its prospectus only. `positions` counts the keys of the map, and `filing_lines` or `file_lines` the lines of the filing or the file. Every field of the /etf/ file follows. index.json says where each ticker is: `tickers` and `tickers_sec` are the stock layers, `tickers_derivative`, `tickers_trust`, `tickers_bond`, `tickers_multi_asset`, `tickers_sponsor` and `tickers_prospectus` the others.

Bond, credit, mortgage, Treasury and municipal ETFs are read from the same filings. A bond has no ticker and no CUSIP or ISIN is published, so a fixed income fund's file (`sec_nport_bonds`) lists `lines` by issuer name, kind, coupon and maturity, with the weight of each, and `fixed_income` gives the average coupon and maturity, the duration, the weight by maturity and by country, and the issuers. The largest funds have over ten thousand lines: the file lists the largest 200 and counts every line in its totals. Mortgage pools are summed by issuer, coupon and year of maturity. Average maturity counts a pool at its final maturity, and duration is the fund's own interest rate risk figure, which filers compute in their own way.

Two fixed income funds overlap by issuer: the smaller weight of each issuer both hold, summed. It is issuer overlap, never mixed with overlap by shares, and the MCP tool `compare_etfs` gives it. Their answers under /fund/ also overlap line by line, since the same bond filed under the same issuer name has the same key in both.

## Multi-asset funds

A fund of funds, or an allocation, target date, buffer or income fund, has a file (`sec_nport_multi_asset`) with `held_outright` by ticker, `composition` and `lines` by name. It is in no holder list and no overlap.

## Derivative-based funds

Leveraged, inverse, option income and buffer ETFs are bets on a market made through swaps, futures and options, so their stock rows alone say little. Their fund files (`sec_nport_derivatives`) keep the two apart. `held_outright` is what the fund holds outright, in percent of net assets, and `composition` adds its Treasury bills, money market funds and repurchase agreements. Its swaps, futures and options are in `derivatives` and `underlyings`, as notional exposure in percent of net assets, long or short, with the instrument: TQQQ reads about 227% in swaps and 16% in futures on the Nasdaq-100 Index, all long, beside the 58% it holds in stocks.

Notional exposure is not shares held. It is never in a holder count, in `holders_all` or in the ownership ledger. A stock's file lists the funds that reference it under `synthetic_exposure`, apart from its holders. The size is the contract size the filing states; where a filing gives none in dollars the leg has no `notional_pct` and the file says so. An option's notional is its strike times the shares it covers, and a written option is a short position in the option, not in the stock. None of these funds has a page.

## Trusts and commodity pools

A physical gold trust, a bitcoin trust, a currency trust and a commodity pool are ETFs by any reader's count, and none files Form N-PORT. Their fund files (`trust_filings`) say what the fund holds, from the fund's own SEC filing, which the file names with its form and dates: a trust whose only investment is one asset lists it at 100, a trust of several assets lists them without a split, and a pool lists the futures it invests in as futures exposure, with no notional because its filings give no single one. There is no `held_outright`, since no share of any company is held through them. Each entry was checked against the filing before it was written, and a fund whose filing does not say what it holds is not served.

## Sponsor files

A fund too new for a Form N-PORT is served from the holdings its sponsor publishes (`sponsor_files`), by ticker with identifiers dropped, from sponsors whose terms allow it. `file_date` and `source_url` say which file. No overlap; its Form N-PORT replaces it.

## Prospectus files

A fund with no holdings file has its prospectus's objective, quoted, in a file (`prospectus`). No holdings; its first holdings filing replaces it.

## The universe and its coverage

The universe is the list of US-listed ETFs in Nasdaq Trader's symbol directory (https://www.nasdaqtrader.com/dynamic/SymDir/nasdaqtraded.txt), refreshed every weekday night and kept as it was when the download fails. /api/v1/universe.json lists each one with its name, the layer of fund files that covers it or the reason it does not yet. The coverage is measured there over the funds only: an exchange-traded note is a debt of the bank that issues it, holds nothing, and is listed as a note, told from a fund by its name (ETN, ETRACS, iPath, X-Links, unless the name also says ETF). 5,423 of the 5,733 US-listed ETFs in Nasdaq Trader's symbol directory of 2026-10-16 have holdings here (94.6%), and 307 more have a file from their prospectus, with the objective it states and no holdings. The same block is in index.json and status.json. Only holdings files count as coverage; a prospectus file counts as a file. That each ETF of the directory has a file is said only when none lacks one, with how many have holdings and the stated objective. The share of assets is measured from holdings files alone.
