# Risk Metrics API
> 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.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/riskmetrics-api/..."
```

## Pricing
- **Free** (Free) — 4,600 calls/Mo, 3 req/s
- **Starter** ($7/Mo) — 102,000 calls/Mo, 10 req/s
- **Pro** ($20/Mo) — 510,000 calls/Mo, 25 req/s
- **Business** ($48/Mo) — 3,150,000 calls/Mo, 55 req/s

## Endpoints

### Risk

#### `GET /v1/meta` — Service metadata and endpoint list

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/riskmetrics-api/v1/meta"
```

**Response:**
```json
{
    "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, d
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/sharpe` — Sharpe ratio + annualised return and volatility

**Parameters:**
- `returns` (query, required, string) — Comma-separated per-period returns (or prices=) 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`
- `risk_free` (query, optional, string) — Annual risk-free rate, decimal (default 0) Example: `0`
- `periods_per_year` (query, optional, string) — Periods per year (default 252) Example: `252`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/riskmetrics-api/v1/sharpe?returns=0.01%2C-0.005%2C0.012%2C-0.008%2C0.006%2C0.0%2C-0.011%2C0.009%2C0.004%2C-0.003%2C0.007%2C-0.006%2C0.013%2C-0.009%2C0.005&risk_free=0&periods_per_year=252"
```

**Response:**
```json
{
    "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
}
```

#### `GET /v1/sortino` — Sortino ratio via downside deviation

**Parameters:**
- `returns` (query, required, string) — Comma-separated per-period returns (or prices=) 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`
- `risk_free` (query, optional, string) — Annual risk-free rate, decimal (default 0) Example: `0`
- `periods_per_year` (query, optional, string) — Periods per year (default 252) Example: `252`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/riskmetrics-api/v1/sortino?returns=0.01%2C-0.005%2C0.012%2C-0.008%2C0.006%2C0.0%2C-0.011%2C0.009%2C0.004%2C-0.003%2C0.007%2C-0.006%2C0.013%2C-0.009%2C0.005&risk_free=0&periods_per_year=252"
```

**Response:**
```json
{
    "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
}
```

#### `GET /v1/var` — Historical & parametric VaR + CVaR (Expected Shortfall)

**Parameters:**
- `returns` (query, required, string) — Comma-separated per-period returns (or prices=) 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`
- `confidence` (query, optional, string) — Confidence level 0-1 (default 0.95) Example: `0.95`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/riskmetrics-api/v1/var?returns=0.01%2C-0.005%2C0.012%2C-0.008%2C0.006%2C0.0%2C-0.011%2C0.009%2C0.004%2C-0.003%2C0.007%2C-0.006%2C0.013%2C-0.009%2C0.005&confidence=0.95"
```

**Response:**
```json
{
    "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
}
```

#### `GET /v1/volatility` — Periodic & annualised volatility, downside deviation, semivariance

**Parameters:**
- `returns` (query, required, string) — Comma-separated per-period returns (or prices=) 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`
- `periods_per_year` (query, optional, string) — Periods per year (default 252) Example: `252`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/riskmetrics-api/v1/volatility?returns=0.01%2C-0.005%2C0.012%2C-0.008%2C0.006%2C0.0%2C-0.011%2C0.009%2C0.004%2C-0.003%2C0.007%2C-0.006%2C0.013%2C-0.009%2C0.005&periods_per_year=252"
```

**Response:**
```json
{
    "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
}
```


---
Marketplace page: https://www.oanor.com/api/riskmetrics-api
OpenAPI spec: https://www.oanor.com/api/riskmetrics-api/openapi.json
