Risk Metrics

Decompose a position into named blocks (market / industry / style / stock-specific)

The v4 product spine: market + industry(sector, subsector) + style + stock_specific ≈ 1.0.

The industry block is ETF-hedgeable (per-layer hedge_notional_per_1_long); the style block is a diagnostic — exposures plus incremental explained variance, never a tradeable hedge. stock_specific is the doubly-cleaned skill residual.

basis selects the explained-variance basis for the style and stock_specific blocks: L3 (default — the clean variance partition) or lstar (skill basis). Industry hedge layers are always L3.

Two leaf fields are null until their upstream producer lands and fill in with no schema change: style.exposures.{size,value}.beta and stock_specific.{sharpe_36m,rank_percentile}.

The legacy flat shape remains at POST /decompose, same billing profile.

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

post/v4/decompose

Request

  • Base URL: https://riskmodels.app/api
  • URL: https://riskmodels.app/api/v4/decompose
  • 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)

Request body

tickerstring required
basis'L3' | 'lstar'

Example request

{
  "ticker": "NVDA"
}

Response

Named-block decomposition

tickerstring
symbolstring
basis'L3' | 'lstar'
data_as_ofstring date
teostring date

Example response

{
  "decomposition": {
    "market": {
      "factor": "SPY",
      "hedgeable": true
    },
    "industry": {
      "hedgeable": true
    }
  }
}

Changes

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