Funds Data Plane

ETF universe with capabilities (free)

Every ETF the API knows, with three capabilities, any combination per fund: cascade (SPY, sector and subsector ETFs the ERM3 cascade hedges with), priced (daily returns, covariance and beta to SPY, from priced_from) and holdings (look-through holdings and benchmark fit), plus factor_role and identifiers (FIGI, CIK and BW ids only). Built from the holdings catalog, the ETF return store's symbol list and the weekly hedge snapshot's cascade ETFs; cached for an hour. holdings_as_of is null in this list — read it from /data/etf/{ticker}. Free public read; per-IP data-gateway rate limit. See docs/ETF_COVERAGE.md.

get/data/etf/universe

Request

  • Base URL: https://riskmodels.app/api
  • URL: https://riskmodels.app/api/data/etf/universe
  • Auth: one of:
    • HTTP bearer
    • none

Query parameters

cascadeboolean

Keep only funds with (true) or without (false) the cascade capability.

pricedboolean

Keep only funds with (true) or without (false) daily returns.

holdingsboolean

Keep only funds with (true) or without (false) look-through holdings.

factor_rolestring
Example:sector

market, sector, subsector, style, macro (matches any macro:<factor>) or none.

Response

The filtered universe.

n_resultsinteger
filtersobject
reason_codesstring[]
built_atstring date-time

Example response

{
  "counts": {
    "total": 220,
    "cascade": 56,
    "priced": 128,
    "holdings": 148
  },
  "reason_codes": [
    "etf_outside_priced_universe",
    "etf_no_return_history_in_window",
    "symbol_not_found"
  ],
  "results": [
    {
      "ticker": "SPY",
      "capabilities": {
        "factor_role": "sector"
      },
      "identifiers": {
        "bw_sym_id": "BW-BBG000BDTBL9",
        "bw_etf_id": "BW-ETF-SPY",
        "figi": "BBG000BDTBL9",
        "ticker": "SPY"
      }
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.