Forex Data Quality Checklist: What to Look For
Proof path
Before trusting any backtest idea from this article, start from the historical forex data hub, then inspect a sample file and the current coverage report. The paid bundle path stays proof-first: sample, coverage, then order help if the data fits.
Most traders spend more time looking for the perfect indicator than checking whether their historical data is reliable. That is backwards. If the data is wrong, the strategy result is already compromised.
A good forex data quality process does not promise perfection. It gives you evidence: what source was used, what timestamps are present, what gaps are known, what rows failed validation, and what files are safe to load.
1. Missing Bars and Source Gaps
Check M1 data for missing minutes during normal market hours. The market closes on weekends, holidays create special cases, and some sources have session breaks. The key is not to pretend every missing minute is an error; the key is to know which missing intervals are expected, documented, or still unresolved.
2. Duplicate Timestamps
Duplicate timestamps can double-count a candle or create ambiguous state in a backtester. Every symbol and timeframe should have a clear uniqueness rule for timestamp plus symbol.
3. Invalid OHLC Rows
For every candle, high should be at least the maximum of open and close, low should be no greater than the minimum of open and close, and high should not be below low. Rows that violate these checks need to be removed, corrected from source, or quarantined.
4. Price Spikes and Bad Prints
A feed can record a price that does not belong in the observed market sequence. Outlier detection should flag suspicious candles for review, but it should not blindly delete real volatile events. Brexit, central-bank shocks, flash moves, and thin-liquidity sessions can look extreme while still being real.
5. Timezone and Session Alignment
Timezone assumptions change daily and weekly candles. Intraday files should make the timestamp basis explicit. Derived higher timeframes should state how the bars are aggregated and what daily close convention is used.
6. Format and Loadability
A clean dataset should load without custom parsing surprises. For Python workflows, Parquet is a strong delivery format because schema, compression, and columnar reads are practical for larger research files.
Summary Checklist
- Are source-observed minutes distinguishable from missing intervals?
- Are duplicate timestamps reported?
- Do OHLC rows pass basic candle validity checks?
- Are suspicious price spikes flagged without deleting real events blindly?
- Is the timestamp basis explicit and consistent?
- Can the files load directly in your research stack?
- Does the release include coverage reporting?
HistoricalFX is built around this checklist: source-observed OHLCV files, Parquet delivery, coverage reporting, known-gap visibility, and free samples buyers can inspect before paying. The goal is not to hide limitations. The goal is to make the limitations visible enough that your backtest starts from known facts.
For a concrete example of the checklist in action, review the sample forex data audit report. It shows a deliberately flawed EUR/USD M1 file being flagged for duplicate timestamps, invalid OHLC rows, out-of-order timestamps, non-positive prices, and missing bars.
Related Articles
Inspect the dataset before you buy
Start with the historical forex data hub, then the free EUR/USD sample and release coverage. If the schema and proof layer fit your workflow, the major-pair bundle is the practical first paid download.