The FX Code’s three-year review: a modest proposal
When you order a taxi via an app there’s a short delay before it confirms, during which the app checks that the taxi is still available for hire and the price hasn’t changed. Operational and price checks, in other words.
Let’s say it takes the app one second to check that a) the taxi is still free and b) at the original price. Now imagine that for some customers it responds as soon as it has confirmed these checks. But for certain people, like you, it delays by a minute. It delays despite having fully completed its checks to see if prices surge meanwhile.
That additional delay is clearly a commercial tool not a risk control mechanism and frankly I think think the app operator would find itself in hot water.
Above: illustrative image of a generic taxi app surging
The FX Code
What does all this have to do with the Global FX Code? Well, we are approaching the three-year review and the GFXC committees are meeting to discuss specific areas in which this “living document” should be updated.
Whilst it is impossible to please everyone, most reasonable people agree that the Code has been a force for good. Some areas requiring additional work — such as disclosures on anonymous ECNs — have already been identified and worked upon. I’m confident they will be resolved. However there is one crucial area of confusion that needs addressing urgently.
In Principle 17 the Code defines last look as a risk control mechanism:
If utilised, last look should be a risk control mechanism used in order to verify validity and/or price.
It continues:
The price check should be intended to confirm whether the price at which the trade request was made remains consistent with the current price that would be available to the Client.
Operational and price checks, just like the taxi app. Of course different apps (liquidity providers) will require different amounts of time to perform these checks. That is perfectly reasonable. Everyone has different technology.
Variable response times
Here’s the thing: if it takes a liquidity provider, say, 30ms to internally perform price and operational checks then how come it has variable last look windows by client?
After 30ms — incidentally, at most and perhaps all top 10 LPs these checks can be performed in less than a single millisecond nowadays — the liquidity provider already knows with certainty if the order has failed or passed all its risk control checks, including the ‘on market’ price check*.
Adding an additional delay for handpicked clients is in my personal opinion clearly a commercial tool and not a risk control mechanism, as defined by the Code today.
Yet many liquidity providers are clear they vary the length of last look window for specific clients, which suggests that clarification by way of a specific example is required. Something has to give: either last look may be used in this way as a commercial tool or it may not.
It is crucial for the Code to remove any potential ambiguity to protect market operators from being judged in future by standards that may have seemed unclear at the time.
That’s my modest proposal for the three-year review. A small clarification perhaps but a vital one, I believe.
The views expressed on this blog are the author’s personal views and should not be attributed to any other person, including that of their employer.
*Sometimes there is confusion around latency when it comes to price checks. Whilst orders from, say, an internet GUI on the other side of the world will necessarily be latent —as it takes time to reach the liquidity provider — the price check is only asking “When the order does arrive, is it consistent with my latest price?” There’s no need to add additional delays to such orders; it takes exactly the same amount of time to internally compare the order against the latest price as it would any other order. Price checks as a risk control mechanism — rather than commercial tool for profitability — simply do not vary in time taken from one client to the next, just as credit checks do not. Commercial tools, such as adjusting spread width based on profitability, can and do vary by client.
Co-Founder and Publisher at The Full FX
5yFully agree (obviously!) but would add I think true best practice would be that LPs share their average hold times (and response times of accepts and rejects) with the individual customer AND how that compares to their average across their entire client portfolio (not just peers). As you say, we don't need ambiguity around what is still a sensitive process.
Financial Services Lead at Digiterre | Senior Financial Markets Leader 35+ years | eCommerce Sales & Trading | Digital Transformation | Fintech Consultancy
5yThere is normally an inference that something untoward is going on but one question for me is Regulators have access to the code and they can now call upon experts in this field (many have left the industry) to check for poor practice. So is there really anything going on ?
Good article, and agreed that the Global Code could do with a tweak in this regard. One thing that is worth mentioning on the specific scenario that you mentioned, is that a client in certain circumstances might be prepared to accept a longer last look window from their provider, if that means that the provider is then able to give them better pricing. They may deem that their flow is generally very benign, and as such on average they are likely to get filled at the published rate on the overwhelming majority of trades, regardless of the last look window (within reason). If this set up means that the client gets better headline spreads, on the condition that the LP is able to have a slightly extended last look window, then the net effect is that the client gets better fills on the majority of their trades, and slippage on the odd trade that might have been directional. The client's average fill price across all of their trading is improved, and the LP has insurance against getting hit by the bulldozer in front of which they were picking up the pennies? The above is often an optimal set up for (for example) brokers, who have a wide variety of different flow characteristics. For example, it makes no commercial sense for a retail broker with very benign flow to pay the significant spread premium to trade on no-last-look (especially if it's on "exchange", meaning that the spreads will have been pillaged by the very aggressive traders whom last look was intended to protect against), when their flow is highly unlikely to be penalised during a last look window if they trade on a different liquidity pool. Effectively this is paying a spread premium for something that has limited benefit. Finally, the above is absolutely not a dig at XTX. I can absolutely understand why a highly sophisticated LP such as XTX would be frustrated that there isn't always a level playing field versus their direct peers, and the approach to last look is definitely an area where their transparency is both highly impressive and admirable. I understand that it's somewhat fashionable to demonise last look, and no doubt last look is an area that can be open to malpractice, but the reality is often more nuanced, depending on the specific situation, flow characteristics, and requirements of an individual participant. The views and opinions expressed in this comment are those of the author and do not necessarily reflect the view or policy of their employer