---
title: "One fund"
method: GET
path: "/fund/{ticker}.json"
---

# One fund

`GET /fund/{ticker}.json`

## Request

- Base URL: `https://tickerinside.com/api/v1`
- URL: `https://tickerinside.com/api/v1/fund/{ticker}.json`
- Auth: none required

The holdings with their weights and the date of their source, then cost, returns, risk and weekly returns over 156 weeks where the data has them. A figure the data lacks is null, and so is a week without a return; with fewer than 110 weekly returns, weekly is an empty list, or null for a fund from SEC filings. This is the endpoint most things are built from. The funds no issuer file covers are served in the same shape from their latest SEC filing, with eight more fields: report_date, filed, filing_url, net_assets, multi_class, stock_pct, unmapped_pct and abroad. A fund of the other layers answers too, from its /etf/ file. The holdings map and the weekly series make this file enough on its own. The overlap of any two stock ETFs is a walk over two holdings maps, and a covariance matrix for any basket is a walk over their weekly series.

## Path parameters

- `ticker` string, required

## Response `200`

The file. The example is a real answer, shortened: long lists and maps keep their first entries.

- Fund
  - `ticker` string, nullable, required: The fund's ticker, upper case.
  - `name` string, nullable, required: The fund's name.
  - `page_url` string, nullable, required: The fund's page on the site, or null when it has none yet. Link it when you quote a figure.
  - `cite_as` string, nullable, required: A citation line for a quoted figure: the fund, its source file and that file's date, a URL to check it, and the licence.
  - `cite_html` string, nullable, required: The credit as HTML: a link to the page cite_as names, then its address.
  - `identifiers` object, required: FIGI and SEC ids: /api/v1/identifiers.json.
    - `asset_type` 'etf' | 'etn' | 'stock', required: etf for a fund; etn for an exchange-traded note, a bank's debt with no holdings; stock for any other listed share: a company's stock, a depositary receipt, a closed-end fund.
    - `exchange` 'Cboe BYX' | 'Cboe BZX' | 'Cboe EDGA' | 'Cboe EDGX' | 'IEX' | 'NYSE' | 'NYSE American' | 'NYSE Arca' | 'NYSE Texas' | 'Nasdaq' | 'Nasdaq BX' | 'TXSE' | 'null', nullable, required: The exchange the security is listed on, as Nasdaq Trader's directory names it: Nasdaq, NYSE, NYSE Arca, Cboe BZX and the others its codes stand for. Null when the directory does not list it. Unlike the identifiers, it changes when the listing moves.
    - `composite_figi` string, nullable, required: The Financial Instrument Global Identifier of the US listing (the composite FIGI of exchange code US), from OpenFIGI, asked by ticker. FIGIs are in the public domain. Null until OpenFIGI answers for the ticker with one security of this asset type.
    - `share_class_figi` string, nullable, required: The FIGI of the share class, the same on every market it trades in. Null with composite_figi.
    - `cik` string, nullable, required: The SEC's Central Index Key, ten digits as EDGAR writes it, from the SEC's ticker files: the company's, or for a fund the registrant's, the trust that files for it and for its other funds. Several securities can share one, so key records on composite_figi or class_id instead. Null when the SEC's files do not list the ticker.
    - `series_id` string, nullable, required: For a fund, the SEC's id of its series (S and nine digits), which tells it apart from the other funds of its registrant: from the SEC's fund ticker file, or from the Form N-PORT its holdings are read from where the two differ. Null for a stock, and for a trust that files as a company.
    - `class_id` string, nullable, required: For a fund, the SEC's id of its share class (C and nine digits). Null when series_id is, or when it comes from the Form N-PORT and the fund ticker file lists the ticker under another series.
  - `source_layer` 'issuer' | 'sec_nport' | 'sec_nport_derivatives' | 'sec_nport_bonds' | 'sec_nport_multi_asset' | 'trust_filings' | 'sponsor_files' | 'prospectus', nullable, required: Where the holdings come from. issuer: the issuer's own file (the issuer layer). sec_nport: the fund's latest public SEC Form N-PORT filing (the SEC layer), whose holdings are the portfolio at the quarter end it describes (report_date), not on the day you read them; index.json coverage.sec_nport_age says how old the layer's holdings are on the day of the build. sec_nport_derivatives: a derivative-based fund, with its contracts apart from its holdings. sec_nport_bonds: a fixed income fund. sec_nport_multi_asset: a fund of funds or of several asset classes. trust_filings: a trust or commodity pool that files no Form N-PORT, from its own SEC filing. sponsor_files, prospectus: see /api/#sponsor-files.
  - `category` object, required: TickerInside's category (id, label, group, rule, measures): https://tickerinside.com/etf/category/
    - `id` string, nullable
    - `label` string, nullable
    - `group` string, nullable
    - `group_label` string, nullable
    - `asset_class` string, nullable
    - `rule` string, nullable
    - `basis` string, nullable
    - `as_of` string, nullable
    - `facets` object
      - `region` string, nullable
      - `country` string, nullable
      - `size` string, nullable
      - `style` string, nullable
      - `top_sectors` string[], nullable
    - `measured` object
      - `us_share` number, nullable
      - `emerging_share` number, nullable
      - `size_place` number, nullable
      - `growth_share` number, nullable
      - `growth_share_market` number, nullable
      - `top_sector_share` number, nullable
      - `country_cover` number, nullable
      - `sector_cover` number, nullable
      - `stocks` number, nullable
    - `method` string, nullable
  - `as_of` string, nullable, required: The price date: the date of the price data behind every return and risk figure here. Null for an SEC-layer fund whose weekly is null.
  - `holdings_as_of` string, nullable, required: The date of the holdings: the date of the issuer's file, or for an SEC-layer fund the quarter end its filing describes. It is often weeks older than as_of, and often differs from the other fund's in a comparison, so quote it with any holdings figure. It can also be later than as_of, since some issuers date their file with the next business day.
  - `expense_ratio` number, nullable, required: Annual cost as a percentage of assets: 0.03 means three basis points, or $3 a year on $10,000. From the fund's newest SEC filing that states it, after any fee waiver when the filing gives both figures, else from the market data. Null when neither gives one. Never read a null as zero.
  - `expense_ratio_gross` number, nullable, required: The total of the filing's fee table before any waiver, in percent, which counts the fees of the funds it holds; expense_ratio when there is no waiver. Null unless expense_ratio is from a filing.
  - `expense_ratio_source` 'sec_filing' | 'sec_filing_text' | 'market_data' | 'null', nullable, required: Where expense_ratio comes from. sec_filing: the fee table the filing tags by share class, from the SEC's risk/return data sets or the filing itself. sec_filing_text: the fee table's text, read in a newer prospectus, where no other figure exists or one agrees with it. market_data: undated, also where the filing read is over a year old and differs, or is not matched to the fund. Null when expense_ratio is null.
  - `expense_ratio_as_of` string, nullable, required: The day that filing reached the SEC, or null.
  - `expense_ratio_filing_url` string, nullable, required: That filing on EDGAR, or null.
  - `yield` number, nullable, required: Trailing twelve month distribution yield, as a percentage.
  - `aum_b` number, nullable, required: Assets under management, in billions of US dollars, rounded to 0.1, from the market data, read on aum_date. For a Vanguard fund it is the whole fund, every share class together; etf_class_net_assets_b is the ETF's own class. Null when the market data gives no size, the usual case for an SEC-layer fund, whose size is then net_assets on report_date.
  - `aum_source` 'market_data' | 'market_data_kept' | 'null', nullable, required: Where aum_b comes from. market_data: read on aum_date. market_data_kept: the latest read gave no size, so the last size known is kept, with the day it was read, for 30 days at most. Null when aum_b is null.
  - `aum_date` string, nullable, required: The day aum_b was read from the market data. Null when aum_b is null, or for a size read before the day was recorded.
  - `etf_class_net_assets_b` unknown, required
  - `etf_class_net_assets_as_of` unknown, required
  - `positions` integer, nullable, required: How many positions the holdings map lists; filing_lines or file_lines count every line of a fund of another layer.
  - `breakdown` object, nullable, required: In percent of the fund, to four decimals: sectors_pct, no_sector_pct, sector_coverage_pct, sectors_stated (true from 50%), other_funds_pct, mega_cap_tech_pct (Apple, Microsoft, Nvidia, Alphabet, Amazon, Meta Platforms, Broadcom and Tesla), top10_us_companies_pct, countries_pct, no_country_pct (lines of no known country), answer, method. Null for another layer.
    - `sectors_pct` object, required
    - `no_sector_pct` number, required
    - `sector_coverage_pct` number, nullable, required
    - `sectors_stated` boolean, required
    - `other_funds_pct` number, required
    - `mega_cap_tech_pct` number, required
    - `top10_us_companies_pct` number, required
    - `countries_pct` object, required
    - `no_country_pct` number, required
    - `answer` string, required
    - `method` string, required
  - `vol` number, nullable, required: Annualised standard deviation of weekly total returns over three years, as a percentage.
  - `beta` number, nullable, required: Sensitivity to the S&P 500, from three years of weekly returns. 1.00 means it has moved with the index.
  - `mdd3` number, nullable, required: Largest peak to trough decline over three years, measured on weekly closes. Negative.
  - `r1` number, nullable, required: Cumulative total return over one year, as a percentage. Not annualised.
  - `r3` number, nullable, required: Cumulative total return over three years, as a percentage. Not annualised.
  - `r5` number, nullable, required: Cumulative total return over five years, as a percentage. Not annualised.
  - `last_close` number, nullable, required: The last closing price, raw, in the fund's trading currency. Returns use dividend-adjusted closes; this figure is the market close as traded.
  - `last_close_date` string, nullable, required: The date of that close.
  - `day_change_pct` number, nullable, required: The move from the previous close to the last, as a percentage.
  - `high_52w` number, nullable, required: The highest raw close over the last 252 trading days.
  - `low_52w` number, nullable, required: The lowest raw close over the last 252 trading days.
  - `currency` string, nullable, required: The trading currency of the price fields.
  - `holdings` object, nullable, required: The positions, as a map of key to percentage weight. For the issuer layer, the positions as the issuer publishes them. For an SEC-layer fund, every position the filing lets us key to a ticker; the rest is counted in unmapped_pct. A key is the ticker of a US line (a share class keeps its dot, BRK.B), or a local code and its market for a line listed abroad (7203.JP). Preferred shares filed under their issuer's common ticker are keyed as that ticker and .PFD (JPM.PFD), apart from the common stock. A key of digits and a letter is a code the issuer's file gives in place of a ticker, usually for a line whose ticker changed or was delisted. The overlap between two stock funds is computed from this field. For a fund of another layer, tickers, then other lines in lower case: a bond as issuer, coupon and maturity, else its name; never an identifier or a contract.
  - `weekly` number[], nullable, required: 156 weekly total returns as decimals, oldest first, ending at as_of. The weeks are the same in every fund and stock file, so any basket of them can be correlated without matching dates. A week is null when its return cannot be computed, because the fund's prices begin later or a weekly close is missing. An empty list for an issuer-layer fund with fewer than 110 weekly returns in those weeks, and null for a fund of another layer with fewer.
  - `weeks_end` string, nullable, required: The date the weekly series ends, always as_of. It is set even when weekly is an empty list, and null, like as_of, when weekly is null.
  - `flows` object: For a fund read daily from its issuer's files, its net creations and redemptions in dollars, measured from its own holdings files (/etf-flows/): the close (date), flow_usd and flow_pct_of_assets, null with status not_measured when the two measures of it disagree, the close compared with (previous_close), the last closes' net (last_closes), each recent close's flow (series, [close, dollars or null]) and a sentence (text), with the page, the method and the terms. Absent for any other fund.
    - `date` string, nullable
    - `flow_usd` unknown
    - `flow_pct_of_assets` unknown
    - `previous_close` string, nullable
    - `status` string, nullable
    - `last_closes` object
      - `from` string, nullable
      - `to` string, nullable
      - `closes` number, nullable
      - `measured` number, nullable
      - `net_usd` number, nullable
    - `series` array[], nullable
      - union[]
        - union
          - number
          - string
    - `text` string, nullable
    - `page_url` string, nullable
    - `method_url` string, nullable
    - `license` string, nullable
    - `terms` string, nullable
  - `license` string, nullable, required: The licence the data is published under.
  - `attribution` string, nullable, required: How to credit the data: a link to the page cite_as names where the medium allows one, the name where it does not.
  - `source` string, nullable, required: Where the method behind these figures is written down.
  - `report_date` string, nullable: The quarter end the filing describes, the end of one of the fund's fiscal quarters. The holdings are the portfolio on that day, not on the day you read them; index.json coverage.sec_nport_age says how old the layer's holdings are on the day of the build. Quote this date with any figure from these holdings.
  - `filed` string, nullable: The day the filing reached the SEC, usually about 60 days after report_date.
  - `filing_url` string, nullable: The filing itself on SEC EDGAR, to check any figure against the source.
  - `net_assets` integer, nullable: The fund's net assets on report_date, in US dollars, as filed. For an ETF that is one share class of a larger fund, it covers every class.
  - `multi_class` boolean, nullable: True when the ETF is one share class of a fund that also has mutual fund classes. The holdings and weights are then the whole fund's, which is the same portfolio, and so is net_assets.
  - `stock_pct` number, nullable: How much of net assets the filing lists as common or preferred stock, long positions only. Cash, bonds, derivatives and collateral make up the rest and are not in holdings.
  - `unmapped_pct` number, nullable: The part of stock_pct that could not be tied to a ticker and is left out of holdings, usually private companies, warrants and thinly traded foreign lines. The holdings add up to stock_pct minus this.
  - `abroad` unknown
  - `holdings_kind` 'stock' | 'bond' | 'derivative' | 'commodity' | 'multi-asset' | 'prospectus', nullable: What the map of a fund of another layer holds: bond, multi-asset, stock, derivative (stocks held outright, never contracts), commodity (a trust's asset) or prospectus (none yet).
  - `listed_pct` number, nullable: The share of net assets the map shows, in percent. Not listed is not the same as not held.
  - `etf_file` string, nullable: The /etf/ file this answer is built from, whose fields follow.

## Other responses

- `301`: The address was not written the way the file is: an upper case ticker, a share class written BRK-B or BRK/B, a missing .json, or punctuation at the end. Follow the Location header (curl -L).
- `304`: Not modified: the ETag of your copy, sent in If-None-Match, is still current. Files are cached five minutes.
- `404`: Not a covered fund. reason has_security_file when the ticker has a stock file or the holders-only answer (see security). A fund that listed after the SEC's latest quarterly data set has no file yet (see covered, index.json, and universe.json for the reason).
- `503`: The file could not be served just then: retry after a minute. uptime says whether the site fails its own checks.

---

[API](https://skmtc.dev/tickerinside/apis/tickerinside-api.md) · [All operations](https://skmtc.dev/tickerinside/apis/tickerinside-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tickerinside/apis/tickerinside-api/revisions/4dae3d8c4119?raw)
