---
title: "Cross-sectional rankings leaderboard"
method: GET
path: "/rankings/top"
tags: ["Risk Metrics"]
---

# Cross-sectional rankings leaderboard

`GET /rankings/top`

## Request

- Base URL: `https://riskmodels.app/api`
- URL: `https://riskmodels.app/api/rankings/top`
- Auth: HTTP bearer

Best names (lowest rank_ordinal) at the latest `teo` for one metric × cohort × window. Same `rank_percentile` rule as GET /rankings/{ticker} (100 = best). Requires all three filters.

## Query parameters

- `metric` 'mkt_cap' | 'gross_return' | 'sector_residual' | 'subsector_residual' | 'er_l1' | 'er_l2' | 'er_l3', required
- `cohort` 'universe' | 'sector' | 'subsector', required
- `window` '1d' | '21d' | '63d' | '252d', required
- `limit` integer

## Response `200`

Leaderboard rows and lineage metadata.

- object
  - `teo` string, date, nullable
  - `metric` string
  - `cohort` string
  - `window` string
  - `limit` integer
  - `rankings` object[]
    - `symbol` string
    - `ticker` string
    - `rank_ordinal` integer
    - `cohort_size` integer, nullable
    - `rank_percentile` number, nullable
  - `_metadata` object
  - `_agent` AgentMeta: Per-request billing and telemetry metadata appended to metered responses.
    - `cost_usd` number, float: Cost deducted from prepaid balance for this request. 0 if served from cache.
    - `latency_ms` integer: Server processing time in milliseconds.
    - `request_id` string: Unique request identifier for support lookups.
    - `confidence` object
      - `overall` number, float
      - `factors` object
    - `data_freshness` string, date-time: ISO timestamp of the data's as-of datetime.
    - `billing_code` string: Internal billing classification for this request type.
    - `cache_status` 'HIT' | 'MISS' | 'BYPASS': Whether this response was served from cache.
    - `llm_cost_usd` number, float: POST /chat only: portion of cost from LLM token billing (estimated preflight charge).
    - `tool_cost_usd` number, float: POST /chat only; sum of internal data tool charges for this turn.
    - `tool_calls` integer: POST /chat only; number of tool invocations in this request.

## Other responses

- `400`: Missing or invalid query parameter.
- `401`: Missing or invalid Bearer token.
- `402`: Insufficient balance.
- `429`: Rate limit exceeded.

---

[API](https://skmtc.dev/riskmodels/apis/riskmodels-api.md) · [All operations](https://skmtc.dev/riskmodels/apis/riskmodels-api/llms.txt) · [OpenAPI document](https://skmtc.dev/riskmodels/apis/riskmodels-api/revisions/1a034cad408a?raw)
