Skip to content

Research notes

Trade data vs candles: what crypto OHLCV leaves out

Two eight-trade tapes share OHLCV, volume and VWAP, yet trigger a trailing rule at different times. A dependency worksheet shows which evidence each decision needs.

Two ivory cassettes release differently folded paper ribbons with lime tabs on a black tabletop.
Illustration for research notes; examples in this article are educational.

Crypto tick data records individual market events, while OHLCV candles summarize an interval's open, high, low, close and volume. For a trade tape, those events are executed trades; a quote feed describes bids and asks instead. Candles lose the order and timing of intermediate events, so identical candles can produce different trailing-stop triggers. Trade records recover price chronology, but they do not prove how your own order would fill.

Choose data by the decision you need to reconstruct. A rule evaluated only on finalized hourly closes has different evidence requirements from a trailing rule updated after every trade. A file labeled “tick data” is useful only after its record type, timestamps, coverage and aggregation policy are understood.

What a candle preserves

For a trade-based candle, open is the first trade price in the bucket, close is the last, and high and low are its price extremes. Coinbase Exchange documents those definitions alongside interval trading volume in its product-candle response.

Those values describe the interval without retaining every event. They do not say when the high occurred, how often price crossed a threshold, or how much of the volume arrived before a rule became active. Drawing a continuous line through open, high, low and close supplies a path assumption; it does not retrieve the missing sequence.

Some candle formats preserve more than the five OHLCV values. Binance Spot's kline schema includes quote asset volume, trade count and taker-buy volumes. These fields answer useful aggregate questions, but they still do not restore the ordered trade tape.

Conversely, a trade tape is not a quote history. Binance Spot documents its @trade stream with a trade ID, price, quantity, trade time and separate event time. That is a specific record contract, not evidence that every product sold as tick data has the same structure. Inspect the source's schema before treating a row as one execution. Binance Spot trade-stream documentation

Two trade tapes with exactly the same candle

Consider this original hypothetical example for an invented spot asset quoted in USDT. Each event trades one base unit. The bucket starts at 10:00:00 UTC and ends just before 10:01:00. Every event is shown; there are no hidden trades in the exercise.

Seconds after 10:00:00Tape A trade priceTape B trade priceQuantity in either tape
01001001
8104981
161021011
24981021
321011041
401051051
481031031
591021021

Both produce open 100, high 105, low 98, close 102 and base volume 8. They also have the same eight price-quantity pairs, rearranged between the first and last events.

Total quote volume is 815 USDT in each tape: add each price multiplied by its one-unit quantity. The interval volume-weighted average price is therefore 815 / 8 = 101.875 USDT. Trade count is eight in both. Even the volume traded at or above 103 is identical: three units at 103, 104 and 105.

Consequently, adding VWAP or trade count to this candle still cannot distinguish the paths. The aggregation maps several possible histories to one summary. There is no unique inverse calculation that recovers the tape from those totals.

A trailing rule produces different instructions

Now apply this hypothetical trailing rule to a long position that already exists before the bucket begins. Its activation and trigger inputs are defined for this exercise:

  1. Start with trailing inactive. A trade at or above 104 activates it.
  2. Once active, retain the highest observed trade since activation. The trailing threshold is that high minus 3 USDT.
  3. A subsequent trade at or below the threshold emits one stop-market exit instruction. Stop processing the rule after that instruction.

In Tape A, the trade at eight seconds activates trailing with a high of 104 and threshold of 101. The 102 print at 16 seconds leaves the rule active. At 24 seconds, the observed price is 98, below 101, so the rule emits its exit instruction. The later 105 print cannot raise the threshold of a rule that has already stopped.

In Tape B, the low of 98 arrives while trailing is inactive. Activation happens at 32 seconds at 104, initially setting the threshold to 101. The 105 print at 40 seconds raises it to 102. Price 103 at 48 seconds stays above it; price 102 at 59 seconds triggers the instruction.

Result under the stated ruleTape ATape B
Activation time10:00:0810:00:32
Threshold at exit instruction101102
Exit-instruction time10:00:2410:00:59
Trade price that triggered it98102

Notice the distinction between Tape A's threshold of 101 and observed trigger price of 98. A threshold crossing does not guarantee an execution at the threshold. This fixture does not calculate fills, profit or slippage. It demonstrates that the same candle can conceal different rule states and instructions.

Smaller candles can sometimes separate the relevant events into different intervals. The intrabar-data guide explains that refinement. Here, the complete tapes prove why any remaining aggregation can matter: sequence becomes part of the rule's input.

Match the dataset to the question

Write down what the rule needs before downloading more history. The following worksheet is a starting point, with the exact venue and instrument supplied for every row.

Question or ruleEvidence to retainWhat remains unresolved
Signal evaluated on completed candle closesFinalized candles, interval definition and availability cutoffActual execution after the signal
Trailing activation or consecutive-trade conditionOrdered trade records and rule activation stateQuotes, latency and hypothetical fills
Final interval trade VWAPCompatible base and quote totals, or individual price-quantity pairsSequence of volume through the interval
Spread when an order is submittedBid and ask observations aligned with order arrivalDepth beyond those quotes and later changes
Fill of an order you actually submittedPrivate order and execution reportsOutcome of an alternative hypothetical order
Fill of a hypothetical resting limit orderSuitable book history plus a declared queue and arrival modelCounterfactual effects that public observations cannot verify

For the synthetic tapes, a final candle is enough to calculate the open-to-close price change and interval range. The trailing rule also needs the trade sequence to reconstruct its states.

Different research questions require different source types altogether. Comparing aggregate funding rates requires rate definitions and compatible contract and timing assumptions. Interpreting Bitcoin dominance requires the market-cap numerator and denominator. A more detailed price tape cannot substitute for either methodology.

Validate a tape by rebuilding its summaries

Before replaying a strategy, select a small interval and perform a reproducible reconciliation:

  1. Identify the venue, instrument, spot or derivative market, event type, timestamp units and volume units. Base units, quote units and contract counts are not interchangeable.
  2. Keep raw records and source identifiers. Deduplicate using the documented scope of an identifier, rather than treating a timestamp alone as a unique key. Several legitimate trades can share a timestamp.
  3. Establish ordering from the source contract. Preserve a documented sequence or tie-break field where available. Do not invent cross-venue chronology by sorting unrelated numeric trade IDs.
  4. Apply the same bucket boundaries and inclusion rules as the reference candle. Recompute first price, maximum, minimum, last price, base volume, quote volume and count where the schemas permit comparison.
  5. Investigate differences before using the tape. Check missing pages, duplicate reconnect deliveries, incorrect units, interval alignment and provider filtering. Keep unresolved intervals visible.

The candle-data quality audit supplies a companion method for duplicates, gaps and conflicting records. For a tape, reconciliation adds another question: does the stream you collected explain the published summary under matching definitions?

Matching totals check the aggregation arithmetic; they do not establish that the sequence is correct. Tapes A and B pass every summary check above. Lost records replaced by other erroneous records could also conceal a defect in aggregate totals. Retain provenance and inspect source continuity as well as arithmetic.

An empty interval needs source-specific treatment. Coinbase Exchange warns that its historical candle data may be incomplete and that intervals without ticks receive no published candle. An absent bucket from that endpoint therefore needs investigation before it is labeled a collection outage or filled with a synthetic flat candle. Coinbase historical-candle limitations

Preserve the clock your decision actually used

A historical trade time and the time your system received that trade answer different questions. Binance's trade-stream schema distinguishes trade time from event time; local receive time is an additional observation your collector must save. A replay ordered by exchange timestamps can reconstruct a different information flow from one driven by the messages actually received.

Keep signal evaluation, order submission, acknowledgment and execution as separate events. A rule cannot act on a trade it has not received, and a completed candle downloaded later cannot be used before its information was available. The look-ahead bias guide explains that availability boundary.

Finally, do not turn improved chronology into a fill claim. Public prints show trades that occurred between other participants. They omit the complete circumstances of your hypothetical order, including arrival, available opposing quantity and priority. Use an explicit execution model and examine order-book depth and slippage when the question moves from a trigger to an executable order.

For the worked fixture, the defensible result is precise: identical summaries, activation at different times, and exit instructions at 24 versus 59 seconds. Before accepting a backtest, name the comparable state transition in your own rule and verify that the saved data can establish it.

Keep the context with the example.

Each worked example is illustrative, with its sources and assumptions in the article. Read our editorial standards for authorship, verification and corrections.