---
title: "ETF factor returns snapshot (public scope)"
method: GET
path: "/etf/factor-returns"
tags: ["Risk Metrics"]
---

# ETF factor returns snapshot (public scope)

`GET /etf/factor-returns`

## Request

- Base URL: `https://riskmodels.app/api`
- URL: `https://riskmodels.app/api/etf/factor-returns`
- Auth: HTTP bearer

One-teo snapshot of close + trailing-window total returns (1d / 21d / 63d / 252d) for **SPY + the 11 GICS sector SPDR ETFs** (XLE / XLB / XLI / XLY / XLP / XLV / XLF / XLK / XLC / XLU / XLRE).

The classification scope is intentionally narrow — GICS sector membership is industry-public knowledge so exposing it carries no leakage on top of what any prospectus already discloses. The fuller BWMACRO factor roster (subsectors, style, macro, broad-market) is NOT exposed through this endpoint by design. Tickers requested outside the public scope return **400**.

Pairs well with `/industry-panel` to read the day's market and sector index moves alongside aggregate stock-level industry βs.

**Billing:** $0.02 per request.

## Query parameters

- `sleeve` 'market' | 'sector' | 'all'
- `tickers` string
- `teo` string, date

## Response `200`

Snapshot with one row per in-scope ETF.

- object
  - `teo` string, date
  - `filter` object
    - `sleeve` 'market' | 'sector' | 'all'
    - `tickers` string[], nullable
  - `windows` string[]: Window labels covered by `returns` (1d, 21d, 63d, 252d).
  - `rows` object[]
    - `ticker` string
    - `sleeve` 'market' | 'sector'
    - `name` string
    - `close` number, nullable
    - `returns` object
      - `1d` number, nullable
      - `21d` number, nullable
      - `63d` number, nullable
      - `252d` number, nullable

## Other responses

- `400`: Unknown ticker (outside public scope) or invalid teo format.
- `401`: Missing or invalid Bearer token.
- `402`: Insufficient balance.
- `429`: Rate limit exceeded.
- `503`: Upstream ETF zarr unavailable.

---

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