riskmodels-app Risk Metrics API

ERM3 factor hedge ratios, explained risk, and return decompositions.

Operations 43

GET /metrics/{ticker} (internal/legacy) Latest risk metrics snapshot #
POST /v4/decompose Decompose a position into named blocks (market / industry / style /… #
GET /hedge-basket/{ticker} Structured hedge basket with a recommended hedge level and decision trace #
GET /batch/latest-metrics Latest L3 hedge ratios and explained variances for up to 100 tickers #
GET /metrics/{ticker}/snapshot.png Single-ticker risk snapshot as a PNG image #
GET /snapshot/{entity_kind} Stock Deep Dive snapshot as PNG or PDF #
POST /decompose (internal/legacy) Decompose a position into four additive bets with hedge ratios #
GET /ticker-returns Daily returns time series with rolling hedge ratios (stocks and ETFs) #
GET /returns Daily gross returns time series (single ticker) — REMOVED #
GET /etf-returns Daily gross returns time series (ETF) — REMOVED #
GET /returns-decomposition Full returns decomposition (L1/L2/L3 + optional Lstar) #
GET /industry-panel Industry peer β cross-section #
GET /stocks/{ticker}/commentary-bundle Stock commentary evidence bundle (one pull) #
GET /cohorts Cohort residual statistics (cross-section) #
GET /cohorts/series Cohort residual statistics (time series) #
GET /cohorts/roster Cohort roster and variable catalogue (discovery) #
POST /cohorts/pnl-decomposition Selection vs drift decomposition #
POST /rankings/screen Cross-sectional rankings screen #
GET /l3-decomposition L3 factor decomposition time series #
GET /lstar Recommended hedge level (L*) per date with dispatched HRs #
GET /residual-signal/{ticker} Residual mean-reversion factor — snapshot + history for one ticker #
GET /residual-signal/latest Residual mean-reversion factor — active-universe cross-section #
GET /residual-signal/decile/{n} Residual mean-reversion factor — members of decile n #
POST /signals/residual-reversion/basket Residual mean-reversion factor — user-defined basket aggregate #
GET /universe/{name}/members Active members of a named universe at a teo #
GET /etf/factor-returns ETF factor returns snapshot (public scope) #
POST /correlation Correlation vs macro factor returns #
GET /metrics/{ticker}/correlation Correlation vs macro factors (query convenience) #
GET /macro-factors Macro factor daily return series #
GET /rankings/{ticker} Cross-sectional rankings snapshot #
GET /rankings/{ticker}/badge Shields.io-style rank badge (JSON) #
GET /rankings/top Cross-sectional rankings leaderboard #
POST /batch/analyze (internal/legacy) Multi-ticker batch analysis #
POST /batch/lstar Batch Lstar residual returns (up to 100 tickers) #
POST /portfolio/exposure/history/daily Exposure history feed, daily — every trading day for a list of names (join… #
POST /portfolio/exposure/history Exposure history feed — month-end model history for a list of names (join… #
POST /portfolio/exposure Long/short portfolio exposure, ETF hedges and risk (signed dollar positions) #
POST /portfolio/risk-index Portfolio risk index (L3 variance decomposition) #
POST /portfolio/risk-snapshot (legacy) Portfolio risk snapshot (bundled PDF or JSON) #
POST /snapshot Canonical JSON snapshot (portfolio or single ticker) #
GET /snapshot/{entity_kind}/{id}/panels/{slug} Snapshot panel drill-down (artifact PNG/JSON) #
GET /metrics/{ticker}/snapshot.pdf Single-ticker risk snapshot PDF #
POST /chat AI Risk Analyst #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/riskmodels-app:riskmodels-app-risk-metrics-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

riskmodels-app-risk-metrics-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: RiskModels Risk Metrics API
  version: 3.0.0-agent
  description: 'POST /decompose returns variance shares and ETF hedge ratios for any US equity, separating factor exposure from the residual bet so you can hedge what you don''t want. Daily history to 2000 across ~3,000 US equities.

    Precision equity risk intelligence platform with AI agent integration.


    **New in v3.0.0-agent:**

    - OAuth2 client credentials flow for machine-to-machine auth

    - Plaid Investments integration for live portfolio sync

    - MCP (Model Context Protocol) server for AI agent tools

    - Compliance manifests for AI marketplace integration

    - Per-key rate limiting and scoped access control


    **Data**: Universe `uni_mc_3000` (top ~3,000 US stocks by market cap), date range 2000 to present (deep panel; stock-specific skill series from ~2001 after warmup), updated daily end-of-day. Model outputs are computed by the ERM3 regression system (Huber/Ridge), with Zarr v2 archives on Google Cloud Storage for research pipelines. The live API reads primarily from Supabase **V3** tables: long-form `security_history` (returns, volatility, L1/L2/L3 hedge ratios and explained-risk metrics), wide latest rows in `security_history_latest`, identity in `symbols`, plus supporting surfaces such as `trading_calendar`, `erm3_landing_chart_cache`, and `macro_factors`. Cross-sectional **rankings** (`GET /rankings/*`) are served from precomputed rank metric keys in `security_history`, not a separate `erm3_rankings` table. Hedge ratios (`*_hr`) are **dollar_ratio** ETF notionals per $1 stock and are distinct from regression **betas** (`l1_mkt_beta`, `l2_sec_beta`, `l3_sub_beta`), which are dimensionless coefficients from the hierarchical L1/L2/L3 regression. Both are exposed under `MetricsV3` and on `security_history_latest`. See `SEMANTIC_ALIASES.md` for the full HR-vs-beta convention.


    **Authentication Methods:**

    1. Session cookies (web app)

    2. API Key/Secret via Bearer token (external integrations)

    3. OAuth2 client credentials (AI agents, npm package)


    **Security Features:**

    - GCP KMS envelope encryption for portfolio data

    - Cryptographic shredding on key deletion

    - HMAC-SHA256 webhook verification

    - Row-level security (RLS) via Supabase


    **Pricing**: Per-request billing with prepaid balance. Cached responses are free. Many metered responses include `_agent.cost_usd` in the JSON body; others bill silently — always check the `X-API-Cost-USD` response header when present. Metered operations also expose `x-pricing` (OpenAPI extension) with `capability_id`, `tier` (`baseline` | `premium`), `model`, `cost_usd`, `billing_code`, and optional `min_charge` / per-token fields — aligned with `GET /pricing` and `lib/agent/capabilities.ts`.

    **Lineage**: JSON data responses include `_metadata` (model version, data_as_of, factor set) and headers `X-Risk-Model-Version`, `X-Data-As-Of`, `X-Factor-Set-Id`, `X-Universe-Size`. Parquet and CSV bodies omit `_metadata`; use the same `X-Risk-*` headers on the HTTP response.

    **Tabular exports (Parquet / CSV):** For bulk historical loads, time-series endpoints accept `format=parquet` or `format=csv`, or (when `format` is omitted) `Accept: application/vnd.apache.parquet` or `Accept: text/csv`. Successful responses use `Content-Type: application/vnd.apache.parquet` or `text/csv; charset=utf-8` and `Content-Disposition: attachment` with a descriptive filename. Each export is a single flat table; column names and types match the per-operation schemas referenced in the response media type descriptions (aligned with JSON row objects or zipped parallel arrays). Parquet is produced via schema inference from the first row (UTF8 strings, DOUBLE floats, INT64 integers, BOOLEAN, TIMESTAMP_MILLIS for JavaScript Date values). CSV uses a header row, comma separators, UTF-8, and RFC 4180-style quoting when needed. Prefer Parquet for typed columnar stacks (pandas, Polars, Arrow); use CSV for spreadsheets and lightweight scripting.'
  contact:
    name: RiskModels Support
    email: service@riskmodels.app
    url: https://riskmodels.app
  termsOfService: https://riskmodels.app/legal
  license:
    name: Commercial
    url: https://riskmodels.app/legal
servers:
- url: https://riskmodels.app/api
  description: Production — all metered endpoints (`/metrics`, `/snapshot`, `/decompose`, `/batch/analyze`, `/portfolio/*`, etc.).
- url: https://riskmodels.app
  description: Discovery origin — `/.well-known/*` manifests (`mcp.json`, `ai-plugin.json`, `agentic-disclosure.json`) live at the site origin without the `/api` prefix. Generated clients that hard-code the first server entry must strip `/api` before requesting these paths.
security:
- BearerAuth: []
tags:


# --- truncated at 32 KB (286 KB total) ---
# Full source: https://artifacts.apis.io/riskmodels-app/openapi/riskmodels-app-risk-metrics-api-openapi.yml