> For the complete documentation index, see [llms.txt](https://gitbook-docs.coinmetrics.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gitbook-docs.coinmetrics.io/market-data/market-data-overview/realized-volatility-metrics.md).

# Realized Volatility Metrics

## Overview

Realized volatility measures how much an asset's price actually moved over a past window, expressed as an annualized standard deviation of returns. Coin Metrics publishes it as a rolling series at eleven lookback windows, from 24 hours out to one year, computed on the Coin Metrics Reference Rate rather than on any single venue's price.

Risk teams use it to size positions and set limits, portfolio managers use it for volatility targeting and risk parity weights, and options desks compare it against [implied volatility](/market-data/market-data-overview/implied-volatility-metrics.md) at a matching horizon to judge whether options look expensive or cheap.

## At a Glance

<table data-full-width="true"><thead><tr><th>Data type</th><th>Entities</th><th width="159">Frequency / cadence</th><th>Unit</th><th>Primary endpoint</th><th>Coverage</th></tr></thead><tbody><tr><td>Metric</td><td>Assets</td><td>10m, 1h, 1d (varies by window)</td><td>Dimensionless (annualized decimal)</td><td><code>/timeseries/asset-metrics</code></td><td><a href="https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_%2A">🔗</a></td></tr></tbody></table>

## Metrics

The family is one calculation applied over eleven rolling windows. All metric IDs follow one convention:

```
volatility_realized_usd_rolling_<window>
```

The `<window>` component takes the values `24h`, `7d`, `14d`, `21d`, `30d`, `60d`, `90d`, `120d`, `180d`, `270d`, and `1y`. The available frequencies differ by window, because the windows are not all sampled at the same return interval. See [Return sampling and annualization](#return-sampling-and-annualization).

<table data-full-width="true"><thead><tr><th width="360">Metric</th><th>Description</th><th width="100">Frequency</th><th width="100">Coverage</th></tr></thead><tbody><tr><td><code>volatility_realized_usd_rolling_24h</code></td><td>The 24 hour rolling realized volatility, measured as the standard deviation of the natural log of returns of price in U.S. dollars calculated every 10 minutes over the past 24 hours.</td><td>10m, 1h, 1d</td><td><a href="https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_24h">🔗</a></td></tr><tr><td><code>volatility_realized_usd_rolling_7d</code></td><td>The 7 day rolling realized volatility, measured as the standard deviation of the natural log of returns of price in U.S. dollars calculated every 10 minutes over the past 7 days.</td><td>10m, 1h, 1d</td><td><a href="https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_7d">🔗</a></td></tr><tr><td><code>volatility_realized_usd_rolling_14d</code></td><td>The 14 day rolling realized volatility, measured as the standard deviation of the natural log of returns of price in U.S. dollars calculated every 10 minutes over the past 14 days.</td><td>10m, 1h, 1d</td><td><a href="https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_14d">🔗</a></td></tr><tr><td><code>volatility_realized_usd_rolling_21d</code></td><td>The 21 day rolling realized volatility, measured as the standard deviation of the natural log of returns of price in U.S. dollars calculated every 10 minutes over the past 21 days.</td><td>10m, 1h, 1d</td><td><a href="https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_21d">🔗</a></td></tr><tr><td><code>volatility_realized_usd_rolling_30d</code></td><td>The 30 day rolling realized volatility, measured as the standard deviation of the natural log of returns of price in U.S. dollars calculated every 10 minutes over the past 30 days.</td><td>10m, 1h, 1d</td><td><a href="https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_30d">🔗</a></td></tr><tr><td><code>volatility_realized_usd_rolling_60d</code></td><td>The 60 day rolling realized volatility, measured as the standard deviation of the natural log of returns of price in U.S. dollars calculated every hour over the past 60 days.</td><td>1h, 1d</td><td><a href="https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_60d">🔗</a></td></tr><tr><td><code>volatility_realized_usd_rolling_90d</code></td><td>The 90 day rolling realized volatility, measured as the standard deviation of the natural log of returns of price in U.S. dollars calculated every hour over the past 90 days.</td><td>1h, 1d</td><td><a href="https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_90d">🔗</a></td></tr><tr><td><code>volatility_realized_usd_rolling_120d</code></td><td>The 120 day rolling realized volatility, measured as the standard deviation of the natural log of returns of price in U.S. dollars calculated every hour over the past 120 days.</td><td>1h, 1d</td><td><a href="https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_120d">🔗</a></td></tr><tr><td><code>volatility_realized_usd_rolling_180d</code></td><td>The 180 day rolling realized volatility, measured as the standard deviation of the natural log of returns of price in U.S. dollars calculated every hour over the past 180 days.</td><td>1h, 1d</td><td><a href="https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_180d">🔗</a></td></tr><tr><td><code>volatility_realized_usd_rolling_270d</code></td><td>The 270 day rolling realized volatility, measured as the standard deviation of the natural log of returns of price in U.S. dollars calculated every hour over the past 270 days.</td><td>1h, 1d</td><td><a href="https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_270d">🔗</a></td></tr><tr><td><code>volatility_realized_usd_rolling_1y</code></td><td>The 1 year rolling realized volatility, measured as the standard deviation of the natural log of returns of price in U.S. dollars calculated every hour over the past 1 year.</td><td>1h, 1d</td><td><a href="https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_1y">🔗</a></td></tr></tbody></table>

{% hint style="info" %}
**Conventions.** Decimals are returned as JSON strings to preserve precision. Timestamps are UTC ISO-8601 with nanosecond resolution, and `time` marks the end of the lookback window, so a `30d` value at a given timestamp covers the 30 days ending at that timestamp. Values are annualized standard deviations of returns expressed as decimals rather than percentages, so `0.3178212` means 31.78212%. The window is part of the metric ID, and the observation frequency is a separate query parameter.
{% endhint %}

## Methodology

Realized volatility is computed with the close-to-close estimator on Coin Metrics Reference Rate prices. The subsections below cover the price input, the estimator, how returns are sampled and annualized, and which assets and windows are published.

### Price input

The price series is the [Coin Metrics Reference Rate](/coin-metrics-prices/coin-metrics-prices/reference-rate-metrics.md) in US dollars, not a single exchange's price. The reference rate aggregates across a vetted set of constituent markets and is designed to be robust to manipulation and to venue-specific dislocations, so the resulting volatility reflects the asset rather than the quirks of one venue's book.

Which frequency of the reference rate is used depends on the lookback window. Windows of 30 days and shorter read the **real-time frequency**, and windows of 60 days and longer read the **hourly frequency**. Those two frequencies are produced by different calculation methodologies, described under [Reference Rate](/coin-metrics-prices/coin-metrics-prices/reference-rate-metrics.md), so the price input is not strictly identical across the whole family. See [Return sampling and annualization](#return-sampling-and-annualization).

Metrics are published for assets that have an active US-dollar reference rate and whose pair has not been retired. An asset with no reference rate has no realized volatility.

### The estimator

Volatility is measured close-to-close, which is standard for continuously traded markets and widely used across the financial literature. The estimator uses the population form with zero assumed drift, so the mean return term drops out and the expression reduces to:

$$
RV=\sqrt{\frac{1}{N-1}\sum\_{i=1}^{N}\left(\ln\left(\frac{s\_i}{s\_{i-1}}\right)\right)^2}\cdot\sqrt{T}
$$

where $$RV$$ is the annualized realized volatility, $$N$$ is the number of returns in the lookback window, $$s\_i$$ is the reference rate price at observation $$i$$, and $$T$$ is the annualization factor described below.

Assuming an average return of zero is deliberate rather than a simplification. Subtracting a sample mean would make a sustained trend look like low volatility, since a steady climb has small deviations around its own mean. Setting the drift to zero keeps a strong directional move registering as movement, which is what a risk measure should do.

### Return sampling and annualization

Returns are sampled at a fixed interval, and the annualization factor is the square root of the number of such intervals in a year.

* **Windows of 30 days and shorter** (`24h`, `7d`, `14d`, `21d`, `30d`) take the Coin Metrics Reference Rate at **real-time frequency** and resample it to **10-minute** intervals. There are 6 ten-minute intervals per hour, so the annualization factor is $$\sqrt{6 \cdot 24 \cdot 365}$$. Sampling this finely captures how quickly volatility changes in digital asset markets.
* **Windows of 60 days and longer** (`60d`, `90d`, `120d`, `180d`, `270d`, `1y`) take the Coin Metrics Reference Rate at **hourly frequency**, giving an annualization factor of $$\sqrt{24 \cdot 365}$$. At these horizons, 10-minute sampling would add data volume without materially changing the estimate.

Both factors assume markets trade 24 hours a day, every day of the year, which digital asset markets do.

The observation frequency at which a metric is published is separate from the return sampling interval. The 10-minute-sampled windows are recomputed and published every 10 minutes, and the hourly-sampled windows every hour, with `1h` and `1d` observations available for all of them.

### Windows, assets, and when a value is withheld

The windows fall into two groups by how broadly they are published. The `24h`, `7d`, `30d`, `90d`, and `1y` windows are computed for every eligible asset. The `14d`, `21d`, `60d`, `120d`, `180d`, and `270d` windows are computed only for a small set of major assets: BTC, ETH, SOL, XRP, DOGE, and BNB. The [coverage page](https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_%2A) is the authoritative list for each metric.

A value requires a complete window. If the reference rate history does not yet cover the full lookback, or if the current observation is not present, no value is published for that timestamp rather than a value computed from a partial window. In practice this means a newly covered asset has no `1y` value until it has a year of reference rate history.

### Precision

Values are rounded to seven decimal places using banker's rounding, which is why a value reads as `0.3178212`.

## Accessing the Data

The metrics are served through a single timeseries endpoint:

* `/timeseries/asset-metrics`

The tabs below pull daily 24-hour, 30-day, and one-year realized volatility for BTC.

{% tabs %}
{% tab title="Python Client" %}

```python
from coinmetrics.api_client import CoinMetricsClient
from datetime import timedelta
import os

client = CoinMetricsClient(os.environ["CM_API_KEY"])

df = client.get_asset_metrics(
    assets=["btc"],
    metrics=[
        "volatility_realized_usd_rolling_24h",
        "volatility_realized_usd_rolling_30d",
        "volatility_realized_usd_rolling_1y",
    ],
    frequency="1d",
    start_time="2026-01-01",
    end_time="2026-08-01",
    format="json_stream",
).parallel(time_increment=timedelta(days=30)).to_dataframe()
```

{% endtab %}

{% tab title="Shell" %}

```shell
curl --compressed "https://api.coinmetrics.io/v4/timeseries/asset-metrics?assets=btc&metrics=volatility_realized_usd_rolling_24h,volatility_realized_usd_rolling_30d,volatility_realized_usd_rolling_1y&frequency=1d&start_time=2026-01-01&end_time=2026-08-01&page_size=10000&api_key=$CM_API_KEY"
```

{% endtab %}

{% tab title="Python" %}

```python
import os
import requests

response = requests.get(
    "https://api.coinmetrics.io/v4/timeseries/asset-metrics",
    params={
        "assets": "btc",
        "metrics": "volatility_realized_usd_rolling_24h,volatility_realized_usd_rolling_30d,volatility_realized_usd_rolling_1y",
        "frequency": "1d",
        "start_time": "2026-01-01",
        "end_time": "2026-08-01",
        "page_size": 10000,
        "api_key": os.environ["CM_API_KEY"],
    },
).json()
```

{% endtab %}
{% endtabs %}

For the shorter windows, requesting `frequency=10m` returns the full-resolution series rather than a daily sample of it.

Full parameter reference: see the API Reference for [`/timeseries/asset-metrics`](https://docs.coinmetrics.io/api/v4/#operation/getTimeseriesAssetMetrics).

## Examples

### Example: realized volatility across three windows

Daily values for BTC at the 24-hour, 30-day, and one-year windows. Reading across a row shows the volatility term structure: the short window swings widely day to day, while the one-year window barely moves, since each new observation replaces one of roughly nine thousand hourly returns. [Open in browser ↗](https://api.coinmetrics.io/v4/timeseries/asset-metrics?assets=btc\&metrics=volatility_realized_usd_rolling_24h,volatility_realized_usd_rolling_30d,volatility_realized_usd_rolling_1y\&frequency=1d\&limit_per_asset=3\&paging_from=end\&api_key=YOUR_API_KEY)

```json
{
  "data": [
    {
      "asset": "btc",
      "time": "2026-08-05T00:00:00.000000000Z",
      "volatility_realized_usd_rolling_24h": "0.3104886",
      "volatility_realized_usd_rolling_30d": "0.3178212",
      "volatility_realized_usd_rolling_1y": "0.3716386"
    },
    {
      "asset": "btc",
      "time": "2026-08-06T00:00:00.000000000Z",
      "volatility_realized_usd_rolling_24h": "0.2699076",
      "volatility_realized_usd_rolling_30d": "0.3068445",
      "volatility_realized_usd_rolling_1y": "0.3715269"
    },
    {
      "asset": "btc",
      "time": "2026-08-07T00:00:00.000000000Z",
      "volatility_realized_usd_rolling_24h": "0.2203564",
      "volatility_realized_usd_rolling_30d": "0.3002313",
      "volatility_realized_usd_rolling_1y": "0.371456"
    }
  ]
}
```

## Coverage

Coverage lists every asset with realized volatility metrics, the windows published for each, and the available time range.

{% embed url="<https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_%2A>" %}

## Usage

Most workflows pick a window to match the horizon of the decision being made.

* **Size positions and set risk limits.** Volatility targeting scales exposure inversely to realized volatility so that a portfolio's risk contribution stays roughly constant as market conditions change. The 30-day window is the common default, short enough to react to a regime change and long enough not to whipsaw on a single day.
* **Detect a change of regime.** Comparing a short window against a long one, for instance 24-hour against 30-day, gives a simple read on whether volatility is rising or falling relative to its recent norm. A short window sitting well above a long one marks a volatility expansion.
* **Measure the volatility risk premium.** Subtracting realized volatility over a window from [implied volatility](/market-data/market-data-overview/implied-volatility-metrics.md) at a comparable tenor gives the premium the option market charges above what the underlying actually delivered. That premium is usually positive and is the basis for volatility selling strategies. Match the horizons deliberately, since a 30-day implied value looks forward 30 days while a 30-day realized value looks backward 30 days, so the two never describe the same period.
* **Feed valuation and risk models.** Realized volatility is a direct input to value-at-risk calculations, option pricing models where a historical volatility estimate is wanted, and correlation and covariance work across assets.
* **Match the window to the asset.** Only five of the eleven windows are published for the full asset universe. Cross-sectional work spanning many assets should build on `24h`, `7d`, `30d`, `90d`, or `1y` to avoid a sample that silently narrows to six majors.

## Limitations

* **Backward-looking by construction.** Realized volatility describes a window that has already closed. It is not a forecast, and a low reading immediately before a shock is not a signal that the shock will not happen.
* **Sampling interval affects the estimate.** A 30-day value built from 10-minute returns and a 60-day value built from hourly returns are not measured identically. Higher-frequency sampling picks up intraday movement that hourly sampling averages away, so readings across the 30-day and 60-day boundary are not perfectly comparable.
* **Window availability differs.** Six of the eleven windows are published only for a handful of major assets. See [Windows, assets, and when a value is withheld](#windows-assets-and-when-a-value-is-withheld).
* **Zero-drift assumption.** The estimator assumes an average return of zero. This is standard and is the right choice for a risk measure, but it means the figure is not the sample standard deviation of returns in the textbook sense, and it will read slightly higher than a mean-adjusted estimate during a strong sustained trend.
* **No complete window, no value.** A newly covered asset produces no value for a given window until its reference rate history spans that window in full.
* **Reference Rate based.** Volatility is measured on the Coin Metrics Reference Rate, not on any individual venue. Volatility measured on a single exchange's price will differ, usually upward, because it carries that venue's own dislocations.
* **Two rate frequencies in one family.** Windows of 30 days and shorter read the real-time frequency of the reference rate, while windows of 60 days and longer read the hourly frequency. Those frequencies come from different calculation methodologies, so the price input is not strictly uniform across the family. This compounds the sampling-interval caveat above when comparing readings across the 30-day and 60-day boundary.

## FAQ

### What units are the realized volatility metrics in?

They are annualized standard deviations of returns expressed as decimals rather than percentages. A value of `0.5223685` means 52.23685%.

### Why is `volatility_realized_usd_rolling_60d` missing for my asset?

The `14d`, `21d`, `60d`, `120d`, `180d`, and `270d` windows are published only for BTC, ETH, SOL, XRP, DOGE, and BNB. The `24h`, `7d`, `30d`, `90d`, and `1y` windows are published for every eligible asset. Confirm on the [coverage page](https://coverage.coinmetrics.io/search-results?query=volatility_realized_usd_rolling_%2A).

### Why do only some windows offer a `10m` frequency?

Because only the windows of 30 days and shorter are computed on 10-minute returns and recomputed every 10 minutes. The longer windows are computed on hourly returns and recomputed hourly, so their finest available frequency is `1h`.

### Does `time` mark the start or the end of the window?

The end. A `volatility_realized_usd_rolling_30d` value stamped `2026-08-07T00:00:00Z` covers the 30 days ending at that instant.

### How does this compare to the network data volatility metrics?

The `vtydayret*` metrics under [network data](/network-data/network-data-overview/market/volatility.md) also measure realized volatility for an asset, but from **daily** returns over 30, 60, and 180 day windows. The metrics on this page use 10-minute or hourly reference rate returns, so they respond faster and pick up intraday movement that a daily-return measure does not see. Expect the two to differ in level as well as in responsiveness, and do not mix them in one series.

### Why does the annualization assume 365 days?

Digital asset markets trade continuously, with no weekends or exchange holidays, so every day of the year contributes returns. The traditional 252-trading-day convention from equity markets does not apply.

## Related

* [Implied Volatility Metrics](/market-data/market-data-overview/implied-volatility-metrics.md): forward-looking volatility interpolated from option markets, the other half of the volatility risk premium.
* [Reference Rate Metrics](/coin-metrics-prices/coin-metrics-prices/reference-rate-metrics.md): the price series this calculation runs on, and the frequencies it is published at.
* [Coin Metrics Prices Methodology](/coin-metrics-prices/methodologies/coin-metrics-prices-methodology.md#reference-rates-calculation-methodology): how the Coin Metrics Reference Rate is constructed.
* [Volatility (network data)](/network-data/network-data-overview/market/volatility.md): realized volatility measured from daily returns over 30, 60, and 180 day windows.
* [Market Candles](/market-data/market-data-overview/market-candles.md): the per-market OHLCV series for building venue-specific volatility measures.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://gitbook-docs.coinmetrics.io/market-data/market-data-overview/realized-volatility-metrics.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
