FX Last Look: Why a Lower Quote Can Cost More After Rejections
An offer 0.4 pip cheaper can leave a €10 million purchase $160 more expensive. Rebuild the full execution cost, distinguish request counts from rejected volume, and calculate when retry prices erase the initial advantage.
A lower FX offer is not necessarily a cheaper way to complete a currency purchase. When execution is subject to Last Look, the relevant cost depends on which requests are accepted, how much remains to be bought and the prices achieved on that balance. A competitive quote on the accepted portion cannot, by itself, describe the whole transaction.
Consider a hypothetical €10 million purchase. Route A initially offers euros 0.4 pip cheaper than route B, but accepts only 80% of the requested euro amount. Buying the rejected balance at a higher price leaves A $160 more expensive overall. This is not a rejection fee: it is a difference between two execution paths. A different retry price can reverse the result.

A request is not yet a confirmed trade
Last Look gives a quoting participant an opportunity to accept or reject a request before it becomes an accepted trade. Sending the request is therefore different from receiving a fill confirmation; confirmation, in turn, is different from the eventual settlement of the currencies. Last Look should not be described as a right to undo an already validly accepted transaction.
The FX Global Code treats it as a price and validity check, including operational details and available credit. Disclosures should explain its purpose, how price movements affect acceptance and the usual response interval. The Code is a wholesale-market good-practice framework, not a substitute for applicable law or a universal deadline measured in milliseconds.
For a euro buyer, an offer of $1.10002 per euro is lower than $1.10006. That does not establish which provider has the narrower two-way spread: the bid has not been supplied. Nor does it make a conditional quote equivalent to sufficient, confirmed execution at that price.
Compare the cash needed to buy the entire €10 million
Both hypothetical routes buy the same euros for the same value date. Equal fees and short-term funding effects are excluded. A decision-time reference of $1.10000 per euro is used only as a cost benchmark; it is not assumed to be executable for the full amount. One pip here is $0.0001 per euro.
Under A, a batch of first requests at 1.10002 results in €8 million of accepted trades and €2 million explicitly rejected. The rejected balance is then bought in full at 1.10030. The 80% acceptance rate is measured across the batch by euro amount; it is not an assumption that an individual all-or-none request can be partially accepted.
B is an alternative that, at the original decision time, has enough available liquidity and credit to execute the entire €10 million at 1.10006. This is an explicit counterfactual for comparing the choice of route, not a claim that a real quote remains available indefinitely. The two complete outcomes are alternative model paths, not two observable executions of the same real order.
| Route | Initial EUR filled | Initial USD per EUR | Retry EUR filled | Retry USD per EUR | Total USD paid | Completed average USD per EUR |
|---|---|---|---|---|---|---|
| A: retry rejected balance | 8,000,000 | 1.10002 | 2,000,000 | 1.10030 | 11,000,760 | 1.100076 |
| B: full direct execution | 10,000,000 | 1.10006 | 0 | Not applicable | 11,000,600 | 1.100060 |
A pays $8,800,160 for the first €8 million and $2,200,600 for the remaining €2 million: $11,000,760 in total. B pays $11,000,600. A's initially better offer produces a completed average 0.16 pip worse than B's, costing an extra $160.
The accepted portion really does save $320 against B's price. But the retried portion costs $480 more than that same benchmark. Reporting the $320 saving alone would omit the part of the economic task that proved harder to execute. Subtracting the saving from the additional cost produces the $160 difference.
The same acceptance rate can produce a saving or an extra cost
Keep A's initial quote, initial filled amount and rejected amount unchanged. Change only the price at which the balance is subsequently completed. The following are independent scenarios, not probabilities or forecasts.
| A retry price: USD per EUR | A total USD paid | A completed average: USD per EUR | Extra USD paid versus B |
|---|---|---|---|
| 1.10030 | 11,000,760 | 1.100076 | +160 |
| 1.10010 | 11,000,360 | 1.100036 | −240 |
| 1.09990 | 10,999,960 | 1.099996 | −640 |
At a retry price of 1.10010, A saves $240 versus B. At 1.09990, it saves $640. Rejection leaves the customer exposed while the purchase remains incomplete, but that exposure does not guarantee an adverse movement. Neither “rejections always cost money” nor “a higher acceptance rate is always cheaper” is a sufficient decision rule.
An ex-ante estimate needs the execution price conditional on rejection and the time required to complete the balance. An unconditional market-price average is not a substitute. Nor should an evaluator select the most favourable of these paths after the event. If the purchase has a firm deadline, a route that cannot complete in time may fail the mandate regardless of its attractive quoted price.
Calculate how much rejection the initial price advantage can absorb
Let a be the first price, j the price of one complete retry and q the fraction of the original euro amount rejected initially. The completed average is P = (1 − q)a + qj. The denominator for q is the original currency demand, not the number of messages sent. A rejected request creates no fill cash flow of its own.
With a = 1.10002, j = 1.10030 and B's price b = 1.10006 held fixed, setting P equal to b gives q = (b − a)/(j − a) = 1/7, approximately 14.285714%. A is no more expensive when the rejected-volume fraction is at or below 1/7. Equality is a tie; only a larger fraction makes A dearer in this model. The assumed 20% rejection exceeds that threshold.
This is a price-dependent break-even calculation, not a compliance standard or an acceptable industry rejection rate. Different fees, further retries, incomplete demand or another retry price require a new calculation. When j is no higher than a, the adverse-retry threshold should not be applied mechanically.
Also keep the benchmarks separate. A costs $760 more than the 1.10000 reference, equivalent to an average price 0.76 pip higher. It costs only $160 more than B. Distance from a reference price and the difference between available execution choices are not interchangeable findings.
Counting requests can hide the majority of the currency amount
Suppose 90 requests for €100,000 each are accepted and ten requests for €1 million each are rejected. Acceptance by request count is 90%. Yet €10 million out of the original €19 million, or approximately 52.631579%, has been rejected. Both statistics are valid; their denominators answer different questions.
Routing the same €2 million demand to three venues does not create €6 million of economic demand. Preserve separate identifiers for the parent requirement, every request and the final fills. Otherwise repeated attempts can inflate the denominator, conceal a rejected balance or be mistaken for new investment decisions.
A request still awaiting a response is not automatically rejected. If the original request is later accepted and a replacement also fills, the customer can buy more euros than intended. Timeout, explicit rejection and confirmed cancellation must remain separate states. The applicable response and cancellation protocol matters before another order is released.
Separate a fair comparison from evidence of misconduct
A route handling small requests in quiet markets is not directly comparable with one handling large, urgent requests during announcements. Match currency pair, direction, value date, size, credit, volatility, timing and urgency before comparing completed costs and long response times. A convenient quote screenshot chosen afterwards is not an adequate benchmark.
Check the disclosed treatment of favourable and adverse price movements, price improvement and response timing against request-level records. Symmetric validation does not automatically promise that every favourable movement is passed to the customer. Unusual delays or adverse moves after rejection merit investigation, but a low acceptance rate or a single unfavourable outcome does not establish abuse. Market conditions, connectivity, credit and the requests themselves can affect results.
All currency demand is completed in this example, so no separate unfilled-opportunity-cost charge is added. If some demand remains unmet, specify a common evaluation endpoint instead of deleting it from the analysis; the full-order execution-cost and unfilled-opportunity-cost framework explains that distinction. Do not count a price movement once in the retry cash flow and then add the same movement again as another loss.
Five checks before relying on a cheaper quote
- Identify the commitment: distinguish a request still subject to acceptance from a confirmed trade, and check eligible size, credit and value date.
- Fix the economic requirement: record currency amount, direction, completion deadline and benchmark, linking every attempt to the original demand.
- Keep the event trail: retain quotes, requests, responses, acceptances, explicit rejections and confirmed cancellations; do not discard unresolved exposure.
- Reconcile the completed amount and cash: include all fills and differential fees, report count and volume statistics separately, and count each price effect once.
- Compare matched samples: assess repeatable completion costs and tail outcomes alongside the disclosed process, rather than choosing a route on one lucky retry or a flattering acceptance rate.
The useful question is not simply how cheap the first quote looks. It is how much of the requirement that price actually covers, and what it costs to complete the rest. An auditable chain from request status to remaining demand and final cash is what turns a quoted advantage into a demonstrated saving.


