The EUR/USD price on your platform was assembled a few milliseconds ago from somewhere between four and fifteen separate liquidity feeds. None of those feeds came from a market in the sense most retail traders picture it. The number on your screen is a construction, not a quote.
Spot FX runs without a central exchange or a shared order book. What traders call the market is a web of bilateral credit relationships between banks, non-bank market makers, prime brokers, and the software firms threading it all together. Your broker sits at the customer end of that web. Its job is to receive prices from whichever counterparties it has credit lines with, run them through an aggregation engine, and flatten the result into a single bid and ask on your screen.
That flattening is handled by aggregation platforms. Integral, oneZero, and PrimeXM are the names you will hear most if you start asking around in back-office circles. None of them are brokers, just plumbing sitting several layers below anything that gets marketed to clients. A broker subscribes to one of these platforms, points it at a panel of liquidity providers, and lets the engine handle pricing, markup, and trade routing.
The liquidity providers feeding into that engine split into two broad categories. Tier-one banks, JPMorgan, Citi, UBS, Deutsche, Goldman, supply prices through prime brokerage relationships, pricing as principals and warehousing the resulting inventory on their own books. Non-bank market makers like XTX, Citadel Securities, and HRT run a different operation entirely. They carry near-zero net inventory, make markets algorithmically at very high speed, and price against a risk model that has nothing in common with a bank's. Which providers appear in your broker's panel, and in what proportion, depends on which LP subscriptions your broker signed, and you almost never know the answer.
Most unexpected fill behavior traces back to last-look. Most non-bank LP quotes, and a meaningful portion of bank quotes, carry last-look rights. The LP streams a price but reserves the right to reject a trade after it has been submitted. You click buy, the LP receives the order, and it then has somewhere between 10 and 200 milliseconds to decide whether to fill or pass. If the price moved in a direction the LP did not want, it passes. The alternative is firm pricing, where the quote is genuinely firm and the LP cannot walk back after you hit. Firm quotes are rarer than the marketing materials imply, and your platform does not flag which pricing type produced any given fill. When you see slippage on a fast move, you are usually watching last-look rejections cycle through the LP panel until someone agrees to take the other side, not a market racing away from your order.
When a tier-one bank quotes to a non-bank market maker through a prime brokerage relationship, it knows the counterparty type. Non-banks represent sharp flow, so the bank widens its quote to price in adverse selection. The non-bank takes that wider input, runs its internalization model across it, and feeds a price into your broker's aggregator. Your broker then applies its own markup on top. By the time the price reaches your screen, three separate layers of compensation sit between you and the interbank mid. The spread is the bottom line of a negotiation you were not part of.
Put numbers to it. Say the interbank EUR/USD top of book at a given microsecond is 1.08524 bid, 1.08525 offer. That is a 0.1 pip spread. Bank A quotes into a non-bank LP slightly worse at 1.08522 bid, 1.08527 offer, pricing for adverse selection against a sharp counterparty. The non-bank receives that alongside quotes from three other banks, runs its internalization model, and puts 1.08521 bid, 1.08528 offer into your broker's aggregator. The aggregator takes the best composite across its full LP panel, arrives at 1.08523 bid, 1.08527 offer, and applies the broker's own markup. Call it 0.4 pips symmetrically. The retail price you see is 1.08521 bid, 1.08529 offer, against an interbank spread of one tenth of a pip. You are trading eight tenths. Six tenths of a pip evaporated through the layers before the price reached you.
This is why I almost never hit market during scheduled news. Touching a market order in the first seconds after an NFP print is asking every last-look LP in the chain whether they want the other side right now. Most decide they do not. I learned this early and it changed how I approach every high-impact event. Limits or nothing.
The desk phrase for it was that we were not showing clients the market. What we showed them was what the aggregator decided the market should look like, after everyone in the chain had taken their margin, and it was a functioning product, just not what the marketing materials described.
The real cost of trading is not the number on the spread ticker. It is the spread plus rejected fills plus the markup each layer applied on the way in. A broker running a thin LP panel shows you a worse price than one running a deeper panel, at the same moment, on the same pair. A broker advertising raw spreads without disclosing its LP composition is showing you the input price and leaving out everything added before it reached your screen.
Every retail position on the platform sits inside the aggregation chain's order book, stops and all. How that gets used is the next problem.
Key takeaways
Identify whether your broker uses last-look or firm liquidity for the pairs you trade most. If the broker will not tell you, treat it as last-look and size positions accordingly.
Avoid market orders during the first ninety seconds of any tier-one news release. The aggregation chain rejects fills faster than the price can move, and the slippage you book is the chain choosing not to fill.
Compare the same pair across two brokers at the same moment. The gap between them is not random. It is the difference in their LP stacks and the markup logic their aggregator applies on the way out.
Resources & tools
Bank for International Settlements Triennial Central Bank Survey on global FX market activity. The standard reference for who trades what, with whom, and through which channel. Find the latest edition at bis.org under Statistics, Foreign Exchange.
The FX Global Code, principles 9 to 12 specifically. These cover last-look, hold times, and pre-hedging disclosure expectations from the major LPs. Find it at globalfxc.org.
DISCLAIMER
This newsletter is for educational and informational purposes only. Nothing herein constitutes investment advice, a recommendation to trade, or an endorsement of any specific broker or financial product. The author writes under a pen name and has no undisclosed financial relationship with any broker mentioned. Trading forex and CFDs involves substantial risk of loss and is not suitable for all investors.