← FXAbsolute Question

Is Free Forex Data Accurate?

Published 2026-08-17 · Updated 2026-08-28 · FXAbsolute

Short answer: yes for most strategies, no for scalping — and the boundary between those is measurable rather than a matter of opinion. Free data fails in three specific ways, and each one has been quantified below against 1,911,141 EURUSD one-minute bars so you can judge whether any of them affects what you are testing.

Failure mode 1 — missing bars

The most dangerous flaw, because it is silent. A backtest run across a stretch with no data does not error; it simply produces a confident number built on absent history.

Auditing our own archive on 17 August 2026 — 1,911,141 EURUSD one-minute bars spanning 3 January 2021 to 30 April 2026 — found these coverage holes:

Last barNext barDays missingLegitimate?
2023-12-292024-01-013Yes — New Year
2025-06-252025-06-304No
2025-07-022025-07-074No
2025-07-222025-07-285No
2025-09-242025-09-284No
2025-11-202025-11-243No
2026-03-062026-03-125No
Publishing our own flaws rather than a competitor's, because an accuracy audit that exempts the author is worthless. Six of these seven are genuine data loss. The cause is that Dukascopy — the upstream source for most free forex archives — intermittently returns an empty response for a valid window. A pipeline that caches that empty answer bakes a multi-day hole in permanently, and it looks just like a weekend.

How to check any dataset: count bars per trading day and compare against 1,440 for complete M1 coverage; then difference consecutive timestamps and investigate anything longer than a normal weekend. Two minutes of work that catches the worst failure mode in this category.

Failure mode 2 — invisible spread

Almost all free data is mid-price OHLC: the midpoint between bid and ask, with no record of the gap between them. That gap is what you actually pay to trade.

The consequence scales inversely with your target size. A strategy targeting 50 pips against a 1.5-pip spread loses 3% of its edge to costs — noise. A strategy targeting 5 pips against the same spread loses 30%, which is enough to turn a profitable backtest into a losing system, and mid-price data will never show it.

Target sizeSpread as % of targetDoes free data mislead you?
5 pips~30%Yes, decisively
10 pips~15%Yes, materially
25 pips~6%Somewhat
50 pips~3%Barely
100 pips~1.5%No

This is not a flaw free data can fix — it is what "free" usually means. The exception worth naming: BacktestFX provides free tick data with real spreads, in exchange for an account and ads. If spread is your binding constraint and you will not pay, that is the honest recommendation.

Data with the gaps published, not hidden 28.4 million one-minute bars across 15 instruments, free — and the coverage audit above tells you exactly where the holes are.
Start free — no account →

Failure mode 3 — the unresolvable intrabar path

A bar records open, high, low and close, and discards the order in which the high and low occurred. When your stop and target both sit inside one bar's range, the data genuinely cannot say which was hit first.

Measured by aggregating those 1,911,141 one-minute bars into 31,852 hourly bars and counting how often both levels are touched within one bar:

BracketAmbiguous bars% of hourly barsStop hit first, when resolved
±5 pips5,23916.45%50.06%
±10 pips9593.01%50.16%
±20 pips770.24%54.17%
±40 pips30.01%n too small

At a 5-pip bracket, one trade in six is undetermined and resolves essentially at random. At 40 pips, three bars in five years. This is the clearest evidence for the boundary this page opened with — and note it is a property of resolution, not of price: paid one-minute data has exactly the same problem. Full study and reproducible script here.

So: is it accurate enough?

What you are testingIs free data enough?
Learning price action, building screen timeYes — easily
Swing trading, stops over 40 pipsYes
Intraday with 20–40 pip stopsYes, if you check for holes
Prop firm rule rehearsalYes — the rules are what you are testing
Intraday with 10–20 pip stopsMarginal — spread starts to bite
Scalping under 10 pipsNo — all three failure modes apply
Automated systems at high frequencyNo — errors compound per trade

The general principle: free data is accurate enough to train judgement and not accurate enough to validate a thin edge. Most retail traders are doing the former while believing they are doing the latter, which is why this distinction is worth being precise about.

If you are in the top four rows, FXAbsolute gives you 28,412,683 one-minute bars across 15 instruments from 2021 to 2026, free, no account, with the coverage holes published above rather than hidden. If you are in the bottom two, you need real tick data with modelled spread — BacktestFX free, or Forex Tester's Super Data paid — and no free mid-price archive will do, including ours.

Run the audit yourself The gap and ambiguous-bar scripts ship in the repo, and the archive needs no key, account or request cap.
Open the free backtester →

Three checks before trusting any dataset

  1. Count bars per day. A complete M1 trading day is 1,440 bars. Sort ascending and inspect the bottom — days far below that are partial, and zeros inside the trading week are holes.
  2. Difference consecutive timestamps. Anything longer than a normal weekend needs explaining before you backtest across it.
  3. Cross-check one volatile week against a second source. Small differences are normal. Different highs and lows are not, and mean one feed is wrong.

A useful sanity check while you are at it: related pairs should behave like related pairs. Across 1,536 overlapping trading days, EURUSD and GBPUSD daily returns correlate at r = 0.77 and move the same direction 77.72% of the time. If two files disagree sharply on a given day, at least one of them is wrong.

What verifiable actually looks like

"Accurate" is not a property you can take on trust; it is a set of checks someone either ran or did not. Three that are worth demanding of any free source, with FXAbsolute's own answers as a worked example.

1. Is the file identified? A dataset you cannot fingerprint cannot be compared later. The XAUUSD M1 archive used in our published research is stated by SHA-256 (b3472e52…cd63), byte length (37,429,744) and declared bar count (1,871,487). If a future result differs, you can tell whether the data moved.

2. Are the structural invariants checked, or assumed? Ours are asserted on every release by 30 automated tests: no duplicate timestamps, none out of order, none off the minute grid, and no bar where high < max(open, close) or low > min(open, close). Missing minutes are left missing rather than forward-filled, because a filled gap is indistinguishable from real quiet trading once it is in the file.

3. Are the gaps reported? This is the one most sources skip. SPX500 is missing roughly 19% of weekdays in the first half of 2024. A scan across that window that did not say so would hand you clean-looking statistics built on a fifth less data than you asked for — and nothing in the output would hint at it. fxa_session_scan returns the count of empty weekdays alongside every result.

You can run these checks yourself: npx -y fxabsolute-mcp installs the server, and npm run smoke in the repository runs the suite against the live archive.

Frequently asked questions

How do I know if free forex data is accurate?

Demand three things: a fingerprint of the file (a SHA-256 and bar count), structural checks that are actually run (no duplicate, out-of-order or off-grid timestamps, and valid OHLC ordering), and honest gap reporting rather than silent forward-filling. FXAbsolute publishes all three and the test suite that asserts them.

Is missing data a problem in free forex archives?

Often, and usually invisibly. SPX500 is missing about 19% of weekdays in the first half of 2024. A source that forward-fills those minutes produces statistics that look clean and are wrong; one that reports the gap lets you decide whether the sample is usable.

Is free forex data accurate enough for backtesting?

For strategies with stops wider than about 20 pips, yes. For scalping under 10 pips, no — free data is typically mid-price OHLC with no spread, so execution cost is invisible, and at a 5-pip bracket 16.45% of hourly bars cannot even determine whether the target or stop was hit first. Free data trains judgement well and validates thin edges poorly.

What is wrong with free historical forex data?

Three things. Coverage holes, where upstream providers return empty responses that get cached as missing history — an audit of 1,911,141 EURUSD bars found 7 holes of 3 to 5 days across five years. Missing spread, since most free data is mid-price. And unresolvable intrabar paths, which affect paid data at the same resolution equally.

How do I check if my forex data has gaps?

Count bars per trading day and compare against 1,440 for complete one-minute coverage — days far below that are partial. Then difference consecutive timestamps and investigate any gap longer than a normal weekend. Finally, cross-check one volatile week against a second source; different highs and lows mean one feed is wrong.

Is paid forex data more accurate than free?

On spread and tick resolution, yes — paid tick data with bid and ask models execution cost that free mid-price data cannot. On coverage holes, not necessarily, since many paid feeds draw from the same upstream sources. And intrabar ambiguity is a property of resolution rather than price, so paid one-minute data has the identical limitation.

Does free forex data include spread?

Usually not. Most free archives are mid-price OHLC, the midpoint between bid and ask, so trading cost is invisible. The notable free exception is BacktestFX, which provides tick data with real market spreads in exchange for an account and advertising. Dukascopy raw tick data also includes both bid and ask.

Can I trust backtest results built on free data?

Trust them in proportion to your stop distance. With stops over 40 pips, free one-minute data produces results essentially identical to tick data — only 3 ambiguous bars appeared across five years of EURUSD. With targets under 10 pips, spread alone consumes 15 to 30 percent of the edge and the results should not be trusted.

Free data, honestly audited

28.4 million one-minute bars across 15 instruments from 2021 to 2026 — with every coverage hole published so you know what you are testing on.

Open FXAbsolute →