> ## Documentation Index
> Fetch the complete documentation index at: https://data.ornn.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Analytics

> Annualized volatility and market utilization derived from the GPU price index.

Beyond raw prices, the API derives two analytics from the index history: price volatility and market utilization. Both need an API key and use the same GPU names and `startDate` / `endDate` parameters as the [history endpoints](/docs/price-index).

<CardGroup cols={2}>
  <Card title="Volatility" img="https://mintcdn.com/ornn-data/XYIc8NRHBiyV90g7/images/cards/analytics-volatility.jpg?fit=max&auto=format&n=XYIc8NRHBiyV90g7&q=85&s=cb36b0e20e5c7d831ec4ab476a3cb971" href="/docs/api-reference/analytics/get-annualized-price-volatility" width="1200" height="805" data-path="images/cards/analytics-volatility.jpg">
    How much the price swings.
  </Card>

  <Card title="Utilization" img="https://mintcdn.com/ornn-data/XYIc8NRHBiyV90g7/images/cards/analytics-utilization.jpg?fit=max&auto=format&n=XYIc8NRHBiyV90g7&q=85&s=e21f03294b86c9c818b729ae0fe6d487" href="/docs/api-reference/analytics/get-market-utilization" width="1200" height="805" data-path="images/cards/analytics-utilization.jpg">
    How much capacity is rented.
  </Card>
</CardGroup>

## Annualized volatility

`rolling_volatility` is the standard deviation of log returns over a rolling window, annualized. It is a decimal fraction, so `0.80` means roughly 80% annualized volatility. A higher number means the price moves more.

Two parameters shape the result:

* `windowDays` (default `30`, range `1` to `365`): the lookback for each point. A shorter window reacts faster, a longer one is smoother.
* `startDate` and `endDate` (both required): the span to return.

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.ornnai.com/api/gpu/H100%20SXM/volatility?startDate=2026-03-01&endDate=2026-05-31&windowDays=30" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests

  resp = requests.get(
      "https://api.ornnai.com/api/gpu/H100 SXM/volatility",
      params={"startDate": "2026-03-01", "endDate": "2026-05-31", "windowDays": 30},
      headers={"Authorization": "Bearer YOUR_API_KEY"},
  )
  series = resp.json()["data"]  # most recent first
  ```
</CodeGroup>

Each row pairs the index value with its volatility:

```json theme={null}
{
  "recorded_at": "2026-01-01T00:00:00.000Z",
  "gpu_type": "H100 SXM",
  "region": "global",
  "index_value": 2.00,
  "rolling_volatility": 0.20,
  "window_days": 30
}
```

See [Get annualized price volatility](/docs/api-reference/analytics/get-annualized-price-volatility) for all seven language examples.

## Market utilization

`utilization_ratio` is the share of tracked capacity that is currently rented, as a decimal fraction. `0.70` means about 70% utilized. Utilization often moves ahead of price, since tight supply tends to precede a price rise.

`GET /api/gpu/{gpuName}/volume-metrics?startDate=...&endDate=...` returns a series:

```json theme={null}
{
  "recorded_at": "2026-01-01T00:00:00.000Z",
  "utilization_ratio": 0.70
}
```

## Notes

* Every analytics endpoint needs an API key. See [Authentication](/docs/authentication).
* Series come back most-recent-first. Sort ascending before you plot or compute returns.
* Ranged analytics default to daily granularity, but hourly is available via the `granularity` parameter. The underlying index updates hourly. See [The Price Index](/docs/price-index).
