ETFs

ETF Metrics

GET/v2/etfs/metrics

Returns a paginated list of all ETF metrics — performance, risk, volatility, and fund characteristics — with full lineage/traceability.

Metric groups:

  • Returns: 1M, 3M, YTD, 1Y, 3Y, 5Y, 10Y; annualized 5Y; since inception (cumulative and annualized). Returns are total returns: distributions are added back to the closes (an accumulating share class is used as quoted).
  • Risk (security & category): beta, alpha, sharpe ratio, treynor ratio, R-squared, standard deviation, mean annual return (1Y/3Y/5Y/10Y)
  • Volatility: YTD, 1Y, 3Y, 5Y, 10Y
  • Risk indicators: SRI (price-based, 1-7), SRRI (document-based, 1-7)
  • Fund: tracking error, net management fee
  • Dividends: dividend_yield (trailing 12-month distributions / latest close, percent; 0.0 for accumulating share classes)

Pass trace=true to include computation lineage (formula, inputs, explanation) for each metric.

Check each metric's date for freshness. latestDate is the newest date across metrics and does not mean every metric (including AUM) is current.

Included in: Pro, Growth.

Authentication

Send your API key in the x-api-key header on every request to https://api.bavest.co. The samples read it from the BAVEST_API_KEY environment variable. Get an API key · Authentication guide

Parameters

Required: one of symbol, isin, for example isin=IE00B4L5Y983.

NameInTypeRequiredDescription
symbolquerystringone of symbol, isin

ETF ticker symbol (e.g., IWDA.AS). Provide exactly one of symbol or isin; clear the ISIN example before using a symbol.

isinquerystringone of symbol, isin

ETF ISIN code (e.g., IE00B4L5Y983, iShares Core MSCI World UCITS ETF). Provide exactly one of symbol or isin.

Example IE00B4L5Y983

fieldsquerystringno

Comma-separated list of metric names to include in the response. Valid names are served by /v2/etfs/metrics/names. Example when explicitly filtering: nav,aum,expense_ratio.

limitqueryinteger (int32)no

Maximum number of metrics to return per page (default 50, max 200)

Default 50

offsetqueryinteger (int32)no

Number of results to skip for pagination (default 0)

Default 0

cursorquerystringno

Opaque cursor for cursor-based pagination. When provided, returns results after the cursor position. Takes precedence over offset.

tracequerybooleanno

Include computation lineage (formula, inputs, explanation) for each metric

Default false

Try it

ETF ticker symbol (e.g., `IWDA.AS`). Provide exactly one of symbol or isin; clear the ISIN example before using a symbol.

ETF ISIN code (e.g., `IE00B4L5Y983`, iShares Core MSCI World UCITS ETF). Provide exactly one of symbol or isin.

GET /v2/etfs/metrics?isin=IE00B4L5Y983

Sent only to api.bavest.co for this request; not stored.

Sign in to sendGet an API keySends with the key above, or sign in to use your account's key. Each request counts as one API call.

Response 200

Successful response · application/json

  • dataobject
    • latestDatestring (date) | null

      Most recent observation date across all metrics

      Example 2026-10-02

    • metricsarray of ETFMetricItem
  • metaResponseMeta

    Response metadata for paginated endpoints. Offset pagination returns page/pageSize/totalPages/totalCount; cursor pagination returns pageSize/hasMore/nextCursor and totalCount only when known.

    • timeinteger

      Server-side processing time in milliseconds

      Example 17

    • parametersobject

      Echo of the request parameters the endpoint resolved

    • pageinteger

      Current page number (offset pagination)

      Example 1

    • pageSizeinteger

      Number of results per page

      Example 50

    • totalPagesinteger

      Total number of pages (offset pagination)

      Example 2

    • totalCountinteger

      Total number of results across all pages

      Example 100

    • hasMoreboolean

      Whether more results follow (cursor pagination)

    • nextCursorstring | null

      Cursor for the next page (cursor pagination), null on the last page

Errors

  • 400Invalid request parameters. Returned when required query parameters are missing, have invalid types, or violate constraints (e.g., providing both symbol and isin when they are mutually exclusive).
  • 401Missing or invalid API key.
  • 404Resource not found.
  • 429Rate limit exceeded. Retry after the `Retry-After` header interval.
  • 500An unexpected error occurred on the server. If the issue persists, contact support with the X-Request-Id header value.
  • 502Upstream data provider returned an error or is temporarily unavailable. Retry after a short delay.
  • 503Bavest cannot read its data store right now. The security may well have data; retry after the `Retry-After` header interval.
  • 504The request timed out waiting for a response from the upstream data provider. This may occur for complex queries or during peak load.
  • defaultAn unexpected error occurred on the server. If the issue persists, contact support with the X-Request-Id header value.

For AI agents: this page as Markdown at /docs/v2_etfs_metrics.md, every route in /llms.txt, the OpenAPI spec at /openapi.json.