In this article
After this article, you can
- Measure response time using timestamps from one stable clock.
- Identify why unsynchronised logs cannot determine a last-look window.
Terms at hand: Order execution · Last look · Central banks · Liquidity · spread (bid-ask spread) · Stop loss
A quoted EUR/USD price does not alone establish an accepted trade. Last look is a final validity or price check before a trade request is accepted or rejected. It is primarily a wholesale electronic FX practice; a retail CFD’s execution path and contractual duties are separate questions. A rejection or requote alone does not identify the mechanism.
What last look actually is
Last look gives a liquidity provider a disclosed checking window before accepting or rejecting a trade request. The validity and price checks, timing and information use should be assessed against its policy and the applicable framework. This article does not establish a typical few-to-dozens-of-milliseconds range for the whole market.
The key difference from an exchange-traded market is that exchange matching follows the venue's rules and available orders, while a last-look provider reserves a checking window before accepting or rejecting a trade request. In a last look model the provider's quote is, in practice, an invitation to trade rather than a binding offer — the final word belongs to the entity quoting. For you this means the price on your screen is not a guarantee of execution. Between your click and the confirmation stands a decision by the other side.
Why the window exists at all
The argument for last look is serious and worth understanding before you write the mechanism off as pure malpractice. A liquidity provider quotes prices to many clients across many platforms at once. In a world where information moves faster than its own systems can refresh a quote, it is exposed to latency arbitrage — a situation where a faster participant trades on a price that is already stale before the provider can pull it. Last look gives it a moment to catch such a case and protect itself against so-called toxic order flow, a stream of trades that systematically exploits its latency.
Checking a stale quote can limit the quoting provider’s exposure, but does not guarantee a tighter spread or a better result for every client. Rejected requests can leave the client exposed to a different price. Evaluate the complete process and subsequent execution cost, not just the displayed spread.
Where the controversy hides — asymmetry
The problem starts with asymmetry. Imagine that during the last look window the price can move either way. If the move favours the liquidity provider (and works against you), the trade is accepted — the provider is happy to take the rate that suits it better. If the move favours you, the trade is rejected, because the entity quoting does not want to fill at a price that has just turned unfavourable for it. It is an arrangement in which one side keeps the favourable deviations for itself and passes the unfavourable ones on to the client.
Separate an unfilled request, a new quote and slippage that lands against the client surprisingly often. Acceptance at the original requested price has no slippage against that reference even if a later quote is better. Existing logs and policy can justify further questions, but statistics alone do not identify every cause. The alleged hunting of stop-loss orders is a separate issue.
Two clocks do not make one measurement
Fictional client and server logs record milliseconds from different origins. Their values cannot be directly compared.
Hypothetical logs for one request, with unsynchronised client and server origins. We assume a stable client clock and no measurement error. The numbers are not broker data. Transport, checks and execution are not measured separately. The document GFXC — last-look report distinguishes request stages and the checking window; it does not determine the offset of these fictional clocks.
Subtracting 96 from 100 would suggest an event before sending, but mixes two clocks. Measuring the checking window requires its boundaries on a comparable time scale. A response can accept or reject the request; 16 ms proves neither last look nor improper delay.
A hypothetical example — what one rejection looks like
This is a hypothetical one-sided rule, not a provider measurement. Marek requests a EUR/USD purchase at ask 1.0850; assume a 50-millisecond check. An ask rise to 1.0851 causes rejection of the original request; a subsequent purchase would depend on a new available quote. An ask fall to 1.0849 instead leaves the request accepted at 1.0850. With a 0.0001 pip, that fill is one pip above the later ask but exactly at the requested price. Rejection is not a realised loss, and the second case is not slippage against the original request.
The hypothetical example uses a one-sided acceptance rule. It does not establish how your provider checks prices. Ask which reference price, tolerance and acceptance criteria apply, including whether checks differ by direction. Comparing a single requote does not identify the full checking policy.
What the rules say
Principle 17 of the wholesale FX Global Code addresses validity and price checks, disclosures and use of information from the request. It generally discourages trading that uses that information during the check, with a narrowly described exception for documented and disclosed cover-and-deal arrangements passing the full traded volume to the client. The Code is not itself a statute or a worldwide legal permission.
The FX Global Code is a wholesale-market good-practice code and explicitly does not replace local law or impose legal obligations. Principle 17 addresses last-look transparency and appropriate use as a validity or price check. Distinguish a participant’s Code commitment from the regulatory rules governing your retail account.
Where you will meet last look, and where you will not
Last look is used in parts of electronic FX liquidity provision, but neither an ECN label nor a retail platform screen establishes its use on your order. Read the execution policy and ask the provider about the relevant request path and checking criteria; no market-wide prevalence is quantified here. Related reading: wholesale interbank market, ECN model differs from the market-maker model.
Ask which part of the actual request path uses last look, the reference price, directional tolerance, expected timing and rejection reasons. Lack of information limits assessment; it does not alone prove misconduct. The FCA’s dated 2021 statement treats extra delay to observe future prices as inconsistent with the voluntary codes and stresses disclosure. Assess the actual conduct and applicable law separately.
What to do tomorrow
- Put one concrete question to your broker. Write on chat or by email: "Is last look applied to the execution of my orders, and if so, is it symmetric or asymmetric, and what is the typical window length?" Save the answer. The absence of a clear reply is itself information about how transparent that broker is.
- Review your own rejection history from the past month. Open the trade report in your platform and count how many orders were rejected or requoted, and at which moments it happened. If the rejections cluster around fast moves in your favour, you have grounds to look closer and to raise the matter with your broker.
- Check the execution-quality documents. Go to your broker's website and find the order execution policy and any liquidity-provider disclosure sheet. Look for the words "last look", "price check", "symmetric" and "asymmetric". What a broker declines to disclose tells you more than what it advertises.
- Use comparable existing data first. Do not open live positions merely to diagnose infrastructure. In a hypothetical sample, eight acceptances after 5 ms and two rejections after 80 ms give (8 × 5 + 2 × 80) / 10 = 20 ms mean response time, compared with 5 ms among acceptances. The mean of all responses is not mean fill time; neither statistic alone proves improper last look.
Check your understanding
One short exercise
About 2 min · you can try again
Which conclusion do these logs support without synchronizing the clocks?
- The client response time was 16 ms.
- The server received the request 4 ms before it was sent.
- Last look lasted exactly 16 ms.
Check the answer and explanation
The client response time was 16 ms.
The 100 ms send time and 116 ms receive time use the same assumed clock. Their difference describes the entire response, not just the review window.
Frequently asked
Is last look legal and permitted by regulators?
The voluntary wholesale FX Global Code does not determine legality or replace applicable law. Principle 17 describes appropriate checks, transparency and information use, including a limited cover-and-deal exception. The FCA’s 2021 recognition statement says extra hold time to observe future prices is inconsistent with the codes. Neither recognition nor the label legalises every actual use.
What is the difference between symmetric and asymmetric last look?
A symmetric check applies comparable price tolerances in both directions; an asymmetric check applies different directional treatment. Evaluate the actual reference and acceptance rules, including any price improvement. Neither label alone proves fairness, abuse or a particular realised cost. The GFXC report stresses disclosure so the client can assess the process.
How can I tell whether my broker uses last look?
The simplest way is to ask directly. Write to the broker and ask whether last look is applied to the execution of your orders, and if so whether it is symmetric or asymmetric and what the typical window length is. The absence of a clear answer is itself a signal. A second source is the execution-quality documents and the liquidity-provider disclosure sheets — look there for the phrases "last look", "price check", "symmetric" and "asymmetric". A third, the most practical, is analysing your own history: count the rejected and requoted orders and check whether they cluster around fast moves in your favour. A single rejection proves nothing, but a repeatable pattern of one-sided rejections is solid grounds to look closer.
Is last look the same thing as stop-loss hunting?
No. Last look concerns whether a trade request is accepted before the trade is confirmed. Alleged stop hunting concerns claims about price behaviour around protective orders; a triggered stop or rejected request alone establishes neither manipulation nor last look. Use the relevant price, order state, policy and logs. The Code describes good practice rather than a universal legal diagnosis.
Sources & bibliography
-
Global Foreign Exchange Committee FX Global Code · The GFXC’s principles of good practice for wholesale FX markets, including last look. www.globalfxc.org ↗
-
Global Foreign Exchange Committee GFXC releases guidance paper on Last Look, publishes disclosure templates · The GFXC’s 2021 announcement of last-look guidance and disclosure templates. www.globalfxc.org ↗
-
Financial Conduct Authority FCA confirms recognition of the revised FX Global Code and the Global Precious Metals Code · The FCA’s 2021 statement recognizing revised market codes, including last-look-related guidance. www.fca.org.uk ↗
-
Bank for International Settlements Guy Debelle: The FX Global Code · A 2021 speech on the FX Global Code and its review, including last-look guidance. www.bis.org ↗
-
Global Foreign Exchange Committee FX Global Code — Principle 17 and legal status · The voluntary wholesale-market code supplements law, defines last-look checks and contains a limited documented cover-and-deal exception; it does not decide every retail contract’s legality. www.globalfxc.org ↗
-
Global Foreign Exchange Committee Execution Principles Working Group Report on Last Look — August 2021 · The report distinguishes request stages and price-check methods and recommends disclosures and rejection information, without prescribing one universal response window. www.globalfxc.org ↗
