RiskModels API

Your portfolio already has a benchmark. You just haven’t seen it.

Decompose every position into market, sector, subsector, and stock-specific layers — with ETF hedge ratios you can use from one API call.

Numbers-first answers from live ERM3 data · hedge ratios in dollars of ETF per $1 of stock

Read-only · Keys server-sideERM3 (Equity Risk Model v3)Sub-120 msAgent-callable

Worked example — MSFT

Per $1 long MSFT, ERM3 returns three hedge ratios you can trade.

L1 · market

short $0.03 SPY

+20% explained risk

L2 · tech sector

short $0.05 XLK

+4% explained risk

L3 · systems software

short $0.62 IGV

+18% explained risk · dominant

What’s left — the bet

MSFT’s stock-specific return. Not hedgeable with ETFs.

57% residual

Live decomposition from the ERM3 API · single call, no extrapolation · snapshot 2026-05-26

Built for three workflows

Pick the path that matches your job.

For developers & agents

Call risk decomposition from your app, notebook, or agent workflow. JSON in, hedge ratios out.

View API Docs

For portfolio managers

See what each position is really betting on — and what ETF trades hedge it. NVDA single-stock and AGTHX fund-fit snapshots, rendered from one API call.

See sample snapshots

For allocators & diligence

Separate benchmark exposure from stock selection in disclosed 13F books.

Read 13F Research
Live Demo

See the API in Action

Stylized demos (not live recordings) — REST and SDK shapes match the API; CLI 'agent' and some MCP tool names illustrate product workflows. Python SDK: python3 -m pip install "riskmodels-py>=0.3.4" on PyPI ([xarray] optional for dataset helpers; [viz] for Kaleido static PNG). CLI: npm install -g riskmodels@latest on npm. Use riskmodels --help and MCP tools/list for what your install exposes. sdk/ · cli/.

riskmodels agent decompose — L3 portfolio attributionportfolio: positions.json
$
[INFO] Loading portfolio: 8 holdings detected...
[INFO] Calling POST /batch/analyze (ERM3-L3-v30)...
[INFO] L3 attribution complete. Building response...
 
{
  "avg_l3_mkt_hr": 1.14,
  "dominant_factor": "market",
  "holdings": {
    "NVDA": { "l3_mkt_hr": 0.97, "l3_sec_hr": 0.14, "sector_etf": "SOXX" },
    "MSFT": { "l3_mkt_hr": 0.88, "l3_sec_hr": 0.11, "sector_etf": "XLK" },
    "AAPL": { "l3_mkt_hr": 0.85, "l3_sec_hr": 0.12, "sector_etf": "XLK" }
  },
  "_metadata": { "model_version": "ERM3-L3-v30", "universe_size": 2987 }
}

The research behind the model

“Much of what gets labeled as the ‘factor zoo’ is already sitting in plain sight — embedded in sector and subsector exposures as tradable risk. The proliferation of factors is often a labeling exercise.”

— Part 1 · One Position, Four Bets

Published methodology. Open research examples. Reproducible decomposition logic. Real citations (Frisch-Waugh-Lovell, Cremers-Petajisto, Harvey-Liu-Zhu, Grinold-Kahn).

Pricing, API-first.

Designed for experimentation and agent workflows.

  • Pay per call
  • No seats
  • No enterprise lock-in
  • Start free — $20 in credits

Transparent methodology.

Additive decomposition

Four layers, no hidden factors. `market_er + sector_er + subsector_er + residual_er ≈ 1`.

Same model drives return + risk

Hedge ratios are the dollar weights from the same ERM3 regression that produces explained risk.

Fully documented

OpenAPI spec, semantic field reference, and methodology notes are public.

Install once. Ask what you own.

Put RiskModels inside Claude, Cursor, Codex, or VS Code and turn portfolios into chart-ready risk explanations.

RiskModels API — Precision Equity Risk Intelligence