RiskModels
Clean US equity total returns + institutional risk decomposition, via MCP.
What it can do
- Riskmodels Decompose: L3 four-bet view: decompose one stock into additive market, sector, subsector, and residual layers (same semantics as POST /decompose exposure/hedge). Returns chart_data and plai
- Riskmodels Get Hedge Levels: Canonical L1, L2, and L3 hedge snapshots (semantic HR/ER + hedge_etfs) from GET /metrics/{ticker}. Use this when you need to compare which cascade depth to trade, distinct
- Riskmodels Compare: Compare tickers across market, sector, subsector, and residual risk layers. Prefer grouped bar charts when chart_data is present.
What data it sees
Do you need an account
No: the server works without sign-in
Clean US equity total returns + institutional risk decomposition, via MCP.
RiskModels gives agents dividend-adjusted total return series for any US stock or ETF — and decomposes both the return and its risk into market → sector → subsector → residual layers, with executable ETF hedge ratios for each. Built on ERM3, a hierarchical factor model with orthogonalized factor construction over ~3,000 US equities (16k-name historical panel), daily history back to 2006.
One MCP call covers performance tracking, return attribution, manager-skill / 13F review, hedging, stat-arb, or feeding clean returns into your own models.
Capabilities
- Returns — daily dividend-adjusted total (gross) return series, point-in-time / time-safe
- Return attribution — gross return split into L1/L2/L3 factor vs residual; isolates the residual (stock-picking / alpha) series
- Risk decomposition — additive market / sector / subsector / residual variance shares (sum to ~100%)
- Hedging — executable ETF hedge ratios + optimal cascade-level selection, scalable to a dollar position
- Portfolio — holdings-weighted decomposition, hedge aggregation, cross-sectional comparison
Key tools: riskmodels_get_returns · riskmodels_get_return_attribution ·
riskmodels_decompose · riskmodels_get_hedge_levels · riskmodels_compare ·
riskmodels_hedge_portfolio · riskmodels_analyze_portfolio
Try it instantly — a shared free-tier demo key is pre-filled (rate-limited, 100 calls/day total). For real use, get your own free key with $20 starter credit at riskmodels.app/get-key.
Every response carries request_id, data_as_of, and methodology provenance —
transparent per-call pricing, structured outputs, no fabricated numbers. Works in
Claude, Cursor, and any MCP agent.
Links
- Live demo: https://riskmodels.app
- Docs & methodology: https://riskmodels.app/docs/api · https://riskmodels.app/docs/methodology
- Repo: https://github.com/BlueWaterCorp/RiskModels_API
How to connect
How to connect RiskModels to Claude
The server address to paste into Claude settings:
https://riskmodels--service-c09f.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect RiskModels to ChatGPT
The server address to paste into ChatGPT settings:
https://riskmodels--service-c09f.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect RiskModels to Cursor
The server address to paste into Cursor settings:
https://riskmodels--service-c09f.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (15)
Raw names from tools/list. Only developers need these.
| riskmodels_decompose | L3 four-bet view: decompose one stock into additive market, sector, subsector, and residual layers (same semantics as POST /decompose exposure/hedge). Returns chart_data and plain_english. To compare standalone L1 vs L2 vs L3 hedge solutions (HR/ER + ETF legs), call riskmodels_get_hedge_levels or read hedge_levels on the API response. |
| riskmodels_get_hedge_levels | Canonical L1, L2, and L3 hedge snapshots (semantic HR/ER + hedge_etfs) from GET /metrics/{ticker}. Use this when you need to compare which cascade depth to trade, distinct from decompose four-bet exposure. |
| riskmodels_compare | Compare tickers across market, sector, subsector, and residual risk layers. Prefer grouped bar charts when chart_data is present. |
| riskmodels_hedge_position | Scale ETF hedge ratios for a ticker to a dollar position. Returns chart-ready hedge notionals. |
| riskmodels_analyze_portfolio | Holdings-weighted L1/L2/L3 hedge_levels across names via POST /batch/analyze (hedge_ratios). Returns normalized portfolio.portfolio_hedge_levels and per-ticker blocks when present. |
| riskmodels_hedge_portfolio | Batch hedge_ratios at a chosen cascade level (L1/L2/L3), scale HRs by dollar notionals per ticker, and aggregate ETF USD hedge legs. |
| riskmodels_portfolio_decompose | Decompose a weighted portfolio into market, sector, subsector, and residual risk layers. |
| riskmodels_whitepaper_example | Run a live example from the RiskModels white paper. Returns chapter text plus SDK/API output with chart_data. |
| riskmodels_render_artifact | Render a deterministic registry artifact (fund, filer, or client portfolio). Returns JSON chart/table/narrative or base64 PNG/SVG. Same contract as riskmodels.net workspace fetchArtifact. |
| riskmodels_list_endpoints | List all public API capabilities (id, name, method, endpoint, short description) |
| riskmodels_get_capability | Get full capability details (parameters, pricing, examples) by id |
| riskmodels_get_schema | Get JSON schema for an API response by path (e.g. ticker-returns-v2.json) |
| get_l3_decomposition | Daily EOD hierarchical orthogonal decomposition for a single ticker: market → sector → subsector → residual. Returns parallel time-series arrays plus hedge ratios. Data freshness: daily after US market close. |
| get_metrics | Latest daily EOD risk metrics for a ticker: L1/L2/L3 hedge ratios (SPY, sector ETF, subsector ETF), explained-risk fractions, daily volatility, price close, market cap. |
| get_portfolio_risk_snapshot | Bundled portfolio risk report for up to 100 positions: variance decomposition, 23-day volatility, optional diversification analytics. Response is cached per-user per-portfolio for 1 hour. |