3 brokers measured on accounts we hold. The broker that pays for this site is not one of them.
That is the first thing this page says because it is the thing a comparison usually hides. Every figure in the table below came off our own rig: bid and ask sampled every second on 3 MT5 accounts we opened ourselves and never funded, averaged over the hours all 3 of them were recording. Tickmill comes out cheapest at $722 a year on 10 lots a month, $188 less than IC Markets. Our sponsor has no figure here at all — its demo feed quoted a spread that never moved, and we do not print what we could not measure.
EUR/USD · 12.10 19:08–13.10 17:13 UTC
16 hours both-measured, of which 6 inside the liquid session and 3 at the rollover
1 s bid/ask sampling on our own MT5 accounts
Annual cost of ownership, 3 brokers
Spread over the liquid session plus the commission each broker charges, on 10 lots a month. Sorted by cost. The rollover column is printed beside it rather than folded in: on a raw account the three rollover hours are wider than the whole trading day and would drown it.
| Broker | Annual cost derived | Avg spread, 07:00–20:00 UTC our measurement | Spread 21:00–24:00 UTC our measurement | Commission per lot stated by the broker |
|---|---|---|---|---|
Raw · MT5 | $722 spread + commission · Raw · MT5 | 0.00 pips 45 821 samples · 12.10 19:08–13.10 17:13 UTC | 1.12 pips rollover hours · 12.10 19:08–13.10 17:13 UTC | $6.00 fee schedule · 2026-10-13 |
Raw · MT5 | $889 spread + commission · Raw · MT5 | 0.04 pips 25 185 samples · 12.10 19:08–13.10 17:13 UTC | 1.12 pips rollover hours · 12.10 19:08–13.10 17:13 UTC | $7.00 fee schedule · 2026-10-13 |
Raw Spread · MT5 | $910 spread + commission · Raw Spread · MT5 | 0.06 pips 28 851 samples · 12.10 19:08–13.10 17:13 UTC | 0.84 pips rollover hours · 12.10 19:08–13.10 17:13 UTC | $7.00 fee schedule · 2026-10-13 |
Our two FxPro demo accounts quote a spread that does not move: on cTrader EUR/USD sat at exactly 0.4 pips through 255,304 samples of the London session, and on MT5 at exactly 0.2 pips through 123,356. A price that never changes is a fixture inside the demo server, not a market, so we publish no FxPro spread until we measure a funded account.
- We hold an account on both platforms it offers, cTrader and MT5, and sample them the same way as every broker in the table.our measurement
- Commission $3.50 per lot per side, $7.00 round turn — its own contract specification reads 35 USD per million traded, and a 0.01-lot fill on our account was charged accordingly.stated by the broker
Paid placement, and the only one on this site. It buys this card and nothing else: not a row in the table above, not a figure, not a ranking position.
Spread by hour of day, EUR/USD
Brokers quote a best-case daytime figure. This is every hour we recorded on both accounts, including the ones nobody advertises.
hourly mean of 1 s samples · 12.10 19:08–13.10 17:13 UTC · every hour, as measured
How these numbers were taken
Each broker runs on its own MT5 account. Bid and ask are sampled every second, continuously, and stored raw; the published figure is the mean of the hours every account was recording. Nothing is smoothed, nothing is taken from a broker's own marketing page, and an axis none of us measured is not in the table at all.
This link pays us. The figures on this page were produced by the same code and the same window as every other broker here, and where our sponsor loses, it is printed.
Why cost of ownership, and not spread
Almost every broker comparison is a spread table, and a spread table is close to useless for deciding where to trade. 0 of the 3 accounts here carry no commission at all; the rest quote a near-zero raw spread and charge per lot on top. A zero spread with a commission attached can cost more over a year than a wider spread with none, and no amount of staring at the spread column will tell you which case you are in.
So the headline on this site is the whole bill at a stated volume. It is arithmetic rather than opinion, it can be recomputed by anyone who disagrees with the profile, and it puts the two account models on one scale. The components — spread, commission — are printed separately on each broker's page, because a single number nobody can take apart is a number nobody can check.
The second thing this site measures is what a spread table structurally cannot: the hour of the day. An advertised spread is a statement about the London afternoon, and the same account at the same broker is a different product at 22:00 UTC, when the banks step back and the gap between bid and ask on every account here multiplies. That band is measured on its own and printed in its own column, because folding it into a daily average describes a market nobody trades in — and because it is the axis on which the ordering of this table changes.
Where every number comes from
Three classes, printed at the number rather than in a footnote: our own measurement, a third party, or stated by the broker. Brokers are ranked only against others in the same class — a figure we measured and a figure quoted from a price list are not competing in one column — and a figure whose class nobody declared is not printed at all, because an undeclared source silently reads as “we measured this”.
Where a broker's legal entity is confirmed, its page carries the entity, the licence number, the regulator and what that licence obliges the firm to do for a client — with the sentence from the regulator's own rule, not a summary of it. Where it is not confirmed, the page says so: the protections attached to a brand's European arm and its offshore arm are not the same, and attaching one to the other would be the most consequential error on the site.
The commercial part is stated in the same place as everything else. One broker pays a commission on accounts opened through our link, it is labelled sponsored wherever it appears, and it is not in the table: we sampled its two demo platforms the same way as everyone else and the price they quote does not move, so there is no figure of ours to rank. Its card says that in as many words. The disclosure sets out what that buys and what it does not, and the editorial policy sets out who may change a figure.
Coverage, and what a gap in it means
A month of data with a hole in it is not a month of data. Coverage is therefore reported as the share of calendar market hours in the window that actually hold samples — not as the count of hours of the day we have ever seen. The second number sounds like the same thing, can only ever go up, and hid a three-and-a-half-day outage from us for exactly as long as we trusted it: every hour of the day had been covered at some point, so the report read 24 of 24 while one collector had been dead since Tuesday.
What found it was a watchdog that compares the age of the newest row in each series against the market calendar and raises an alarm when a series goes quiet during trading hours. It found that outage within an hour of being switched on. Liveness is freshness of the last row; coverage is the share of the window filled. Confusing the two is how a dead rig reports itself healthy, and we did it for three days.
Gaps are not filled in. There is no interpolation anywhere in this pipeline: a missing hour is missing from the aggregate and missing from the export, and a window whose coverage is too thin does not get published as a figure at all. The alternative — a smooth line with invented points in it — is indistinguishable from real data to a reader, which is precisely the reason it is not an option.
Questions before you read the table
What is annual cost of ownership?
The spread paid across a year of trading at a stated volume, plus the commission on that volume. Here the volume is 10 lots a month of EUR/USD, which is printed next to every figure derived from it so the sum can be redone with your own assumptions. It is the only axis on which a commission-free account and a raw account can be compared without cheating.
Why is the broker that pays for this site not in the table?
Because we have no measurement of it to print. We hold demo accounts on both of its platforms and sample them exactly as we sample the others, and the price they quote does not move: one of the two held EUR/USD at a single value through every sample we took of the London session. A price that never changes is a fixture inside a demo server rather than a market, and an average of it would describe the server. So it has a sponsor card that says this, and Tickmill — which pays us nothing — sits at the top of the table on cost.
Are these figures live?
No, and nothing here pretends to be a quote. Every figure is an aggregate over a stated past window — 12.10 19:08–13.10 17:13 UTC — taken from our own accounts. Spreads move minute to minute; a figure claiming to be current would be stale by the time you read it, and would hide the only thing that makes an average honest, which is the window it covers.
How many brokers do you measure, and why not more?
3 on the table today, each one an account we opened and a platform we run. The limit is not ambition but hardware and discipline: every broker needs its own terminal instance on a machine that never sleeps, and every series has to survive a feed audit before it is allowed into a ranking. We would rather publish a short table where every column is real than a long one padded with figures copied off marketing pages.
What is not on this site?
Anything that needs a funded account: withdrawal times, support response, execution quality. Measuring those honestly means moving our own money through every broker here and placing real orders at each of them, so instead of a column filled with claimed processing times there is no column. The same rule removes star ratings and “best broker” verdicts, which are opinions wearing the clothes of a measurement. What is here is 4 axes, each one a figure with a source.
What each axis means, and what it currently spans
4 axes, measured on every account in the table. The middle column is the range across the table as it stands — the distance between the best and worst account on that axis — which is the quickest way to see which axes actually separate brokers and which are nearly identical everywhere.
| Axis | Range across the table | What it is |
|---|---|---|
| Annual cost | $722 → $910 | What a year on the account costs at our stated volume — spread plus commission plus The only axis on which a commission account and a commission-free account can be compared without cheating. |
| Avg spread, 07:00–20:00 UTC | 0.00 pips → 0.06 pips | The mean gap between bid and ask across every one-second sample in the window, including the hours nobody advertises. |
| Spread 21:00–24:00 UTC | 0.84 pips → 1.12 pips | The same measurement restricted to 21:00–24:00 UTC, when the New York session closes, liquidity thins and spreads widen on every account. |
| Commission per lot | $6.00 → $7.00 | The per-lot charge from the broker's published schedule, verified against a real fill where we hold one. Stated by the broker, and marked as such. |
Lower is better on every axis here · 12.10 19:08–13.10 17:13 UTC · a range of nearly nothing means that axis is not worth choosing a broker on