Products

Risk Analytics

Risk Analytics groups portfolio-risk, hedging, pairs, and single-name research routes.

Live API

Availability depends on the evidence each route can verify.

Account-risk availability#

Account portfolio VaR, stress, and crash outputs are unavailable until the service can bind real account positions, NAV, and calibrated risk evidence to the calculation. These routes report a typed unavailable result and are marked data_pending in capabilities. They do not deliver a live shadow-book VaR, portfolio drawdown, or sub-minute risk estimate. Do not substitute zero for an unavailable measure.

Other routes in this product have separate source and freshness requirements. A plan's access permission does not guarantee that every requested calculation has usable data. Check the response's availability, source, and observation time.

Historical portfolio scenarios#

POST /api/v3/risk/historical_var_scenario calculates empirical VaR and expected shortfall for a portfolio you supply. Provide USD NAV, cash, and up to 20 signed equity exposures identified by CRSP permno. Cash plus signed market values must equal NAV. The service does not verify account ownership or portfolio completeness.

Choose warehouse_crsp with explicit dates, or supplied_total_returns with exact dated daily total returns. Warehouse returns include distributions and delisting returns; missing or duplicate evidence is refused. Supplied history is labeled source_verified: false. Both modes require complete exchange-session alignment and at least ten observations in the requested loss tail. At 95% confidence, that means at least 200 non-overlapping scenarios. A five-session horizon compounds five actual daily returns per scenario; it does not scale a daily number.

Results disclose the historical window, its age at the portfolio snapshot, scenario count, input hashes, and assumptions. They have research_only: true, account_verified: false, and capital_authorized: false. Historical losses do not establish future coverage. Cash earns no return in the scenario; borrowing, liquidity, fees, derivatives, and FX are excluded.

This example uses a caller-supplied illustrative portfolio, not a linked account:

Shell
1curl --fail-with-body --max-time 30 \2  -H "Authorization: Bearer $TENGU_API_KEY" \3  -H "Content-Type: application/json" \4  -d '{5    "portfolio": {6      "snapshot_id": "my-research-scenario",7      "as_of": "2025-01-02T21:00:00Z",8      "nav_usd": 100000,9      "cash_usd": 40000,10      "positions": [{"permno": 14593, "side": "long", "market_value_usd": 60000}]11    },12    "history": {"kind": "warehouse_crsp", "start": "2023-01-03", "end": "2024-12-31"},13    "confidence": 0.95,14    "horizon_sessions": 115  }' \16  https://firm.wealthnow.io/api/v3/risk/historical_var_scenario

Access#

5 credits for a billable product call, Pro and up. Quarantined data_pending routes have a zero-credit policy; unavailable output is not evidence of fulfilled risk data.

Endpoints#

MethodPathDescription
GET/api/v2/risk/varPortfolio VaR/CVaR route; unavailable without verified account and calibration inputs.
POST/api/v3/risk/historical_var_scenarioEmpirical historical scenarios for an explicit user-supplied portfolio.
GET/api/v3/risk/portfolio_varPortfolio VaR/CVaR route; typed unavailable result while account inputs are missing.
GET/api/v2/risk/stressStress-scenario route; no live portfolio loss estimate without account inputs.
GET/api/v3/institutional/hedgingIndex hedge proposals (SPY/QQQ/IWM) — protective puts, collars — from dealer gamma & IV rank.
GET/api/v2/pairs/kalmanKalman-filtered pairs signals (z-score, hedge ratio). 36-month correlation candidates fallback.
GET/api/v3/validation/{ticker}/kelly_uncertaintyUncertainty-discounted Kelly fraction for one ticker: full Kelly haircut for estimation error. Billed as Quant Signals (Starter+, 3 credits).

Handle unavailable output#

Inspect ok, status, and any availability or warning fields before using a numeric risk field. A successful HTTP exchange can carry an unavailable result. Do not use the response timestamp as the time of the underlying market data. See API reference for error handling and pricing and credits for settlement behavior.