For the complete documentation index, see llms.txt. This page is also available as Markdown.

Index Levels

Overview

An index level is the published value of a Coin Metrics index at a point in time. It is the single number that summarizes what the index measures, whether that is the market value of one asset, the capitalization-weighted performance of a basket, or the aggregate work securing a network. Each level answers one question: as of this timestamp, where does the index stand?

Index levels are the primary output of the Coin Metrics Bletchley Indexes (CMBI) and of the third-party index series that Coin Metrics distributes. Asset managers use them as the reference for benchmarks and structured products, exchanges use them for settlement, and researchers use them as a consistent performance series that does not depend on any one venue.

Index levels can be accessed via the following endpoints:

At a Glance

Data type
Entities
Frequency / cadence
Unit
Primary endpoints
Coverage

Index levels

Indexes (single-asset, multi-asset, momentum, mining, total market, and distributed third-party series)

Coin Metrics indexes: 1s, 15s, 1h, 1d, 1d-ny-close, 1d-sg-close, 1d-HH:00. Third-party indexes publish their own native frequency. Support varies per index

Index points, in the index's own denomination

/timeseries/index-levels /timeseries-stream/index-levels

🔗

Schema

One observation is the level of a single index at a single timestamp. The websocket feed carries the same fields and adds a cm_sequence_id. The columns below are the response schema for /timeseries/index-levels.

Field
Type
Description
Notes

index

string

Name of the index.

Required

time

string (date-time)

The time in ISO 8601 date-time format. Always with nanoseconds precision.

Required. The instant the level applies to (see Frequencies and daily closes)

level

string (decimal)

The value of the index.

Required

verification

object

Information about verification.

Optional. Returned only with include_verification=true, and only for indexes that publish it (see Verification)

cm_sequence_id

string

Per-connection message sequence number for ordering a live stream. Resets on reconnection.

Websocket messages only

The verification object carries these sub-fields:

Sub-field
Type
Description

timestamp

string (date-time)

The verification time of the index.

level

string (decimal)

The verification value of the index.

signature

string

The signature information.

Conventions. Levels are returned as JSON strings to preserve precision. Timestamps are UTC ISO-8601 with nanosecond resolution, and time is the instant the level applies to rather than the start of a window. A level is expressed in the index's own points, so levels are comparable across time within one index but not across indexes. The websocket feed adds a per-connection cm_sequence_id for ordering.

Methodology

Every Coin Metrics index resolves to the same output shape, a level at a timestamp, but the calculation behind that level depends on what the index is designed to measure. The subsections below describe the mechanics in plain language. The authoritative, versioned methodology for each series is published under Methodologies, and the rules governing market events, forks, and index changes are in the CMBI Index Policies.

Single-asset indexes

A single-asset index tracks the market value of one cryptoasset. Its level is computed continuously from the individual trades that Coin Metrics collects across a defined set of eligible markets for that asset, using the same market-selection discipline as the Coin Metrics Reference Rates.

At each calculation instant, the trades from each eligible market over a trailing window are summarized into a per-market price and volume. Markets whose most recent trade is stale relative to the observed trading pace are set aside, so an inactive venue cannot pin the index. Each remaining market is then weighted by a blend of its share of volume and the inverse of its price variance, so venues that trade more, and trade with less dispersion, count for more. The index level is the volume-and-variance weighted median of the per-market prices, which makes the level robust to a single outlying venue rather than sensitive to it.

Because the level is a weighted median over a trailing window, it moves continuously with the market and does not reset on any fixed schedule.

Multi-asset market-capitalization indexes

A market-capitalization index tracks a basket of assets weighted by their market capitalization. At each calculation instant, each constituent's index-eligible supply is valued at its current US dollar reference rate, those values are summed, and the sum is scaled by a divisor:

Levelt=∑iQi×Pi,tD\text{Level}_t = \frac{\sum_{i} Q_i \times P_{i,t}}{D}
  • QiQ_i: the index-eligible supply of constituent ii, as defined by that index's series methodology.

  • Pi,tP_{i,t}: the US dollar reference rate for constituent ii at time tt.

  • DD: the index divisor, held fixed between rebalances.

The supply measure differs by series. The Multi Asset Series uses adjusted free float supply, which discounts holdings that are restricted or effectively unavailable to the market (see the Adjusted Free Float Supply Methodology). The Total Market Series uses estimated supply, giving an estimated rather than free-float market capitalization. Consult the methodology document for the series you are using.

Each constituent's weight is its share of that sum, which is what the Index Constituents endpoint publishes.

Constituent selection and supply inputs are refreshed on the index's rebalance schedule, which takes effect at 16:00 New York time. At each rebalance the divisor is reset so that the level computed from the new basket equals the level computed from the old basket at the moment of the change:

Dnew=Dold×SumnewSumoldD_{\text{new}} = D_{\text{old}} \times \frac{\text{Sum}_{\text{new}}}{\text{Sum}_{\text{old}}}

This is what keeps the series continuous. A rebalance changes what the index holds without introducing a jump in what it reports, so levels remain comparable across the full history.

Equal-weighted indexes

An equal-weighted index starts each rebalance period holding the same dollar amount in every constituent. At the rebalance, the index value is divided evenly across constituents to produce a per-asset multiplier, and between rebalances the level is the sum of those multipliers valued at current reference rates. Weights then drift with relative performance until the next rebalance resets them to equal.

Mining and network indexes

The CMBI Mining Series measures network work rather than price, so its levels are derived from on-chain network data instead of from market prices. The methodology documents for that series are published under Methodologies.

Frequencies and daily closes

The frequency parameter selects which published series you receive. time is the instant the level applies to, not the start of an interval.

  • 1s and 15s are intraday series computed at that cadence.

  • 1h is the hourly close, the level at the top of each hour.

  • 1d is the daily close at 00:00 UTC, unless you pass timezone, which moves it to local midnight in that zone. frequency=1d&timezone=Asia/Tokyo returns Tokyo midnight closes, stamped 15:00:00Z.

  • 1d-ny-close is 16:00 New York time and 1d-sg-close is 16:00 Singapore time. Each shorthand carries its own time zone, so no separate timezone parameter is needed. Returned timestamps are still UTC, so a New York close appears as 20:00:00Z during Eastern Daylight Time.

  • 1d-HH:00 takes a daily close at the whole hour HH, applied in UTC unless a timezone is supplied.

timezone only relocates a daily close. With a sub-daily frequency it changes nothing about which instants you get back, only how your start_time and end_time are interpreted. In every case the returned time is rendered in UTC rather than in the requested zone, which is why a relocated boundary shows up as an offset-looking timestamp such as 15:00:00Z.

Not every index publishes every frequency. Real-time single-asset indexes carry 1s, multi-asset indexes typically start at 15s, and some series are hourly only. Requesting a frequency an index does not publish returns a bad_parameter error naming the index. The per-index frequency list is available from the coverage tool and from /catalog-v2/index-levels.

The list above describes the indexes Coin Metrics calculates. A third-party index publishes its own native frequency instead, and rejects the values above. A provider may publish once per second, or only at a single daily fixing, so there is no shared default: frequency=1s is right for one provider index and an error for another, and frequency=1d works for no third-party index at all. Read the value off /catalog-v2/index-levels before querying, then see External and third-party indexes for reshaping it.

Verification

Some indexes are published together with a signed verification record, which lets a consumer confirm that a level came from Coin Metrics unaltered. Pass include_verification=true to receive it. The response then carries a verification object holding the verified timestamp, the verified level, and the signature. Indexes that do not publish verification data simply omit the object, so the flag is safe to set on any request.

External and third-party indexes

Most of the indexes on this endpoint are not calculated by Coin Metrics. Alongside the CMBI series, Coin Metrics distributes index levels produced by third-party index providers, including crypto benchmark administrators and traditional-finance interest rate benchmarks. They are served through the same endpoint and the same schema, and they differ only in how you select and reshape the series.

Selecting. Pass the provider's native frequency, which /catalog-v2/index-levels reports per index. A provider that publishes continuously exposes frequency=1s, and one that publishes a single daily fixing exposes only that fixing, such as frequency=1d-ldn-close.

Reshaping. The granularity parameter downsamples a native series to a daily boundary, and it applies to these external indexes only. It accepts raw (the default, meaning no downsampling), 1d-ny-close, 1d-ldn-close, 1d-sg-close, their -last-second variants, and custom 1d-HH:00 offsets. So a provider index published every second can be read as a New York close series with frequency=1s&granularity=1d-ny-close, and the returned timestamps land on that boundary. granularity is ignored for indexes calculated by Coin Metrics, which publish their daily closes as first-class frequencies instead.

Accessing the Data

Index levels are available over HTTP at /timeseries/index-levels for historical queries, and as a real-time websocket feed at /timeseries-stream/index-levels.

Historical levels (HTTP)

Choose a series with the frequency parameter.

The indexes parameter accepts a comma-separated list or wildcard patterns such as CMBI* or *BTC, so you can query many indexes in one call. Set include_verification=true to receive the signed verification record where an index publishes one.

Real-time stream (websocket)

The stream pushes each new level as it is computed, carrying a per-connection cm_sequence_id for ordering.

Full parameter reference: see the API Reference for /timeseries/index-levels and /timeseries-stream/index-levels.

Examples

The examples below show levels for representative indexes. Levels are returned as JSON strings.

Example: one-second levels (/timeseries/index-levels)

The latest one-second levels for CMBIBTC. Run this query.

Example: New York close daily levels (1d-ny-close)

Daily closes for the multi-asset CMBI10 at 16:00 New York time. Each time is the close instant in UTC, so 20:00:00Z is 16:00 in New York during Eastern Daylight Time. Run this query.

Example: real-time stream (/timeseries-stream/index-levels)

Messages from wss://api.coinmetrics.io/v4/timeseries-stream/index-levels?indexes=CMBIBTC. Each message carries an incrementing cm_sequence_id:

Coverage

Usage

  • Benchmarking. A single-asset index gives a venue-independent performance series for one asset, and a multi-asset index gives one for a defined basket. Both are designed to be referenced by third parties rather than recomputed by them.

  • Settlement and product reference. Daily-close frequencies exist so that products can settle against a named, reproducible point in time such as a 16:00 New York close.

  • Real-time consumption. The websocket feed and the 1s frequency suit dashboards and trading systems that need the current level rather than a historical series.

  • Aligning across time zones. Use 1d-ny-close, 1d-sg-close, or 1d-HH:00 with timezone to line index closes up with the trading day that matters to you.

  • Charting. For open, high, low, and close over an interval rather than a point-in-time level, use Index Candles, which are built from these levels.

Limitations

  • Frequency support varies by index. No index publishes every frequency. Check the per-index list before assuming a series exists, or a request will return a bad_parameter error.

  • Levels are not comparable across indexes. An index level is expressed in its own points on its own base, so the ratio of two indexes' levels is not meaningful. Compare returns, not levels.

  • Verification is not universal. include_verification=true returns a record only for indexes that publish one. The flag is accepted for all indexes, but the object is absent where there is nothing to verify against.

  • granularity applies to external indexes only. It is ignored for indexes calculated by Coin Metrics.

FAQ

What is the difference between an index level and a reference rate?

A Reference Rate is a price for an asset, expressed in a quote currency such as US dollars. An index level is the value of an index, expressed in that index's own points. A single-asset index is built with the same market-selection and aggregation discipline as a reference rate, but it is a distinct, governed product with its own methodology document and its own eligible-market rules.

Which frequencies does a given index publish?

That varies by index. Look it up in the coverage tool or query /catalog-v2/index-levels, which returns the available frequencies and the time range for each. This is not optional for a third-party index, which publishes only its provider's native frequency rather than the Coin Metrics set.

What time is a 1d level taken at?

00:00 UTC. For other daily boundaries use 1d-ny-close (16:00 New York), 1d-sg-close (16:00 Singapore), or 1d-HH:00 with an optional timezone.

Does time mark the start of an interval?

No. A level is a point-in-time value, so time is the instant the level applies to. Interval semantics apply to Index Candles, where time is the start of the candle.

Why did my request return "frequency is not supported for index"?

The index does not publish that series. Multi-asset indexes, for example, generally publish 15s rather than 1s. Check the per-index frequency list in the coverage tool.

How do I get the constituents behind a multi-asset index level?

Use the Index Constituents endpoint, which publishes the assets and their weights at the same timestamps.

  • Index Overview: the index families, how to choose between the three data types, and the discovery loop.

  • Index Candles: OHLC candles aggregated from these levels.

  • Index Constituents: the assets and weights behind a multi-asset index level.

  • Reference Rates: the asset prices that feed multi-asset index calculations.

  • Methodologies: the versioned methodology document for each CMBI series.

  • CMBI Index Policies: how market events, forks, and index changes are handled.

  • Indexes Glossary: definitions of the index terms used on this page.

Last updated