We are improving the behavior of our candles data served through /timeseries/market-candles
. These updates will change the default behavior, improve the timeliness of the data, and provide additional transparency regarding when individual observations were last updated.
Background
Coin Metrics calculates candles for all markets in our coverage universe that consist of the open, high, close, and low price along with additional fields such as volume. We calculate candles using trades collected from exchanges rather than collecting candles directly reported from the exchange. This approach offers several advantages, such as allowing us to apply a consistent calculation methodology across exchanges to support cross-exchange analysis, and allows us to generate additional fields that are not typically published by exchanges, such as the volume converted to U.S. dollars, trade count, and volume-weighted average price.
Our market data collection system consists of multiple redundant and resilient applications, ensuring that most data is collected with minimal latency (usually a few hundred milliseconds). However, due to the nature of real-time data collection, some trades may not be collected immediately. When certain trades observations are not collected in real-time, our system backfills missing trades with a short delay (usually a few seconds). Internal metrics show that for most exchanges, we collect 99.9 percent of trades observations within roughly 2 seconds of publication by the exchange.
To ensure completeness, we currently delay candles calculation by 20 minutes. Additionally, the most recent three hours of candles are recalculated every hour to account for backfilled trades.
Upcoming Changes
Significant improvements in our real-time data collection enables us to eliminate the 20-minute delay. Candles will now be available in real-time through /timeseries/market-candles
immediately after the candle interval is complete. To maintain accuracy, we will continue to recalculate the most recent three hours of candles every hour and add an additional recalculation at 20 minutes after initial publication. These changes will be implemented on 2025-01-06.
For use cases that prioritize completeness, users can adjust the end_time parameter to delay retrieval until after some or all recalculations are complete. In a future release, we may include an update_time
field to indicate the most recent update for each observation so that users have transparency for individual observations.
If you have any questions about these changes, please do not hesitate to contact us. Thanks!