Original topic illustration: ChainView BTC866 original topic diagram · ChainView BTC866 Editorial · CC BY 4.0
Candles summarise observed trades
An OHLC candle usually records the first, highest, lowest, and last observed trades within a defined interval. It does not describe every executable quote, the spread throughout the interval, or the price available for a large order. Identify the venue, pair, instrument, and price type first: a spot-trade series is different from a derivative index or mark-price series. Volume may be measured in base units, quote units, or contracts. Keep those units explicit. Also establish whether the timestamp denotes the start or end of the interval and which boundary includes a trade exactly on the hour. These details affect returns and signals even when two charts initially look similar.
Choose a day boundary deliberately
A continuously traded market has no single universal local closing time. A UTC daily candle includes a different set of trades from a New York, Hong Kong, or Seoul calendar-day candle, so its opening price, closing price, range, and daily return can differ legitimately. Daylight-saving changes make a permanent fixed offset unsuitable for some local calendars. Preserve the original UTC timestamp and apply a named time zone using a tool that understands its historical rules. Before calling one source inaccurate, align the boundaries and completed intervals. A chart shared with overseas readers should display its time zone and observation date, because an image stripped of that context can suggest a false disagreement about the same market.
Missing intervals need classification
A missing candle can mean that no trades occurred, that an API page was omitted, that a collection job failed, or that the venue was unavailable. These explanations are not interchangeable. Filling a missing price with zero manufactures an extreme return. Carrying forward the previous close assumes no observed change and must be labelled as an analytical or presentation choice. Build a complete interval index while retaining a missing-reason field. Do not automatically set volume to zero when the cause is unknown. Inspect pagination limits, sort order, inclusive boundaries, and whether the newest candle remains unfinished. Overlapping queries should be deduplicated using stable interval and instrument identifiers so that repeated responses do not inflate volume.
Resample without changing the meaning
To combine minute candles into an hour, use the earliest valid open, latest valid close, maximum high, and minimum low, while summing volume only when units agree and intervals do not overlap. Mark an aggregate incomplete if constituent data is missing. If fifteen of sixty minutes are absent, the recorded high and low describe observed data rather than a verified full-hour range. Keep outliers in the raw archive and document any exclusion rule. A sharp trade can be real, erroneous, or later corrected by the venue; deleting it merely because it looks unattractive creates an undocumented revision. Comparing cleaned and raw series is often more informative than presenting a single apparently perfect curve.
Make the chart reproducible
Archive raw responses, query ranges, endpoint versions, time-zone rules, resampling logic, and gap counts. State whether the last displayed candle is complete. An unfinished candle should not be compared with complete historical intervals without a warning. If aggregating venues, explain weights, conversion rates, downtime treatment, and pair coverage; similar symbols do not automatically identify the same asset. Backtests also require controls against future information entering an earlier signal, including later data revisions. Save the dataset version used for each result. The conclusion should describe an observation under a specified method rather than claim one universal market price. That approach makes corrections understandable and gives readers enough information to distinguish a genuine market difference from a calendar or collection artefact.
Preserve the completion flag and retrieval time for each interval. Later differences can arise from new trades in an unfinished candle, venue corrections, or local processing. A version comparison should classify the reason before replacing a dataset. This makes a backtest revision understandable and prevents an apparent strategy improvement from being caused only by changed historical inputs.



