---
title: "Structured hedge basket with a recommended hedge level and decision trace"
method: GET
path: "/hedge-basket/{ticker}"
tags: ["Risk Metrics"]
---

# Structured hedge basket with a recommended hedge level and decision trace

`GET /hedge-basket/{ticker}`

## Request

- Base URL: `https://riskmodels.app/api`
- URL: `https://riskmodels.app/api/hedge-basket/{ticker}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://riskmodels.app/oauth/authorize`, token URL `https://riskmodels.app/api/oauth/token`, scopes: `mcp:read`)

The chat-rendered hedge table: per-layer ETF legs with a net-market-β subtotal, plus a `decision_trace` explaining why `recommended_level` was chosen. Composes the latest-teo metric snapshot (HRs, ERs, betas) with link-betas read from `ds_erm3_link_betas_{market_factor_etf}.zarr`.

`user_segment` drives the leverage cap (default `family_office`, 2.0×).

**Authentication:** Required (API Key or OAuth2)
**Billing:** $0.02 per request
**Rate Limit:** 120 requests/minute (default)

## Path parameters

- `ticker` string, required

## Query parameters

- `user_segment` 'retail' | 'family_office' | 'ls_equity' | 'stat_arb'
- `market_factor_etf` string

## Response `200`

Hedge basket

- object
  - `ticker` string
  - `as_of` string, date
  - `inputs` object: Betas, layer ETF tickers, and the `lambda_s_to_m` / `lambda_u_to_m` link betas the basket was built from.
  - `basket` object
    - `recommended_level` string
    - `statistical_lstar` number, nullable
  - `decision_trace` string[]: Ordered rationale for the recommended level.

## Other responses

- `400`: Invalid ticker or query parameter
- `401`: Authentication required
- `402`: Insufficient balance
- `404`: Ticker not found in the universe

---

[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)
