{"openapi":"3.1.0","info":{"title":"Risk Metrics API","version":"1.0.0","description":"Live risk-adjusted-return analytics that quants and portfolio managers run on a return or price series — computed on demand, no key, nothing cached. Get the Sharpe ratio with annualised return and volatility; the Sortino ratio using downside deviation; periodic and annualised volatility, downside deviation and semivariance; and historical and parametric Value-at-Risk plus Conditional VaR (Expected Shortfall) at any confidence level. Every value is computed live from your input and works for any market — forex, stocks, crypto or funds. A risk-statistics engine, distinct from raw price feeds, from technical-indicator tools and from option-pricing tools: it turns a series of returns into the risk-adjusted performance numbers a strategy is judged on.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/riskmetrics-api","description":"oanor gateway"}],"tags":[{"name":"Risk"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Risk"],"summary":"Service metadata and endpoint list","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Pass returns=0.01,-0.02,... (per-period decimals) or prices=100,101,... (simple returns are derived). Default periods_per_year=252 (daily).","source":"Computed in-process from caller-supplied returns or prices (no upstream)","service":"riskmetrics-api","endpoints":{"GET /v1/var":"Historical & parametric VaR + CVaR/Expected Shortfall (returns=..., confidence=0.95).","GET /v1/meta":"This document.","GET /v1/sharpe":"Sharpe ratio + annualised return/vol (returns=..., risk_free=0, periods_per_year=252).","GET /v1/sortino":"Sortino ratio via downside deviation (returns=..., risk_free=0, periods_per_year=252).","GET /v1/volatility":"Periodic & annualised volatility, downside deviation, semivariance (returns=...)."},"description":"Live risk-adjusted-return analytics computed on demand from a return or price series. The sharpe endpoint returns the Sharpe ratio and annualised return and volatility; the sortino endpoint returns the Sortino ratio using downside deviation; the volatility endpoint returns periodic and annualised volatility, downside deviation and semivariance; the var endpoint returns historical and parametric Value-at-Risk plus Conditional VaR (Expected Shortfall) at a chosen confidence level. Computed live from your input, nothing stored — works for any market (forex, stocks, crypto, funds). A risk-statistics engine, distinct from price feeds, technical-indicator tools and option-pricing tools.","upstream_status":"ok"},"meta":{"timestamp":"2026-06-10T22:56:22.151Z","request_id":"a480cb7f-2255-4ebe-a6b1-aad1beb76ce1"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/sharpe":{"get":{"operationId":"get_v1_sharpe","tags":["Risk"],"summary":"Sharpe ratio + annualised return and volatility","description":"","parameters":[{"name":"returns","in":"query","required":true,"description":"Comma-separated per-period returns (or prices=)","schema":{"type":"string"},"example":"0.01,-0.005,0.012,-0.008,0.006,0.0,-0.011,0.009,0.004,-0.003,0.007,-0.006,0.013,-0.009,0.005"},{"name":"risk_free","in":"query","required":false,"description":"Annual risk-free rate, decimal (default 0)","schema":{"type":"string"},"example":"0"},{"name":"periods_per_year","in":"query","required":false,"description":"Periods per year (default 252)","schema":{"type":"string"},"example":"252"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"n":15,"metric":"sharpe","source":"RISKMETRICS","sharpe_period":0.197632,"periods_per_year":252,"risk_free_annual":0,"annualized_return":0.4032,"sharpe_annualized":3.137311,"volatility_period":0.00809585,"mean_return_period":0.0016,"annualized_volatility":0.128518},"meta":{"timestamp":"2026-06-10T22:56:22.258Z","request_id":"d677e657-e22d-4b4f-b0df-bfbf0be71cd2"},"status":"ok","message":"Sharpe ratio computed","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/sortino":{"get":{"operationId":"get_v1_sortino","tags":["Risk"],"summary":"Sortino ratio via downside deviation","description":"","parameters":[{"name":"returns","in":"query","required":true,"description":"Comma-separated per-period returns (or prices=)","schema":{"type":"string"},"example":"0.01,-0.005,0.012,-0.008,0.006,0.0,-0.011,0.009,0.004,-0.003,0.007,-0.006,0.013,-0.009,0.005"},{"name":"risk_free","in":"query","required":false,"description":"Annual risk-free rate, decimal (default 0)","schema":{"type":"string"},"example":"0"},{"name":"periods_per_year","in":"query","required":false,"description":"Periods per year (default 252)","schema":{"type":"string"},"example":"252"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"n":15,"metric":"sortino","source":"RISKMETRICS","sortino_period":0.338062,"periods_per_year":252,"risk_free_annual":0,"annualized_return":0.4032,"mean_return_period":0.0016,"sortino_annualized":5.366563,"downside_deviation_period":0.00473286},"meta":{"timestamp":"2026-06-10T22:56:22.342Z","request_id":"6f9b537d-a723-4b9a-928b-60bb3b03f0e7"},"status":"ok","message":"Sortino ratio computed","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/var":{"get":{"operationId":"get_v1_var","tags":["Risk"],"summary":"Historical & parametric VaR + CVaR (Expected Shortfall)","description":"","parameters":[{"name":"returns","in":"query","required":true,"description":"Comma-separated per-period returns (or prices=)","schema":{"type":"string"},"example":"0.01,-0.005,0.012,-0.008,0.006,0.0,-0.011,0.009,0.004,-0.003,0.007,-0.006,0.013,-0.009,0.005"},{"name":"confidence","in":"query","required":false,"description":"Confidence level 0-1 (default 0.95)","schema":{"type":"string"},"example":"0.95"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"n":15,"note":"VaR/CVaR expressed as a positive loss fraction per period at the given confidence (0.95 = 95%).","metric":"var","source":"RISKMETRICS","confidence":0.95,"var_historical":0.0096,"var_parametric":0.011716,"cvar_historical":0.011},"meta":{"timestamp":"2026-06-10T22:56:22.438Z","request_id":"c97e891c-0dca-430c-a25f-821889f7256d"},"status":"ok","message":"Value-at-Risk computed","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/volatility":{"get":{"operationId":"get_v1_volatility","tags":["Risk"],"summary":"Periodic & annualised volatility, downside deviation, semivariance","description":"","parameters":[{"name":"returns","in":"query","required":true,"description":"Comma-separated per-period returns (or prices=)","schema":{"type":"string"},"example":"0.01,-0.005,0.012,-0.008,0.006,0.0,-0.011,0.009,0.004,-0.003,0.007,-0.006,0.013,-0.009,0.005"},{"name":"periods_per_year","in":"query","required":false,"description":"Periods per year (default 252)","schema":{"type":"string"},"example":"252"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"n":15,"metric":"volatility","source":"RISKMETRICS","semivariance":2.24e-5,"periods_per_year":252,"volatility_period":0.00809585,"mean_return_period":0.0016,"volatility_annualized":0.128518,"downside_deviation_period":0.00473286},"meta":{"timestamp":"2026-06-10T22:56:22.516Z","request_id":"2bcc0bcd-379c-45b5-8c65-d3e1365f5945"},"status":"ok","message":"Volatility computed","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":4600,"rps_limit":3,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":725,"monthly_call_quota":102000,"rps_limit":10,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1975,"monthly_call_quota":510000,"rps_limit":25,"hard_limit":true},{"slug":"business","name":"Business","price_cents_month":4750,"monthly_call_quota":3150000,"rps_limit":55,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/riskmetrics-api"}