Skip to main content
ETF NAV and Shares Outstanding is the daily fund-level series for an ETF share class. Each observation is associated with an etf_id, a valuation date, and a per-value status saying whether the number was published by the issuer or computed by FocusAlpha. The series carries net asset value, shares outstanding, net assets, market price and premium or discount, and is available through the FocusAlpha API and MCP.
Plan: Fund · Credits: 1 per call

What You Can Use ETF NAV Data For

Compute a fund’s return on a NAV basis. Track assets under management over time at the share-class grain. Measure how far an ETF’s market price traded from its NAV, and how that premium or discount behaved through a stressed session. Derive creation and redemption activity from changes in shares outstanding — or read it directly from ETF Fund Flows, which does that computation and reports when it could not be trusted.

ETF NAV Coverage

The series is one merged history per fund and can reach a long way back: SPY’s begins in 1993. Coverage bounds are measured on the way out rather than promised here — every history response carries a coverage block with the actual first and last date held for that fund. Do not hard-code a start date. The series advances once a day, after the issuer’s files for the prior session land. The newest valuation_date is therefore normally the last trading day, not today.

Key ETF NAV Fields

nav is the net asset value per share as published on that day. nav_split_adjusted is the same value restated on today’s share count, and it is the one that is comparable across time. shares_outstanding is the share count as published, with shares_status as its own basis status and shares_split_adjusted / shares_split_adjusted_status as the restated pair. net_assets is the fund’s total net assets, and net_assets_level says whether that figure is a share-class figure or a portfolio figure. market_price is the closing market price of the listing, and premium_discount is the published gap between market price and NAV. split_factor carries the adjudicated split applied on that date — see ETF Splits for the event layer behind it. Every value in the row travels with its own as-of date (shares_as_of, net_assets_as_of, premium_discount_as_of, …), and numeric values are served as strings to preserve the issuer’s exact precision. Where the fund publishes them, the row also carries sec_yield_30d, distribution_yield, duration and yield_to_maturity, each nullable.
Read net_assets_level before quoting assets under management. On a portfolio carrying several share classes, the portfolio figure and the share-class figure differ by three to four times, and only the share-class figure is that fund’s size.

How to Read the ETF NAV Value Status

Every value in this dataset carries its own status, because the four cases mean genuinely different things. published means the fund printed exactly this number. converted means FocusAlpha rescaled a published number using adjudicated split events. derived means the value was rebuilt from net assets divided by NAV, or the equivalent identity. withheld means the basis for restating the value is unmeasured, so the value is null on purpose — it is a deliberate refusal to publish a number, not missing data. Treating a withheld null as a gap to interpolate produces a series the issuer never published.

ETF NAV Date Convention

valuation_date is the date the fund struck the NAV. It is the date to filter, join and group on. Because the series is built after the issuer publishes, the newest row is normally the previous trading day.

ETF NAV Sources

NAV, shares outstanding and net assets come from the issuers’ own published daily files. Market price comes from exchange closing data. Split factors come from adjudicated corporate-action records. Values that FocusAlpha computed rather than read are flagged by the derived or converted status described above.

Query ETF NAV History

Use the ETF history endpoint with series=nav to retrieve the daily NAV series for one fund. It is the default series, so the parameter can be omitted.
string
required
etf_id (E000011), a ticker (SPY), an ISIN, or a CUSIP.
string
default:"nav"
nav for this dataset. The other values — flow, total_return, distributions — are documented on their own pages.
string
Earliest valuation date to return, YYYY-MM-DD. date_lte sets the ceiling.
integer
default:"250"
Rows per page, between 1 and 1000. Pages run newest to oldest via cursor.
To read only the most recent day, call the ETF profile endpoint instead and use its latest block, which carries the same fields without paging a history. See also ETF Fund Flows for creations and redemptions computed from this series, ETF Total Return for the distribution-reinvested series that must not be compared with NAV, ETF Distributions for the events that step NAV down, and ETF Holdings for what the fund owned on the same valuation date.