Why do my forex orders get rejected?
Asked as: why do my forex orders get rejected
A rejection is not an error. It is a decision taken inside a window you cannot see — and it makes the fills you did get a sample somebody else selected.
The short answer
Because your counterparty was allowed to say no. Across much of over-the-counter FX an order does not become a trade on arrival: it enters a short decision window — last look, covered in full in the glossary — and comes out the other side as a fill, a rejection, or a requote. A rejection is that window’s ordinary output, not a malfunction, and the window itself is a disclosed practice with a defensible history the glossary entry walks through.
What the glossary cannot do is read your log. The useful question about your own record is not why was this one declined — it is whether the declines fall evenly, because every one of them was a decision taken by an interested party, on every order, out of your sight, and even-handedness is precisely the property a decision like that cannot be assumed to have.
The Observable Mechanism
From your own platform export, provided it retains rejected orders: the send timestamp, the price you acted on, the outcome, the interval between send and decision, and a reference price for the market across that interval. Most retail exports keep fills and discard everything else — establishing which kind you have is the first finding, and often the only one available.
Why a rejection rate on its own tells you nothing
The number almost everyone reaches for is the share of orders that were declined. On its own it is close to uninformative.
Consider two counterparties, each declining two orders in a hundred. The first declines them without reference to what the market did during the hold. The second declines only where the interim move went against it, and fills every order where the move went its way. Both publish the same rejection rate. They are not the same instrument, and the difference is the entire subject.
What separates them is conditioning. Not how often were you declined, but what was true when you were. A rejection rate is a marginal statistic in a question that is conditional all the way down, which is why a fill ratio quoted without its conditioning is a brochure figure rather than a measurement.
The measurement, step by step
Every step below runs on records you already hold, or reveals that you do not hold them.
- Establish whether your export retains rejections. Filled-only is the common case. If that is what you have, stop and note it: the question is unanswerable from your data, which is a real finding about your instrumentation rather than a failure of the method.
- Recover the hold interval. Send timestamp to decision timestamp, per order. The distribution matters more than the mean — a tail of long holds is a different behaviour from a uniform short one.
- Attach a reference price at both ends of each hold. This is the step that decides whether the exercise is worth anything, and it is the hard part: the comparison needs an independent record of the market across the window, not the same feed whose behaviour is in question.
- Classify each order by interim drift. Did the reference market move in your favour, against you, or not materially, between send and decision?
- Compute the decline rate within each class, and print n on every one. Three conditional rates with their sample sizes, not one headline number. Where your platform records requotes as their own outcome, count them beside the declines in each class — a requote is a third answer, not a subspecies of fill.
- Do the same for hold duration. Compare the distribution for accepted orders against declined ones.
The tell is symmetry. If the three conditional rates from step five sit close together, the window is doing what its disclosure says it does. If the against-your-counterparty class carries most of the declines while the favourable class fills, you now hold a description of one-directional behaviour — three numbers with their sample sizes, stated without any claim about why.
The Survivor’s Fill
Here is the part that survives even if every rejection in your record turns out to be even-handed, and it is the reason this matters beyond one disputed order.
Your fills are a sample somebody else selected. Every trade in your history is there because a counterparty chose to let it be there, in a structure where it could have declined. That makes the filled set a survivor population, and every statistic you compute on it inherits whatever did the selecting.
This is survivorship bias pointed at your own order flow, and it is more awkward than the usual kind, because the selection is not an accident of record-keeping. Where declines fall on one side of the interim drift, the orders removed from your flow are precisely the ones that had already moved your way. What is left — what becomes your fills, your average slippage, your measured execution cost — is the remainder after the good ones were taken out.
None of this shows up in a slippage report. An order that never became a trade contributes no row; its replacement fills at whatever the market has since become; and the difference between the two is booked by nobody, because it is filed under market conditions. That is the defect I am naming the survivor’s fill: not that a fill is wrong, but that a record made only of fills cannot price its own rejections, and will report a cost that is too low by exactly the amount it cannot see.
What This Does Not Establish (The Limits)
This article is method. I have measured and published no rejection data — no rates, no hold-time distributions, no counterparty comparison — and no figure of that kind appears on this page. It names no firm and describes no firm’s arrangements.
It does not establish intent. A one-sided decline pattern is a description of behaviour, not evidence of a decision to behave that way, and nothing in a client-side record can carry that distinction. Nor does it establish that anything improper occurred — last look is disclosed and permitted across much of over-the-counter FX, and the glossary entry covers how the FX Global Code treats it. What a one-sided pattern gives you is a precise question to put to your counterparty’s disclosures, not a verdict.
It also cannot be run at all on a fills-only export, and that is the common case. Status of my own measurements: NOT YET COMPUTED. Hadal carries no affiliate links and takes no commission from any venue.
Where the measured version publishes
Steps one through six are a spreadsheet and an afternoon, and step three is where the afternoon stops being enough. Setting each hold against the market that was actually running during it needs an independent, time-aligned record of that market — and that record, not the arithmetic, is the part no spreadsheet supplies.
No published instrument yet claims the rejection half of this measurement, and I would rather say that plainly than stretch a page to imply otherwise. What is published divides the problem in two. The fills half — signed slippage as a distribution, cost against the quote of record — is the Execution Cost Auditor, whose scope is bounded by what your statements contain: exactly the fills-only boundary this article is about. The reference-record half — an independent, time-aligned journal of what the market was doing during a hold — is the Broker Feed Auditor’s territory, and the subject of is my broker’s feed honest. And the single-event version — one disputed window reconstructed with requote and rejection context where your logs carry it — is the Single-Trade Investigation on the assay desk. Both instruments are pre-launch and carry outputs marked NOT YET PUBLISHED; pattern-level rejection analysis joins the published set when it can carry its receipts, and not before.
If the question you actually have is about one order rather than a pattern, the narrower version is what can a trading statement prove, which is about what a record establishes and what it cannot.
If you want the analysis rather than the spreadsheet: read what the Execution Cost Auditor measures, and the block stating what it does not establish. It is pre-launch and nothing is for sale.
Claims examined
Claim 01§ claim-913d2d5f
My order was rejected because my connection is slow.
A slow connection makes the quote you acted on older by the time it lands, and an older quote is more likely to be declined. So latency is genuinely a factor. What the claim gets wrong is where the decision happens. The order arrived; something at the other end evaluated it and returned a rejection. That is not a dropped packet, and treating it as one sends you to buy a faster line rather than to the record that would tell you how the decision is being made.
Claim 02§ claim-2acd15de
My fill rate is high, so my execution is fine.
An unconditional fill rate answers how often you were accepted, not whether acceptance depended on anything. Both a symmetric process and a strongly one-sided one can produce the same headline percentage — the difference lives in which orders were declined, not how many. Ninety-eight per cent acceptance with the missing two per cent falling entirely on the side where the interim move went against your counterparty is a different instrument from ninety-eight per cent spread evenly, and no single figure distinguishes them.
Claim 03§ claim-1b32f99f
A rejected order costs me nothing, because no trade happened.
The trade did not happen, so no loss appears in the account. That is exactly what makes it expensive: the cost is real and lands nowhere your statement will show it. You re-send, and the second order fills at whatever the market has since become. If declines fall disproportionately where the interim move ran against the party holding the decision, then the orders removed from your flow are the ones that had already moved your way — and the ones that survive to become fills are the remainder.
Each claim above has a permanent address — the § link — whose canonical home is the refutation index, where it carries its variant phrasings and the true proposition stated on its own feet; this article is the evidence behind it. If a claim's text ever changes, it becomes a new claim at a new address, and the old one stops resolving rather than silently meaning something else.
Explore further
Instruments
Research
- What can a trading statement prove?Asked as:
what can a trading statement prove
- Is my broker's feed honest? How to test itAsked as:
is my broker's feed honest
- Do brokers hunt your stop losses?Asked as:
do brokers hunt stop losses by widening the spread