Understand FX last look: post-request price and validity checks, acceptance risk, replacement costs, firm liquidity and the FX Global Code’s disclosure and information-use principles.
Last look in FX execution
Last look is an electronic FX execution practice in which a liquidity provider can accept or reject a client's trade request after receiving it against a quoted price. A strategy that treats every requested trade as a fill can therefore overstate its ability to acquire currency at the displayed rate. The request, the provider's decision and the client's receipt of that decision are separate events.
What happens after the request arrives
A client buying euros against dollars requests the provider's ask in the bid-ask spread. Under last look, that request still faces checks before acceptance. FX Global Code Principle 17 distinguishes:
Validity checks: are the transaction details operationally appropriate, and is sufficient credit available?
Price checks: is the requested rate consistent with the current rate available to that client?
The provider's price reference need not equal a public screen's best ask. A comparison needs the same currency direction, size, client eligibility and relevant time.
During the hold or last-look window, the request is pending. Acceptance produces a trade at the agreed terms; rejection leaves this request unfilled. A missing response does not establish rejection. Re-sending while the first request's status is unresolved can create unwanted duplicate exposure.
Firm liquidity removes this last-look discretion once a valid match occurs under the venue's rules. It does not make every observed quote a guaranteed fill: size, credit eligibility and whether the quote survives until arrival still matter. The GFXC's last-look report, §§2–3, contrasts firm matching with requests against streamed quotes.
Schematic last-look sequence: a client requests EUR 1 million at 1.1000 USD/EUR; the provider receives it, checks validity and price, then accepts or rejects. Pending is not a fill. A rejected request replaced at 1.1004 costs USD 400 more; an old-quote fill compared with 1.0996 is USD 400 worse.
Original fictional event diagram. Timing is schematic, with no duration assumed. The two price scenarios are conditional comparisons, not a provider's decision rule.
One request, two different USD 400 comparisons
Suppose a client requests to buy EUR 1,000,000 at 1.1000 USD per EUR. An accepted fill at that rate costs USD 1,100,000, excluding fees. Consider two separate fictional paths.
Path A: the request is rejected and a replacement trade is available. By the time the client can execute again, assume it can buy the full amount at 1.1004. Its payment is USD 1,100,400, so the additional cost relative to the original requested rate is
1,000,000(1.1004−1.1000)=400USD.
The extra USD 400 depends on an actual replacement being available for the full amount. A screen quote alone does not establish that. If the client never replaces the trade, it has an uncompleted currency purchase, not this realised replacement cost. Evaluating that outcome requires a declared horizon and benchmark, as in implementation shortfall.
Path B: the old quote is accepted while a comparison ask is lower. Instead assume the contemporaneous comparison ask is 1.0996, but the request fills at 1.1000. The old fill is worse by
1,000,000(1.1000−1.0996)=400USD.
The comparison purchase would cost USD 1,099,600. This is a benchmark difference; it is not proof that this client could have obtained that alternative fill. An accepted trade also does not automatically receive price improvement merely because another quote is better.
These paths do not say that the provider always rejects rising asks and accepts falling asks. They specify neither a tolerance rule nor the frequency of either outcome. They therefore establish neither empirical asymmetry nor abuse.
The rule and the use of information both matter
The GFXC report describes symmetric price checks as applying the same tolerance in both directions. Asymmetric checks treat directions differently; any price-improvement mechanism also changes the outcome. Those details belong in the disclosed policy, rather than being inferred from two trades.
Principle 17 calls for disclosure of the purpose of last look, how price moves affect acceptance and typical decision time. It discourages collecting requests without intending to accept them and trading on request information during the window, including hedging or changing platform prices. Such activity can reveal client intent and move prices against the client before a rejection. Its separate cover-and-deal exception requires an explicit, documented and disclosed arrangement to source offsetting trades without taking market risk, passing the entire traded volume to the client. Principle 17, pp. 22–23.
The August 2021 report, §5, says checks should occur without delay; adding time beyond what the checks require conflicts with Principle 17. It also addresses harmful use of rejected-request information. There is no universal permitted hold time in milliseconds in this guidance.
Measure execution availability alongside price
A narrow quoted spread is attractive only in conjunction with usable liquidity. To evaluate last look, retain every request, its terms, timestamps, acceptance or rejection, rejection reason and any eventual replacement. Compare response times and acceptance rates across comparable currency pairs, sizes and market conditions. Then compare total purchase costs and uncompleted amounts under a consistent benchmark. A favourable average fill price can coexist with expensive rejected purchases omitted from the sample.
The GFXC's 2021 release encourages advance disclosure and information for regular execution review. Observed patterns can motivate questions about a provider's controls and disclosures; identifying their cause requires more than a chart of subsequent prices. The Post-Trade Analysis lesson develops complete execution populations, reconciliation and benchmark comparisons. Its preview is public; the full lesson requires membership.
As checked in October 2026, the GFXC identifies the December 2024 FX Global Code as its current version. The Code is voluntary good-practice guidance for wholesale FX; it does not replace applicable law or itself impose universal legal obligations. The August 2021 report remains supporting guidance listed by the GFXC, rather than a replacement Code. Current Code page, GFXC reports.