Skip to content
GET /v1/screener

Rank the universe by a risk-adjusted metric

Try it live

10 free calls per day — no sign-up, no API key. Goes through the oanor gateway.

Custom headers (optional)
api.oanor.com/riskadjusted-api

It works. Grab an API key and use it in your project.

Get an API key

Code snippets

curl "https://api.oanor.com/riskadjusted-api/v1/screener" \
  -H "x-oanor-key: oanor_test_..."
await fetch("https://api.oanor.com/riskadjusted-api/v1/screener", {
  headers: { "x-oanor-key": "oanor_test_..." }
});
$ch = curl_init("https://api.oanor.com/riskadjusted-api/v1/screener");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);
import requests
requests.get(
    "https://api.oanor.com/riskadjusted-api/v1/screener",
    headers={"x-oanor-key": "oanor_test_..."}
)

Example response

A real response from this endpoint, captured by the latest health check.

{
    "data": {
        "best": {
            "name": "Technology",
            "sharpe": 1.977,
            "symbol": "XLK"
        },
        "note": "Assets ranked by sharpe (higher = more return per unit of risk) over window_days of daily closes. Sharpe uses total volatility, Sortino only downside volatility, Calmar the worst drawdown. Returns/volatility annualised at 252 trading days; Sharpe & Sortino net off risk_free_pct. Read fresh per call, nothing cached.",
        "class": "all",
        "count": 21,
        "metric": "sharpe",
        "source": "Yahoo Finance",
        "results": [
            {
                "name": "Technology",
                "rank": 1,
                "class": "sector",
                "calmar": 2.756,
                "sharpe": 1.977,
                "symbol": "XLK",
                "sortino": 2.864,
                "cagr_pct": 52.12,
                "available": true,
                "observations": 252,
                "ann_return_pct": 44.52,
                "max_drawdown_pct": -16.15,
                "total_return_pct": 52.12,
                "ann_volatility_pct": 22.52,
                "ann_downside_dev_pct": 15.55
            },
            {
                "name": "Nasdaq 100",
                "rank": 2,
                "class": "equity",
                "calmar": 2.538,
                "sharpe": 1.801,
                "symbol": "QQQ",
                "sortino": 2.624,
                "cagr_pct": 34.24,
                "available": true,
                "observations": 252,
                "ann_return_pct": 30.93,
                "max_drawdown_pct": -12.19,
                "total_return_pct": 34.24,
                "ann_volatility_pct": 17.18,
                "ann_downside_dev_pct": 11.79
            },
            {
                "name": "Emerging Markets",
                "rank": 3,
                "class": "equity",
                "calmar": 2.761,
                "sharpe": 1.72,
                "symbol": "EEM",
                "sortino": 2.542,
                "cagr_pct": 41.84,
                "available": true,
                "observations": 252,
                "ann_return_pct": 37.33,
                "max_drawdown_pct": -13.52,
                "total_return_pct": 41.84,
                "ann_volatility_pct": 21.71,
                "ann_downside_dev_pct": 14.68
            },
            {
                "name": "S&P 500",
                "rank": 4,
                "class": "equity",
                "calmar": 2.291,
                "sharpe": 1.699,
                "symbol": "SPY",
                "sortino": 2.471,
                "cagr_pct": 22.33,
                "available": true,
                "observations": 252,
                "ann_return_pct": 20.92,
                "max_drawdown_pct": -9.13,
                "total_return_pct": 22.33,
                "ann_volatility_pct": 12.32,
                "ann_downside_dev_pct": 8.47
            },
            {
                "name": "US Small
…