A dark pool limits the visibility of trading information; it does not guarantee anonymity, a fill or zero market impact. Forex has no single global order book, but that does not make the term meaningless. The BIS describes less-lit FX liquidity pools, including dark pools, alongside internalisation and other execution arrangements. The practical question is which prices, sizes and counterparties a particular venue reveals.

What actually is a dark pool on the stock market?

Ask three separate questions: are prices and sizes visible before a trade, is the counterparty identified, and are completed trades reported? FINRA explains that US equity dark pools operating as alternative trading systems do not publicly display quotes, while their trades in listed stocks are reported and published on the consolidated tape. These are distinct disclosure stages. The particular US securities rules should not be applied automatically to every foreign-exchange product.

The contrast concerns information visibility, rather than a requirement for one central exchange. Markets can contain several trading venues and different reporting arrangements. For an FX comparison, identify what the venue displays before a trade and what it reports afterwards.

Which information is hidden in OTC forex?

The currency market has no central exchange. There is no single order book, no shared transaction tape, no institution tallying all global turnover in real time. Trading happens over the counter, directly between participants — the classic OTC model, whose mechanics I break down in the article on the over-the-counter structure of the forex market. Trades are struck between banks, brokers, funds and electronic venues, and each of them sees only its own stream of prices and orders.

Fragmentation does not eliminate less-lit FX venues. The BIS describes liquidity pools with different levels of anonymity and information disclosure, including dark pools. Global OTC turnover is surveyed periodically rather than published through a single real-time tape. The market participants guide helps place these execution relationships in context.

Which analogues to dark pools really operate on currencies?

Internalisation can offset opposing client flow within a provider; it need not match identical orders immediately or eliminate inventory risk. Our fictional dealer first sells EUR 1,000,000 to one client, then buys EUR 600,000 from another. With no other positions or hedges it remains net short EUR 400,000. That is an exposure calculation, not a guaranteed spread profit or a report of any broker’s book. Check whether the firm acts as principal or as an intermediary.

Benchmark matching is a separate arrangement. CME’s description of EBS eFix explains that opposing orders match before the benchmark is calculated. Matched portions are firm, counterparties remain hidden at that stage and the fixing price is assigned later. Unmatched portions can be returned for alternative execution. This is not a promise to fill your entire order at the midpoint currently on a screen. Last look, by contrast, concerns final acceptance or rejection of a request under disclosed conditions.

Mean and volume do not identify the largest fill

Even a report with the fill count, total volume and weighted mean may not identify individual transaction sizes. Construct two distributions consistent with it.

Scroll sideways to see the full diagram

Same aggregates, different largest tradeTwo fictional distributions each contain two EUR purchases totalling EUR 100,000. A contains two EUR 50,000 fills; B contains EUR 10,000 and EUR 90,000 fills. All prices are 1.1000 USD per EUR. The weighted mean and total cost agree, but the largest fills are EUR 50,000 and EUR 90,000 respectively.REPORT: 2 FILLSEUR 100,000 · mean 1.1000 USD/EURSplit A50,000 EUR50,000 EURSplit B10,000 EUR90,000 EURCost in A and B: USD 110,000.Largest fill A: EUR 50,000.Largest fill B: EUR 90,000.Total and mean do not identify the split.

Two hypothetical decompositions of the same aggregates from one specified window and source. Each contains exactly two EUR purchase fills, counted once each. All assumed prices are 1.1000 USD per EUR, with zero fees. These are neither observations of a real pool nor a description of its reporting obligations. BIS — FX execution algorithms and market functioning explains that liquidity pools differ in the information provided about prices, sizes and counterparties. This example independently tests the limits of aggregation.

Segment lengths are proportional to EUR notional, with the same scale in both distributions.
Complete data for both distributions — every fill
SplitFillEUR notionalUSD per EURUSD cost
A150,0001.100055,000
A250,0001.100055,000
B110,0001.100011,000
B290,0001.100099,000
A — total2 fills100,000Mean 1.1000110,000
B — total2 fills100,000Mean 1.1000110,000

The weighted mean in each distribution is USD 110,000 / EUR 100,000 = 1.1000 USD per EUR. The largest notional is EUR 50,000 in A and EUR 90,000 in B. The aggregates alone cannot identify which distribution occurred; other distributions may fit too. Identifying the largest fill requires individual fill data, rather than just total and mean. Missing data do not prove the activity of a particular institution or manipulation.

What does this mean for the retail investor?

There is no single real-time measure of all global OTC FX volume. A platform may show tick volume or trade volume depending on the instrument and data source; neither label alone proves global coverage. Tick volume counts recorded ticks, whereas trade volume counts reported traded quantity. Check the source and unit before using the volume indicator.

A midpoint price can lose its advantage after fees. Take simultaneous fictional EUR/USD quotes: bid 1.1000 and ask 1.1002 USD per euro. Their midpoint is 1.1001. A full EUR 100,000 purchase costs USD 110,020 at ask or USD 110,010 at midpoint, before other charges. If only the midpoint option adds a USD 12 fee, its total becomes USD 110,022, or USD 2 more than ask. A USD 7 fee would instead leave it USD 3 cheaper. These are assumed full, simultaneous fills, not provider tariffs.

Volume fields also answer different questions. The MQL5 MqlRates structure distinguishes tick_volume from real_volume; a platform is not inherently restricted to only one. Identify the instrument, data source, unit and coverage before using a series. A recorded tick count is not global traded notional, and reported trade volume from one venue is not the whole OTC market. For the underlying provider relationships, read the interbank market.

Is a „forex dark pool” a myth or a real phenomenon?

When commentary mentions an FX dark pool, ask for the venue and the information being withheld. Internalisation, an undisplayed order and last look are different mechanisms. Fragmentation explains why a public chart cannot reveal the whole OTC market; it does not prove that manipulation is present or absent.

A benchmark applies only to the matched portion. In our fictional purchase of EUR 100,000, fills of EUR 60,000 and EUR 10,000 match in the pool. The remaining EUR 30,000 is returned. Assume that the later fixing is 1.1000 USD per euro, and that the returned portion is separately purchased at 1.1020. Fees are zero; neither rate is an actual CME observation or a guaranteed subsequent fill.

One order, two execution paths
Our modelEUR amountUSD per EURUSD cost
Matched portion70,0001.100077,000
Separate residual fill30,0001.102033,060
Whole purchase100,000Mean 1.1006110,060

The full cost is USD 110,060 and the volume-weighted price 1.1006, although the matched 70% received exactly 1.1000. This is not an incorrectly assigned fixing: the remainder followed another execution path. Assess the matched fraction, its assigned price and what happened to the rest. The label “at benchmark” does not describe the whole order unless its completion and residual execution are also known.

What to do tomorrow

  1. Identify the actual volume field. Check the instrument, data source and whether the exported field is tick_volume or real_volume. Record its unit and coverage. A label or visual indicator alone cannot establish global FX turnover, and a recorded tick is not a currency amount traded.
  2. Compare the same pair at two brokers using matching timestamps and quote sides. Record any differences together with the data source, spread and execution terms. A short comparison can expose a measurement issue, but cannot prove its cause or represent the entire market.
  3. Read the broker’s execution policy for last look, rejection conditions and relevant statistics. If details are unclear, request clarification and record what remains unknown. An incomplete answer is a limitation on your assessment, not conclusive evidence of misconduct.
  4. Reconcile one existing execution record. Retain the order identifier, timestamp and time zone, symbol, direction, size, requested and filled prices, fees and applicable terms. Compare bid with bid or ask with ask at matching times. Ask the provider to explain a specific discrepancy, and preserve its answer with the evidence.