Risk Metrics

Recommended hedge level (L*) per date with dispatched HRs

Per-(ticker, date) recommended hedge level (L1/L2/L3). Selection source. With threshold omitted (the canonical request), each date's level is the lstar_level ERM3 publishes in ds_erm3_returns — whatever selector ERM3 ships (the cost-aware GBM once enabled). It is not re-derived from the marginal ERs and can differ from the 1% rule below. Passing any threshold, including 0.01, switches to the legacy marginal-ER rule:

• if L3_subsector_ER ≥ θ → L3 (3-ETF hedge: market + sector + subsector) • elif L2_sector_ER ≥ θ → L2 (2-ETF hedge: market + sector) • else → L1 (1-ETF hedge: market only)

Response carries the chosen level's market / sector / subsector hedge ratios (nulls above the chosen level), the chosen level's total ER and daily residual return (residual_return), and the raw l2_sector_er / l3_subsector_er inputs for audit. See the side study at RM_ORG/content/Medium/series/drafts/lstar_selection/ for the 1% rule. Billing: $0.02 + $0.01 per extra year.

get/lstar

Request

  • Base URL: https://riskmodels.app/api
  • URL: https://riskmodels.app/api/lstar
  • Auth: HTTP bearer

Query parameters

tickerstring required
market_factor_etfstring

Market factor ETF passed through to the underlying L1/L2/L3 fields.

yearsinteger

Calendar years of daily history.

thresholdnumber

Optional marginal-ER threshold. Omit for the canonical level ERM3 publishes (lstar_level). Any explicit value, including 0.01, applies the legacy marginal-ER rule at that threshold and can select a different level. Chat / agentic surfaces should omit it. Backtests of the legacy rule across 275 tickers × 11 sectors found no compelling reason for per-sector thresholds.

axis'industry'

Cascade axis. industry (default): sector/subsector marginal ERs and ETF hedge ratios. DEPRECATED value style was removed in v4 and now returns 400 — style is a diagnostic block served by POST /v4/decompose; the industry cascade is the only hedge axis.

Response

Per-date recommended level + dispatched hedge ratios.

tickerstring required
axis'industry' required

Cascade axis — always industry. style was removed in v4 (style is served as a diagnostic block by POST /v4/decompose).

datesstring[] required
lstarstring[] required

Recommended level per date. null where source ERs are unavailable.

market_hrnumber[] required
sector_hrnumber[] required

Hedge ratio for the sector ETF. null when lstar = L1.

subsector_hrnumber[] required

Hedge ratio for the subsector ETF. null when lstar ∈ {L1, L2}.

total_ernumber[] required

Sum of explained-return components at the chosen level (market + sector + subsector, omitting residual).

residual_returnnumber[] required

Daily simple residual return at the chosen Lstar level (l1_rr, l2_rr, or l3_rr from returns decomposition). Parallel to dates; null when Lstar or source return is unavailable. Not a hedge ratio and not explained-risk variance (l*_res_er).

l2_sector_ernumber[] required

Marginal L2 (sector) ER input. Exposed for audit / threshold override.

l3_subsector_ernumber[] required

Marginal L3 (subsector) ER input. Exposed for audit / threshold override.

threshold_usednumber float required

The marginal-ER threshold used to assign each date's level.

market_factor_etfstring required
universestring required
data_sourcestring required

Example response

{
  "threshold_used": 0.01,
  "data_source": "zarr"
}

Changes

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