What this is
Every number below was recorded on accounts we opened ourselves. An hourly job connects to MetaTrader 5 and stores the raw bid/ask for each pair; the spread is (ask − bid) ÷ pip. Frozen quotes (stale ticks) are discarded, and quotes measured on demo accounts are never published here — a demo feed says nothing about how an order actually fills. This report covers HF Markets (SV) Ltd. / OANDA Corporation / XM. Window: 2026-08-16 → 2026-08-23 · 227,062 samples.
Measured spread
The median is what the spread looked like most of the time. The 75th percentile is an ordinary bad moment — that is the number that decides whether a short-term strategy survives. n is how many hourly samples sit behind the row.
HF Markets (SV) Ltd. (HFMarketsGlobal-Live8)
| Pair | Median | 75th pct | Max | n |
|---|---|---|---|---|
| AUDCADr | 2.10 | 2.30 | 14.30 | 1398 |
| AUDCHFr | 2.00 | 2.10 | 14.30 | 1398 |
| AUDJPYr | 1.90 | 2.20 | 14.30 | 1398 |
| AUDNZDr | 2.40 | 2.70 | 28.60 | 1398 |
stale 4% · 92,373 samples
OANDA Corporation (OANDA-Japan MT5 Live)
| Pair | Median | 75th pct | Max | n |
|---|---|---|---|---|
| USDJPY | 0.40 | 0.50 | 20.00 | 1398 |
| EURUSD | 0.50 | 0.50 | 20.00 | 1398 |
| GBPUSD | 0.90 | 1.00 | 32.10 | 1398 |
| EURJPY | 0.70 | 0.90 | 24.80 | 1398 |
| GBPJPY | 1.20 | 1.50 | 50.00 | 1398 |
| AUDUSD | 0.90 | 0.90 | 17.50 | 1398 |
| AUDCAD | 1.10 | 1.20 | 35.00 | 1398 |
| AUDCHF | 2.50 | 2.50 | 23.30 | 1398 |
| AUDJPY | 0.60 | 0.70 | 25.00 | 1398 |
| AUDNZD | 1.60 | 1.80 | 35.00 | 1398 |
stale 0% · 55,897 samples
XM (XMTrading-MT5 2)
| Pair | Median | 75th pct | Max | n |
|---|---|---|---|---|
| USDJPY | 2.40 | 2.50 | 21.90 | 1518 |
| EURUSD | 1.90 | 2.00 | 12.00 | 1518 |
| GBPUSD | 2.40 | 2.50 | 16.70 | 1518 |
| EURJPY | 3.10 | 3.30 | 23.40 | 1518 |
| GBPJPY | 3.70 | 4.10 | 27.90 | 1517 |
| AUDUSD | 2.40 | 2.40 | 16.50 | 1518 |
| AUDCAD | 3.70 | 3.80 | 21.00 | 1398 |
| AUDCHF | 3.50 | 3.60 | 14.40 | 1518 |
| AUDJPY | 3.50 | 3.60 | 19.70 | 1518 |
| AUDNZD | 4.10 | 4.30 | 27.50 | 1397 |
stale 0% · 78,792 samples
The hour of day moves the cost more than the headline number
Same account, same pair, different hours (JST). Only hours with at least 3 samples are eligible, so a single outlier cannot create a headline.
HF Markets (SV) Ltd.
| Pair | Cheapest hour (JST) | Median | Widest hour (JST) | Median |
|---|---|---|---|---|
| AUDCADr | 00:00 | 1.90 | 06:00 | 9.20 |
| AUDCHFr | 00:00 | 1.80 | 06:00 | 9.50 |
| AUDJPYr | 00:00 | 1.60 | 06:00 | 11.00 |
| AUDNZDr | 00:00 | 2.20 | 06:00 | 20.30 |
OANDA Corporation
| Pair | Cheapest hour (JST) | Median | Widest hour (JST) | Median |
|---|---|---|---|---|
| USDJPY | 00:00 | 0.40 | 06:00 | 7.20 |
| EURUSD | 00:00 | 0.50 | 06:00 | 3.70 |
| GBPUSD | 00:00 | 0.80 | 06:00 | 12.70 |
| EURJPY | 01:00 | 0.60 | 06:00 | 9.10 |
| GBPJPY | 00:00 | 1.00 | 06:00 | 20.60 |
| AUDUSD | 00:00 | 0.90 | 06:00 | 6.30 |
| AUDCAD | 00:00 | 1.10 | 06:00 | 9.40 |
| AUDCHF | 00:00 | 2.50 | 06:00 | 7.90 |
| AUDJPY | 00:00 | 0.60 | 06:00 | 11.00 |
| AUDNZD | 01:00 | 1.50 | 06:00 | 12.30 |
XM
| Pair | Cheapest hour (JST) | Median | Widest hour (JST) | Median |
|---|---|---|---|---|
| USDJPY | 00:00 | 2.30 | 06:00 | 9.30 |
| EURUSD | 00:00 | 1.90 | 06:00 | 4.50 |
| GBPUSD | 00:00 | 2.30 | 06:00 | 11.70 |
| EURJPY | 04:00 | 3.00 | 06:00 | 12.90 |
| GBPJPY | 00:00 | 3.50 | 06:00 | 22.20 |
| AUDUSD | 00:00 | 2.30 | 06:00 | 8.00 |
| AUDCAD | 02:00 | 3.50 | 06:00 | 13.00 |
| AUDCHF | 00:00 | 3.40 | 06:00 | 14.40 |
| AUDJPY | 00:00 | 3.40 | 06:00 | 13.80 |
| AUDNZD | 01:00 | 4.00 | 06:00 | 19.30 |
Published figure vs what we measured (indicative)
The published column is the broker's own number, captured on 2026-05-11. We cannot confirm from the terminal which account tier our login sits on, so read the difference as indicative — a prompt to check your own tier, not a like-for-like verdict.
| Pair | Published | Measured median | Difference |
|---|---|---|---|
| XM USDJPY | 1.70 (Standard) | 2.40 | +0.70 |
| XM EURUSD | 1.60 (Standard) | 1.90 | +0.30 |
| XM GBPJPY | 3.00 (Standard) | 3.70 | +0.70 |
How to check this before you open an account
- Open the account you are considering and log bid/ask every hour for a week. One screenshot proves nothing; a distribution does.
- Compare at the hours you actually trade. A broker that is cheapest at 16:00 can be the most expensive at 07:00.
- Place one minimum-lot order and compare the margin the API predicts with the margin actually locked. They do not always agree.
- Read the stops level before you design a stop-loss: it is the minimum distance the broker will accept.
Where the updates go
This report regenerates every week straight from the ledger. Daily measurements and our live trade record are published on Discord, which you enter by verifying a broker account → join here · all links
Method and limits
- Source: our own MT5 accounts, sampled hourly (227,062 rows in this window).
- Stale ticks (frozen feed) are excluded; the exclusion rate is shown per broker below.
- Everything in these tables was measured on accounts we fund and run ourselves. Data measured on demo accounts is aggregated separately and never merged in.
- Cross-broker comparisons are published only when the accounts are on comparable terms; in weeks when they are not, we say so instead of publishing one.
- A spread you see is not a spread you get: your fill depends on tier, leverage, region and volatility at that second.
- Affiliate disclosure: we earn a commission if you open a broker account through our links. That relationship cannot change a measured number, but you should know it exists.
These are measurements of specific accounts in one time window, published for research and education. Nothing here is investment advice. Trading forex/CFDs is high risk and you can lose money.
Related articles
Measured broker spreads 2026-W34 — logged hourly from our own MT5 accounts
Not a copy of published spread tables: 17,842 hourly bid/ask samples taken on our own accounts (HF Markets (SV) Ltd. / OANDA Corporation / XM) over 2026-08-09 → 2026-08-16, broken down by pair and by hour of day.
Measured broker spreads 2026-W33 — logged hourly from our own MT5 accounts
Not a copy of published spread tables: 1,914 hourly bid/ask samples taken on our own accounts (XM) over 2026-08-02 → 2026-08-09, broken down by pair and by hour of day.
Measured broker spreads 2026-W32 — logged hourly from our own MT5 accounts
Not a copy of published spread tables: 1,919 hourly bid/ask samples taken on our own accounts (XM) over 2026-07-26 → 2026-08-02, broken down by pair and by hour of day.
