Direct answer
Historical forex data can be obtained from: (1) data vendors that sell time series, (2) brokerage platforms that export or provide access to their price history, (3) public or community datasets collected from earlier sources, and (4) exchange or market data services when the instruments are traded via an exchange. The best choice depends on what you mean by “historical data” (tick vs. bars, bid/ask vs. mid, and the time zone/format you require).
How historical forex data works
“Historical forex data” means recorded price information over time. Common formats include:
- Tick data: individual trades/updates (often most detailed, sometimes incomplete).
- Bar data (OHLC): open, high, low, close for fixed intervals (for example, 1 minute or 1 hour).
- Bid/ask time series: separate bid and ask prices (useful for realistic spread modeling).
- Mid price: an average concept derived from bid and ask (not the same as tradable prices).
When you request or download data, you also choose instrument identifiers (currency pairs) and timestamp rules. Different providers may label the same pair differently (for example, “EUR/USD” vs. “EURUSD”) and may record times in different time zones. Some datasets include spreads explicitly; others only provide derived prices.
Example checks before you use it
To reduce the risk of using inconsistent inputs, independently verify a few basics:
- Time alignment: confirm that timestamps match your intended time zone and interval boundaries.
- Price definition: ensure you know whether values are bid, ask, mid, or OHLC and keep that consistent through your analysis.
- Gaps and continuity: look for missing periods, sudden jumps, or unusually repeated values.
- Symbol consistency: confirm the dataset uses one clear naming scheme for each currency pair.
- Cross-check with a second source: if possible, compare overlapping dates between two providers.
If any of these checks fail, results from backtesting-style computations may reflect data issues rather than market behavior.
Limitations and uncertainty to expect
Historical datasets can differ in completeness and accuracy. Common limitations include missing data segments, revisions (where earlier records are updated), and inconsistent handling of weekends, holidays, or daylight-saving time. Tick-level histories can be especially affected by gaps, while OHLC data may hide the path between bars. Because providers define symbols and timestamps differently, you may need to normalize the dataset before any verification-based comparison.
None of these sources guarantees that data will perfectly match your exact research assumptions. Treat historical data as a measured record with provider-specific rules, then validate it using the checks above before relying on it for any analysis.