data to 13.10.2026
SponsoredVisit FxPro

3 brokers, one method

Ranked by annual cost of ownership over 10 lots a month. Each has a page with both columns — where it wins and where it loses — and a head-to-head against each of the others.

What this list is

3 brokers, one method, one instrument, one window. Each one is an account we opened ourselves on the account type a retail client is offered, running on the broker's own MetaTrader 5 build on hardware we control. The ordering above is annual cost of ownership for 10 lots a month of EUR/USD — from $722 at Tickmill to $910 at IC Markets, a spread of $188 a year between the ends of one table.

That range is the reason this site exists. It is not visible in a spread comparison, because 0 of these 3 accounts carry no commission at all while 3 charge per lot on top of a near-zero spread. Both models are legitimate; they are simply not comparable until the whole bill is added up at a stated volume.

3 of the 3 have a confirmed legal entity behind our account, taken from the regulator's public register and printed on the broker's own page together with what that licence obliges the firm to do. For the rest the entity is recorded as not established, which is the truth: a group can hold a European licence and an offshore one at once, the client protections differ sharply between them, and guessing which one holds our account would attach a real licence number to the wrong company.

How to read a row

Each row carries the broker, the account type, and the measured figures with their source class at the number. Three things are worth knowing before comparing any two rows.

  • The account type is part of the identitya raw account and a standard account at the same broker are different products; we never average across them
  • Zero spread is a real valueon a commission account the broker is not paid through the spread, so the spread is genuinely at zero much of the time
  • A feed is audited before it is averageda series whose spread never visits the values next to its usual one is a fixture inside a demo server, and nothing from it is published — including when the account belongs to our sponsor

The head-to-head pages take two of these brokers against each other on every axis in the table at once, for every possible pairing. They exist because a table sorted by one column hides the trade-off that actually decides where to trade: the account that is cheapest on the bill is not necessarily the one that is cheapest to hold through the rollover, and for a position left open overnight that difference is worth more than the difference between their session spreads.

Two account models, one table

The accounts here come in two shapes, and the difference matters more than the difference between brands. On a raw account the broker shows you something close to the interbank price and charges a fee per lot; on a commission-free account it adds its margin to the price and charges nothing visible. 3 of these accounts are the first kind, 0 the second.

ModelMean measured spreadMean commission per lotMean annual cost
Raw + commission3 of 3 accounts0.03 pips$6.67$840

Group means over our own measurements · 12.10 19:08–13.10 17:13 UTC · at 10 lots a month

Read those two rows against each other and the shape of the market appears: the raw accounts quote a spread several times tighter, and once the per-lot fee is added at our volume the totals move much closer together than the spread column suggests. Which model is cheaper for you is a question about volume, not about brands — and the crossover is computed explicitly on each head-to-head page.

There is a second, less obvious consequence. A commission-free account hides its cost inside the price, so its cost moves with the spread — including during the rollover window, where the spread on every account widens. A raw account's fee is fixed per lot and does not widen with liquidity; only its much smaller spread component does. For anybody trading in thin hours, that difference compounds in a way no quoted figure shows.

What the feed test refused, and why it is published

The roster above is short because the audit is not decorative. In this window 8 series across 2 accounts failed it and are represented nowhere on this site — not as a row, not as a footnote, not as a “from” figure. The reasons are printed here because a refusal is a measurement too, and because the account that failed most comprehensively is the one that pays for the site.

SeriesPairWhy it cannot be published
fxproAUDUSDсамое частое значение 5 ед. (100%) не имеет соседей (0 из 164049); встречаются только [0, 5, 7, 8, 9, 10] — спред задан ступенями
fxproEURUSDсамое частое значение 4 ед. (100%) не имеет соседей (0 из 255304); встречаются только [0, 4, 7, 8, 9] — спред задан ступенями
fxproGBPUSDсамое частое значение 6 ед. (100%) не имеет соседей (0 из 303999); встречаются только [0, 6, 12, 13, 14] — спред задан ступенями
fxproUSDJPYсамое частое значение 300 ед. (100%) не имеет соседей (0 из 321747); встречаются только [0, 300, 700, 800, 900, 1000] — спред задан ступенями
fxpro_mt5AUDUSDсамое частое значение 2 ед. (50%) не имеет соседей (0 из 129452); встречаются только [2, 4] — спред задан ступенями
fxpro_mt5EURUSDспред всегда ровно 2 ед. на 123356 наблюдений ликвидных часов — константа, а не рынок
fxpro_mt5GBPUSDспред всегда ровно 6 ед. на 137116 наблюдений ликвидных часов — константа, а не рынок
fxpro_mt5USDJPYспред всегда ровно 3 ед. на 154986 наблюдений ликвидных часов — константа, а не рынок

What the test asks is whether a spread moves through its neighbours. A price that floats visits the values either side of the one it usually sits on; a price that is set jumps between fixed steps, or holds one value for a whole session. The test runs on the liquid hours alone, because a demo server that widens its spread on a schedule overnight hands a fixed daytime price exactly the neighbouring values it lacks — which is how one of these feeds passed an earlier, day-wide version of the same audit and failed this one.

A refused series is not deleted. Its ticks stay in the store, flagged, because a tick cannot be collected twice and because a record of what the rig recorded is worth keeping even when it cannot be published. What it cannot do is reach a page: every query behind a published figure excludes flagged rows and every account on the roster has passed the audit on all four pairs.

The practical consequence is a shorter table than a comparison site would like to show. We would rather publish three accounts whose prices we can stand behind than ten where some columns describe a simulator, and the refusals above are what the difference looks like.

How these accounts were opened

Every account in this table was opened the way a reader would open one: through the broker's public sign-up, on an account type offered to retail clients, with no negotiated terms, no introducing-broker arrangement and no institutional tier. That is not a detail — it is the condition that makes the figures comparable to each other and to what you would get. A spread measured on a privately negotiated account is a measurement of someone's relationship, not of a broker.

Each broker runs on its own instance of its own MetaTrader 5 build. We do not aggregate across brokers inside one terminal, because a broker's own build is part of what is being measured: the symbol it quotes, the digits it quotes it to, the clock it stamps and the status codes it returns on an order are all its own.

The awkward consequences are published rather than tidied away. Where an account was restricted or closed during a window, the affected axes carry no figure and say why. Two of the brokers in our original list never sent usable platform credentials at all and are therefore not in the table; a comparison that quietly dropped them and kept the count the same would be the easiest kind of lie to tell here.

No account in this table is funded beyond what the platform requires to operate, which is also why the site has no withdrawal column: producing one honestly means moving our own money in and out of all 3 brokers. Until that happens there is no such axis here at all, rather than an axis filled with claimed processing times.

What happens when a broker changes its terms

Two of the figures in this table are not measurements but statements by the broker: the commission per lot and the withdrawal fee, both read from a published schedule and both marked as stated by the broker. A schedule can change the day after it is read, which makes the date it was read part of the figure — it is printed on the axis, and it is deliberately a different date from the measurement window.

When a broker changes a schedule, the figure changes with the next reading and the measurement window around it does not move: a commission figure from October sitting next to a spread measured in September is not a contradiction, provided both dates are visible. What we do not do is quietly refresh a stated figure and leave the old measurement beside it as though nothing happened.

A change in account conditions is more serious than a change in a fee. If a broker moves our account to a different type, alters its execution model, or restricts it — one account in this table was restricted mid-window — the series on either side of that change is not one series, and treating it as one would average two different products. In that case the broker leaves the table until there is a clean series on one side of the change, which is why the table is as short as it is.

Questions about the list

Why these 3 brokers and not others?

Every broker here runs MetaTrader 5, offers the account type we measured to an ordinary retail client, and accepted our application. That is the whole selection rule — and then its price feed has to pass an audit, which is where the list got shorter: the broker paying for this site failed it and is not here, while Tickmill, which pays us nothing, comes out cheapest on annual cost.

Why is the list sorted by annual cost rather than by a score?

Because a score is an opinion with a number stuck on it, and on a site funded by a broker an opinion is worth nothing. Annual cost of ownership is arithmetic: spread over the traded volume, plus commission on that volume, plus a year at a profile printed next to the figure. Anyone can redo it with their own volume and get their own ordering — which is the point.

What disqualifies a broker from the ranking?

A series that fails the feed audit. A demo or live feed is not obliged to be the market: it can be a simulator emitting one fixed spread, or stepping between two values, and from a chart it is indistinguishable from a real quote. We found exactly that on one of our own accounts. The audit tests continuity rather than variety — a real spread passes through neighbouring values on its way between levels, a fixture jumps — and a broker whose series fails is not ranked at all, however much work went into collecting it.

Which figures here are not measurements?

Commission and withdrawal fees are taken from each broker's published schedule and marked stated by the broker; everything else on the table is ours, marked as our own measurement. Brokers are ranked only against others in the same class, because a figure we measured and a figure quoted from a price list are not competing in one column. A figure with no declared class is not printed at all — the build refuses it.

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.

AxisRange across the tableWhat it is
Annual cost$722 → $910What 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 UTC0.00 pips → 0.06 pipsThe mean gap between bid and ask across every one-second sample in the window, including the hours nobody advertises.
Spread 21:00–24:00 UTC0.84 pips → 1.12 pipsThe 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.00The 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