# Coverage & Limitations

## Universe

Roughly **32,000 US-listed mutual funds and ETFs**, keyed by bare ticker (`code`, e.g. `SPY`).
Each fund carries reference metadata: `name`, `country`, `exchange`, `currency`, `type`, `isin`,
and its available return-date range (`min_return_date` / `max_return_date`).

## History depth

History extends back to **each fund's inception** — there's no fixed start date. `min_return_date`
tells you how far back a given fund goes; `return_earliest_available` gives its since-inception
annualized return.

## Survivorship-bias-free

Delisted and closed funds are **kept**, with their full historical returns intact — they're never
dropped from the dataset. Inactive funds are marked `is_inactive = true` with an `inactive_date`.
This means backtests and historical comparisons include funds that no longer trade, so results
aren't skewed by only looking at today's survivors.

## What's covered

- **Trailing total returns** for 16 periods: `1d`, `1w`, `1m`, `3m`, `6m`, `ytd`, `1y`, `2y`, `3y`,
  `4y`, `5y`, `7y`, `10y`, `15y`, `20y`, and since-inception (`earliest_available`).
- **Calendar-year total returns**, one per fund per year, back to inception.
- **Fund reference data** for search and lookup.

## What's not covered

To set expectations up front, the API is **fund-level returns only**. It does **not** provide:

- **Individual equities, bonds, or other non-fund securities** — mutual funds and ETFs only.
- **Non-US funds** — the universe is US-listed. (`market` is accepted on requests but is
  informational today; all codes resolve as US tickers.)
- **Intraday or real-time prices** — returns are computed from **end-of-day** pricing.
- **Raw price series / NAV history** — you get computed returns, not the underlying daily prices.
- **Holdings, expense ratios, AUM, fund flows, or other fundamentals** — performance returns only.
- **Arbitrary date-range series** — endpoints are point lookups (latest, a specific `as_of` date,
  or a specific calendar `year`), not a from/to time series. One fund has far too many daily rows
  to page a full range through the API; for full history in bulk, use the
  [Snowflake Marketplace dataset](/api-vs-snowflake).

## Freshness

Data is refreshed on trading days — incremental updates five days a week and full rebuilds twice
a week. See [Freshness & updates](/freshness) for the exact schedule.
