Behind every crypto price chart lies a simple yet powerful dataset: OHLCV. These five letters, Open, High, Low, Close, Volume, are the DNA of every market move. But knowing what they mean is one thing. Knowing how to read them? That’s where the edge begins.
Whether you’re backtesting strategies, analyzing patterns, or just trying to make sense of volatile charts, understanding OHLCV data is a foundational skill.
Why OHLCV is the first dataset every trading system touches
Before you optimize strategies, build models, or run live trades, there’s one format you’ll start with: OHLCV.
Whether you're a quant researcher refining an alpha signal, a fintech dev building an analytics platform, or an academic modeling market dynamics, OHLCV is the core unit of time-based market analysis. But do you really understand how to interpret it?
Let’s break it down and show you how CoinAPI helps you move from raw candles to actionable insight.
First things first: What is OHLCV?
Think of OHLCV as a compressed narrative of market activity. It shows how the market opened, how it fluctuated, and where it ended, plus how much demand (volume) was behind those moves.
By reading OHLCV, you can:
- Detect momentum shifts (strong volume on rising candles)
- Spot reversals (long wicks + low volume)
- Confirm breakouts (close > resistance + volume spike)
- Build technical indicators (like moving averages, Bollinger Bands, or RSI)
How to Read OHLCV Data? Explained with real BTC/USDT data
We’re not just talking theory, this article is based on real OHLCV data from CoinAPI for the BTC/USDT pair on Binance, using 1-minute intervals from 2025-05-24T00:00:00
to 2025-05-25T00:00:00
.
đź”— View the sample data here (CSV)
By walking through this real dataset, you’ll learn not only what OHLCV means, but how to actually read and apply it in trading, backtesting, and analytics.
Let’s break down how to interpret one row of OHLCV data, the core of any time-based market analysis.
Suppose you see the following values for a 1-minute candle:

How to use this data
- Traders use OHLCV data to draw candlestick charts and identify patterns (e.g., wicks, engulfing candles).
- Quant analysts use it to backtest strategies — each line is a data point in the simulation.
- Data scientists use
volume_traded
andprice_change
to build predictive models or train ML pipelines.
CoinAPI constructs OHLCV bars only when real trades happen. So if a minute passes with no activity, no bar is created, keeping your dataset clean and meaningful. There’s no artificial interpolation or forward-filling — just raw, accurate aggregation based on actual trades.
OHLCV use cases for developers and quants
If you’re a quant, backtester, or bot developer, OHLCV is your minimal viable dataset:
- Backtest a mean reversion strategy with daily OHLCV
- Detect anomalies in intraday 1-minute bars
- Normalize price data across exchanges for consistent analytics
- Use volume to build liquidity-sensitive execution models
And if you're building anything time-based, from trading dashboards to ML models, OHLCV is your clean, structured foundation.
A hedge fund analyzing altcoin momentum used CoinAPI’s 1-minute OHLCV from 3 exchanges to train their volatility breakout model, spotting alpha signals with 8% higher confidence than using exchange-native feeds.
How OHLCV data works
At CoinAPI, OHLCV data is built from real, on-chain or exchange-traded activity, not artificial smoothing or approximated chart lines. Each OHLCV bar (Open, High, Low, Close, Volume) is created only when trades occur during a given time window.
If no trading takes place during a particular interval, no candle is generated. This ensures your datasets are clean, meaningful, and truly representative of what the market actually did.
Why you might see "Missing" candles
Let’s take BINANCE_SPOT_APE_ETH
as an example. If you request 20 candles, but the symbol only saw trading activity during 7 intervals, only 7 bars will be returned.
As shown in Figure 1, the first JSON block represents an OHLCV bar where trades occurred. The second one is a nearby interval where no new trades happened, and thus no candle was recorded for that period.
📸 Figure 1: Example of OHLCV output showing trade activity and missing intervals

CoinAPI’s OHLCV data is built from actual executed trades, not from exchange chart approximations or pre-filled candles. This is intentional. Our goal is to provide truthful, event-driven data, not visually smoothed outputs.
We use what’s called the active side, meaning our OHLCV bars reflect only what really happened on the market. If no trades occurred during a given period, we don’t emit a candle. You can confirm this behavior directly on exchanges like Binance, where flat periods indicate true inactivity.
The same logic applies to WebSocket streams
This logic is consistent across both our historical and real-time (WebSocket) feeds.
Let’s walk through an example using the BINANCE_SPOT_APE_ETH
symbol with a 5-minute (5MIN
) period over a 20-minute window from 2024-09-15T20:25:00
to 2024-09-15T20:45:00
.

Breakdown of what happens:
Candle 1 (20:25–20:30):
- A trade occurs during this interval.
- You receive a WebSocket update at 20:30:00 with a completed OHLCV bar.
Candle 2 & 3 (20:30–20:40):
- No trades happen during these intervals.
- No OHLCV updates are sent.
- Since nothing changed, the last known candle from 20:25–20:30 remains the most recent data, producing a flat section on your chart.
Candle 4 (20:40–20:45):
- Trading resumes.
- At 20:45:00, you receive a fresh OHLCV update containing the trades executed during this window.
This behavior is visualized in Figure 2 (below), where a flat price range illustrates a genuine gap in trading activity.
Why This Matters
- We don’t forward-fill missing candles.
- We don’t fabricate activity where there was none.
- We only emit candles when there’s real trading to report.
This ensures your backtests, dashboards, and live models rely on truthful, unbiased market signals - not artificial noise.
Real-Time OHLCV Updates: Why You Get Multiple Messages Before Period Completion
One of the most frequent questions we receive about OHLCV data is: "Why do I get multiple WebSocket updates for the same time period before it's even finished?"
This behavior is intentional and beneficial for real-time trading applications. Here's what's happening and why:
How Real-Time OHLCV Updates Work
When you subscribe to OHLCV data via WebSocket, you receive updates in two scenarios:
- Every 5 seconds during active trading (even if the time period hasn't closed)
- When the period officially closes (e.g., at the end of each minute for 1-minute candles)
For more details on handling real-time market data, see our guide on Real-Time Crypto Data: Why Multiple Updates Beat Single Responses and our API Rate Limits and Quotas guide.
Example: 1-Minute OHLCV Updates
1// 09:30:05 - First update (5 seconds into the minute)
2{
3 "time_period_start": "2024-01-15T09:30:00.000Z",
4 "time_period_end": "2024-01-15T09:31:00.000Z",
5 "price_open": 42150.50,
6 "price_close": 42155.30, // Current price
7 "price_high": 42160.00,
8 "price_low": 42148.20,
9 "volume_traded": 12.5
10}
11
12// 09:30:10 - Second update (10 seconds in)
13{
14 "time_period_start": "2024-01-15T09:30:00.000Z",
15 "time_period_end": "2024-01-15T09:31:00.000Z",
16 "price_open": 42150.50, // Same open
17 "price_close": 42158.75, // Updated current price
18 "price_high": 42162.10, // New high
19 "price_low": 42148.20, // Same low
20 "volume_traded": 18.3 // Increased volume
21}
22
23// Continue every 5 seconds...
24// 09:31:00 - Final update (period complete)
Why This Approach Benefits Your Trading Systems
1. Faster Signal Detection
1// Instead of waiting 60 seconds for confirmation:
2if (currentCandle.price_close > resistance && currentCandle.volume_traded > avgVolume) {
3 // Trigger breakout alert within 5-10 seconds, not 60 seconds
4 sendAlert("Potential breakout detected");
5}
2. Real-Time Risk Management
1// Monitor position exposure in real-time
2if (currentCandle.price_close < stopLoss) {
3 // Exit position immediately, don't wait for candle completion
4 executeStopLoss();
5}
3. Dynamic Strategy Adjustments
1// Adjust strategy parameters based on evolving candle
2if (currentCandle.volume_traded > dailyAverage * 3) {
3 // Switch to high-volume strategy mid-candle
4 adjustTradingStrategy("high_volume_mode");
5}
How to Handle Multiple Updates in Your Code
Option 1: Always Use Latest Update (Most Common)
1let liveCandles = {};
2
3websocket.onmessage = function(event) {
4 const ohlcv = JSON.parse(event.data);
5
6 // Simply replace with latest data
7 liveCandles[ohlcv.symbol_id] = ohlcv;
8
9 // Update charts/indicators immediately
10 updateChart(ohlcv.symbol_id, ohlcv);
11};
Option 2: Track Candle Evolution
1let candleHistory = {};
2
3websocket.onmessage = function(event) {
4 const ohlcv = JSON.parse(event.data);
5 const key = `${ohlcv.symbol_id}_${ohlcv.time_period_start}`;
6
7 if (!candleHistory[key]) {
8 candleHistory[key] = [];
9 }
10
11 candleHistory[key].push({
12 timestamp: new Date(),
13 data: ohlcv
14 });
15
16 // Analyze how the candle developed over time
17 analyzeCandleEvolution(key);
18};
Option 3: Only Process Completed Candles
1websocket.onmessage = function(event) {
2 const ohlcv = JSON.parse(event.data);
3 const now = new Date();
4 const periodEnd = new Date(ohlcv.time_period_end);
5
6 // Only process if period is complete
7 if (periodEnd <= now) {
8 processCompletedCandle(ohlcv);
9 } else {
10 // Store as preliminary data
11 storePreliminaryCandle(ohlcv);
12 }
13};
Real Trader Feedback
As one quantitative trader explained: "At first, I thought the multiple updates were a bug. Then I realized I was getting market intelligence 50+ seconds faster than my competitors using end-of-period data. It's a massive edge for momentum strategies."
Alternative: Use REST API for Final Data Only
If you prefer single, completed OHLCV responses, use our REST API:
1# Get only completed candles
2GET /v1/ohlcv/BINANCE_SPOT_BTC_USDT/latest?period_id=1MIN
Key Takeaway
Multiple OHLCV updates aren't a limitation - they're a competitive advantage. You're seeing market developments in near real-time while others wait for period completion. This 5-50 second head start can be the difference between catching a breakout and missing it entirely.
For more details on handling real-time market data, see our guide on Real-Time Crypto Data: Why Multiple Updates Beat Single Responses.
Daily rollover: When OHLCV data resets
The time at which OHLCV data transitions from one day to the next can vary depending on the exchange and the specific trading pair you're querying. This affects when daily candles are closed and when a new trading day’s data begins.
To ensure you're aligning your strategies or data processing correctly, we recommend checking:
- The CoinAPI documentation for known cutoff rules
- Or contacting our support team for symbol-specific timing
This is especially important for daily and intraday analysis, where candle boundaries can impact time-sensitive signals and indicators.
Understanding the limitations of OHLCV Data
While OHLCV (Open, High, Low, Close, Volume) data is a staple in financial analysis, it's important to recognize its limitations, especially for high-frequency trading and detailed market analysis.
For high-frequency trading needs, explore our Tick-by-Tick Data and Order Book guide and Level 1 vs Level 2 vs Level 3 Market Data.
Lack of granularity
OHLCV data aggregates trading activity over specified intervals, which can obscure the nuances of price movements within those periods. For instance, two different price paths within a 5-minute interval could result in identical OHLCV representations, potentially masking significant intraperiod volatility.
Absence of order book dynamics
OHLCV data doesn't capture the depth of the market, such as bid-ask spreads or order book imbalances. These elements are crucial for understanding market liquidity and for executing trades with minimal slippage.
Potential for misinterpretation
Relying solely on OHLCV data can lead to misinterpretations. For example, a candle with a long wick might suggest volatility, but without context from tick data or order book information, it's challenging to ascertain the underlying cause.
Not all OHLCV data is created equal
Unlike some providers that forward-fill missing candles or introduce look-ahead bias, CoinAPI’s OHLCV data is event-driven - no trades, no candles, ensuring your backtests reflect reality, not fiction.”
Pain points we solve at CoinAPI
Algorithmic traders, data scientists, and fintech developers often face recurring challenges when working with OHLCV data, especially when trying to merge historical and real-time feeds. Here's how CoinAPI tackles the most common problems:
⚠️ Inconsistent data across timeframes
The Problem: Different sources structure historical and real-time data differently, leading to backtests that don’t match live performance.
âś… Our Fix: CoinAPI delivers both historical and real-time OHLCV data in a unified, normalized schema across 370+ exchanges. You can align past and present data without remapping symbols or adjusting formats.
⚠️ Latency and feed reliability
The Problem: Trading strategies are only as good as the freshness of their data. Delayed or throttled updates kill alpha.
✅ Our Fix: CoinAPI’s WebSocket feeds offer real-time OHLCV data with <100ms median latency, so your systems react faster, whether you're running an HFT engine or dashboard alerts.
⚠️ Missing or incomplete candles
The Problem: Some APIs fill gaps with fake data. Others leave you guessing when there’s no trade activity, which can corrupt strategies.
✅ Our Fix: We only emit candles when actual trades occur. No trades? No candle. This preserves data integrity, and we clearly mark time intervals with no activity so you always know what’s real.
⚠️ Symbol and exchange fragmentation
The Problem: BTCUSD, BTC-USDT, XBT/USD - different venues, different symbols, different headaches.
✅ Our Fix: We maintain a cross-exchange symbol map and a consistent identifier system. Whether you’re building across Binance, Coinbase, or Kraken, you get clean, unified symbols every time.
⚠️ Integration overhead
The Problem: Integrating multiple data sources takes time, introduces bugs, and eats into dev hours.
âś… Our Fix: CoinAPI is your single point of integration for all OHLCV data. REST, WebSocket, and flat file formats, all production-ready and backed by SLAs.
⚠️ Inefficient data retrieval and processing
The Problem: Traders often face difficulties in efficiently retrieving and processing large datasets of OHLCV data, leading to increased latency and potential bottlenecks in data pipelines.
âś… Our Solution: CoinAPI provides optimized data retrieval mechanisms, including bulk downloads and efficient APIs, ensuring rapid access to large volumes of OHLCV data. This facilitates faster data processing and reduces latency in trading systems.
⚠️ Inconsistent data formats across sources
The Problem: Different data providers may offer OHLCV data in varying formats, requiring additional effort to normalize and integrate data from multiple sources.
âś… Our Solution: CoinAPI offers a unified data format across all supported exchanges, simplifying the integration process and ensuring consistency in data representation. This uniformity reduces the overhead associated with data normalization.
⚠️ Challenges in real-time data integration
The Problem: Integrating real-time OHLCV data with historical datasets can be complex, often necessitating custom solutions to handle streaming data effectively.
âś… Our Solution: CoinAPI's WebSocket and RESTful APIs are designed to seamlessly integrate real-time and historical OHLCV data, providing a cohesive data stream that supports both backtesting and live trading strategies.
⚠️ High storage and computational costs
The Problem: Storing and processing large volumes of OHLCV data can be resource-intensive, leading to increased operational costs.
âś… Our Solution: CoinAPI offers data compression and efficient storage solutions, enabling users to manage large datasets without incurring prohibitive storage and computational expenses.
Learn more about our exchange coverage in Which Exchanges Does CoinAPI Cover.
Enhancing OHLCV analysis with CoinAPI
Recognizing these limitations, CoinAPI offers solutions to provide a more comprehensive market view:
- Tick-Level Data: Access to granular trade data allows for detailed analysis of price movements within OHLCV intervals.
- Order Book Snapshots: Real-time and historical order book data provide insights into market depth and liquidity.
- Normalized Data Across Exchanges: CoinAPI ensures consistency in data formatting and symbol representation, facilitating accurate cross-exchange analysis.
By integrating these data sources, traders and analysts can overcome the inherent limitations of OHLCV data, leading to more informed decision-making and strategy development.
What we hear from quant teams about OHLCV data
In conversations with quant desks, hedge funds, and crypto infrastructure teams, one message is consistent:
High-quality OHLCV data is essential, and harder to find than it should be.
While free APIs may be good enough for hobby projects, professionals quickly run into issues like:
- Inconsistent formats across venues
- Missing or backfilled candles
- Limited historical depth
- Poor documentation or lack of support
The feedback is clear:
Reliable historical data is worth paying for, especially when the stakes include performance, compliance, and risk.
Quant teams choose CoinAPI because we provide:
âś… Clean, normalized data across 370+ exchanges
âś… Accurate timestamping and no artificial candles
âś… Real support and transparent licensing, no surprises
If you're running serious backtests or production systems, you need data that won’t lie to your models. That’s exactly what CoinAPI delivers.
What Traders say: OHLCV vs. Tick-by-Tick data storage
In trading communities, practitioners often deliberate on the merits of storing OHLCV data compared to tick-by-tick data. The consensus highlights:
- OHLCV Data: Favoured for its simplicity and lower storage requirements, making it suitable for backtesting and long-term strategy development.
- Tick-by-Tick Data: Provides granular insights necessary for high-frequency trading and detailed market analysis but demands significant storage and processing capabilities.
Traders emphasize the importance of aligning data storage choices with specific trading objectives and resource availability.
Frequently Asked Questions About OHLCV Data
Why do I get multiple OHLCV updates before the candle is complete?
This is by design. CoinAPI sends updates every 5 seconds during active trading to give you real-time market intelligence, not just end-of-period data. This means you can react to breakouts, manage risk, and adjust strategies 50+ seconds faster than waiting for candle completion.
What's the difference between OHLCV and tick data?
OHLCV aggregates trades into time intervals (1-minute, 5-minute, etc.), while tick data shows every individual trade as it happens. Use OHLCV for strategy analysis, backtesting, and chart patterns. Use tick data when you need execution timing, slippage analysis, or high-frequency trading precision.
How do I handle multiple WebSocket OHLCV messages in my code?
You have three main options:
- Use latest update (most common): Simply replace previous data with each new update
- Track candle evolution: Store all updates to analyze how candles develop over time
- Process completed candles only: Check if
time_period_end
has passed before processing
Most traders use the first approach for real-time signals and the third for final strategy confirmations.
Why are some OHLCV candles missing from my data?
CoinAPI only creates candles when actual trades occur. No trades = no candle. This prevents artificial data that could corrupt your backtests. If you see gaps, it means there was genuinely no trading activity during those periods—exactly what happened in the real market.
Can OHLCV data be used for high-frequency trading?
OHLCV has limitations for HFT due to time aggregation. It can miss important microstructure events that happen within each time interval. For HFT, you need tick-by-tick trade data and full order book snapshots to capture every price movement and liquidity change.
How accurate is CoinAPI's volume data in OHLCV?
Our volume data includes all market types (spot, futures, perpetuals, options) from each exchange, giving you a complete picture of trading activity. This often results in higher volume figures than providers who only report spot trading, but it's more accurate for understanding total market interest.
What time zones are used for OHLCV data?
All CoinAPI timestamps use UTC. Daily candle boundaries may vary by exchange, so check our documentation for specific cutoff times if you're doing daily analysis. This is especially important for strategies that depend on precise day-start timing.
Should I use 1-minute or 5-minute OHLCV for backtesting?
This depends on your strategy timeframe:
- 1-minute: Better for intraday strategies, scalping, or detecting quick momentum shifts
- 5-minute or higher: More suitable for swing trading, reduces noise, and requires less storage
Most quantitative teams start with 1-minute data for flexibility, then aggregate to longer timeframes as needed.
How much storage space does OHLCV data require?
OHLCV data is very storage-efficient compared to tick data. One year of 1-minute OHLCV for a major pair like BTC/USDT typically requires only a few MB, while the same period in tick data could be several GB. This makes OHLCV ideal for long-term historical analysis.
Can I backfill missing OHLCV data from CoinAPI?
Yes, you can retrieve historical OHLCV data back to 2011 for major exchanges. Use our REST API with time_start
and time_end
parameters, or download bulk historical data via our Flat Files service for large datasets.
What's the latency for real-time OHLCV updates?
CoinAPI's WebSocket feeds deliver OHLCV updates with <100ms median latency. Updates are sent every 5 seconds during active trading and immediately when periods close, ensuring you get market information faster than end-of-period-only feeds.
How do I know if an OHLCV candle is final or still updating?
Compare the time_period_end
with the current time. If the current time is past the period end, the candle is final. If not, expect more updates. You can also implement logic to only process candles after their periods have officially closed.
OHLCV vs. Order book data: What's the difference?

Bottom Line:
Use OHLCV for strategic analysis and historical modeling.
Use Order Book data when execution timing, liquidity, or micro-trade behavior matters.
Can OHLCV data generate alpha?
Among quant teams, the question often arises:
Can OHLCV data alone drive alpha-generating strategies?
While opinions vary, our conversations with portfolio managers, quant researchers, and ML engineers reveal several key insights:
Simplicity vs. Complexity
OHLCV is a powerful foundation, but on its own, it may not always be enough. Many teams layer additional inputs like tick data, sentiment, or order book depth to enhance predictive power and stay ahead of the market.
Pattern recognition still matters
When used correctly, OHLCV data enables the detection of repeatable patterns: momentum shifts, reversals, and breakouts. Techniques like candlestick formations, volume-based filters, or moving averages continue to drive viable edge, especially in mid- and low-liquidity assets.
Fuel for machine learning
We see growing adoption of ML pipelines fed by OHLCV features. Structured correctly, historical OHLCV data helps uncover signals that aren't easily seen with rules-based logic, including volatility clustering, price reaction lags, and non-linear correlations.
Clean data is non-negotiable
Across the board, one message is clear: data quality determines signal quality. Inaccurate candles, inconsistent timestamps, or missing volume destroy strategy integrity. That’s why serious teams use trusted sources like CoinAPI to avoid second-guessing their foundation.
Not all OHLCV data is created equal
Many APIs offer OHLCV, but not all deliver the same quality. What can go wrong?
- Missing candles due to exchange outages
- Inconsistent timestamps
- Poorly normalized symbols
- Low-resolution volume data
CoinAPI solves this with clean, consistent OHLCV across 370+ exchanges, available via REST, WebSocket, and flat file formats. Whether you need 1-minute bars from Binance or daily candles from Coinbase, CoinAPI gives you data you can trust, out of the box.
Ready to Build with OHLCV?
If you're a trader, analyst, or developer, understanding OHLCV isn't optional. It's essential.
The quality of your insights starts with the quality of your data. Don’t just chart the market. Build with data you can trust.
👉 Start your integration
or download the sample OHLCV now