riskmodels.app Highlights · Vol. II

Risk benchmarks. Tradeable hedge ratios.Any portfolio. One API call.

A custom benchmark for every position — built from tradable ETFs, returned in one API call.

Edition · 2026·04·23
100-position portfolio~$0.50$0.005 per position · $0.01 minimum
CLI · Python · REST · MCP
Get API key QR Get API key riskmodels.app/get-key
Decouple your portfolio into tradable market · sector · subsector · residual bets. Get ETF hedge ratios to align exposures with your thesis — in real time, from a single API call.
I Proof · three tech stocks, three risk shapes Sector XLK · Variance decomposition (ER), Σ = 1.00 · live 2026·04·23
AAPL
0.44
 
 
0.55
Apple Inc. · sub RSPT Decoupled from tech 55% residual · sector/sub ≈ 0.
NVDA
0.49
0.21
 
0.30
NVIDIA Corp. · sub SMH Market + semis 70% in MKT + SEC — hedge the stack.
CRWD
0.24
0.10
0.22
0.44
CrowdStrike · sub IGV Software cohort 22% is subsector — hedge IGV to isolate.
Market · SPY Sector · XLK Subsector · per stock Residual return
Instantly expand your portfolio’s risk context — inside your existing workflow.
Your data + our betas → tradable portfolio decomposition.
II Mechanism · your tickers, meet the risk model Overnight decomposition · ticker-level JOIN · ~120ms round-trip

We pre-compute the risk model.The API matches your tickers in milliseconds.

No portfolio uploaded. No weights sent. Just a ticker-level JOIN against the solved model.

You send
Tickers
"AAPL" "NVDA" "CRWD" "MSFT"
weights stay local
You receive · per ticker
Risk model metrics
L1MKT   β · HR · ER
L2SEC   β · HR · ER
L3SUB   β · HR · ER
RResidual return (RR)
precomputed · EOD refreshed
Portfolio aggregation is local. The SDK applies your weights client-side and rolls the per-ticker metrics up to L1 / L2 / L3 — no portfolio leaves your desk.
III Factor engine · CRWD cascade Live 2026·04·23 · L1 βmkt = 1.31 · ERL1 + ERL2 + ERL3 + RR = 1.00
Lvl Equation ETF Orthogonality Incremental ER Cumulative ER Final L3 HR
L1 rs = βm·rm + ε1 SPY Gross return raw market exposure 0.24 0.24 +1.97
L2 ε1 = βs·rs* + ε2 XLK* Sector tilt net of market 0.10 0.34 −0.17
L3 ε2 = βu·ru* + ε3 IGV* Subsector tilt net of market + sector 0.22 0.56 −1.16
R ε3 · residual return Residual return · the bet net of market + sector + subsector 0.44 1.00
IV Agent loop · talk to your book Inspect · compare · analyze · iterate

Use directly in your agent workflow — Claude · Cursor · MCP.

Inspect Compare Analyze Iterate
YouCompare AAPL, NVDA, CRWD — all XLK, how different?
AgentAAPL decoupled (55% R) · NVDA market + semis (49% L1, 21% L2) · CRWD subsector-heavy (22% L3, IGV). Same sector, three different bets.
YouIf I trim NVDA 30→15%, what happens to portfolio risk?
AgentPortfolio residual share rises (AAPL · CRWD carry more book) · market HR shrinks · semi exposure drops; software cohort via CRWD holds.
YouIsolate CRWD's software-cohort bet. Strip market + sector.
AgentCRWD L3 hedge: SPY +1.97 · XLK −0.17 · IGV −1.16. Residual preserved. Ready to stage.
V SDK · ship it in your workflow Python SDK · CLI · MCP · REST · DataFrames, plots, PDFs, LLM-ready
Load it anywhere
  • Python SDKinstall once · auth from env
  • CLIbatch jobs · local workflows
  • MCP / RESTClaude, Cursor, agents, services
Risk & hedges
  • c.batch_analyze(tickers)ER · HR · RR per ticker
  • c.analyze_portfolio(positions)weighted L1 / L2 / L3 roll-up
  • c.get_l3_decomposition(ticker)orth. betas + residuals
Outputs & agents
  • c.visuals.save_portfolio_risk_cascade_png(…)variance waterfall
  • c.post_portfolio_risk_snapshot_pdf(…)R1 tear sheet PDF
  • c.get_rankings(ticker, metric="subsector_residual")Alpha RR rank · multi-window
UniverseTime-safe simulation · U.S. equities · 15k+ coverage · since 2006
Latency< 120 ms
Decomp.MKT · SEC · SUB · RES
AuthOAuth2