Slippage and broker execution quality: how to audit your fills
Slippage is the difference between the price you requested or benchmarked and the price you actually received. It can occur without any misconduct because of latency, volatility, liquidity and order type. This guide sets out a consistent sign convention for measuring it, a repeatable fill-audit method using your own trade history, and the patterns that justify asking a broker for a timestamped execution explanation.
Slippage is one of the most misunderstood costs in trading. It is often treated either as an unavoidable rounding error or as automatic evidence that a broker is cheating. Both readings are wrong. Slippage is simply the difference between the price you asked for, or the price you chose as a benchmark, and the price at which your order was actually filled. Sometimes that difference works against you. Sometimes it works in your favour. This guide explains why slippage happens, how to measure it consistently, how to build a like-for-like audit of your own fills, and which patterns justify asking your broker for a timestamped execution explanation rather than assuming the worst.
What slippage is and why it can occur without misconduct
When you place a market order, you are asking to trade at whatever price is available when the order reaches the market or the broker's pricing engine. When you place a stop order, the trigger price starts a process; it does not guarantee a fill at that price. Between the moment you click and the moment your order is processed, the displayed price can change. The CFTC's 2013 order concerning FXDirectDealer LLC describes this mechanic directly: latency between a click and order processing can allow a displayed forex price to change before an order is filled. [6]
That gap between display and execution has ordinary causes. Prices move continuously. The depth available at a quoted price may be smaller than your order size. News releases can widen spreads or cause quotes to be withdrawn entirely. Your connection may add delay. None of these causes involves a decision by anyone to disadvantage you. A firm executing over-the-counter products is expected to check proposed prices systematically against market data and comparable products, but the obligation is to maintain working arrangements, not to guarantee that every individual order receives the most favourable imaginable fill. [1] [3] [4]
Positive and negative slippage: one convention, used consistently
Positive slippage means you received a better price than your benchmark. Negative slippage means you received a worse one. To avoid confusion, this guide declares one calculation convention and uses it throughout: adverse slippage is recorded as a positive execution cost. For a buy, adverse slippage equals the fill price minus the requested or chosen benchmark price. For a sell, adverse slippage equals the requested or chosen benchmark price minus the fill price. Under this convention, a positive number means a worse fill relative to the benchmark and a negative number means an improvement. Be aware that some broker reports and third-party tools use the opposite sign convention, so always check which convention a given report uses before comparing numbers.
Requested price, displayed quote, stop trigger and executable benchmark are not the same thing
A common audit error is comparing fills against whichever number happens to be visible in a screenshot. Four different prices are often in play. The requested price is what you typed into the order ticket. The displayed quote is what your platform showed at some moment, possibly not the moment your order was processed. The stop trigger is the level that activates a stop order, not a promised fill level. An executable market benchmark is the price at which the instrument could actually be traded at the time of execution, which may differ from all three of the others. [2] [6]
Choosing your benchmark in advance matters more than choosing it perfectly. If you measure every fill against the displayed quote from your own platform, you are partly measuring your platform's feed rather than the market. If you measure against a chart from a different data source, you must account for differences in feed, timezone and session. Whichever benchmark you choose, declare it once and apply it to every trade in the sample.
What drives slippage: latency, volatility, liquidity and order design
- Latency. Delay between your click, the broker's receipt and processing allows the displayed price to change before filling, as described in the CFTC's 2013 FXDirectDealer order. [6]
- Volatility. Fast markets move between quote updates. ESMA guidance expects CFD execution policies to explain what may happen in volatile markets, including widened spreads, stopped quotes, alternative price sources or execution at the next available price. [2]
- Liquidity. Available size at the best price may be smaller than your order, so part or all of the order fills deeper in the book. [1]
- Order type. Market orders accept the prevailing price; limit orders specify a maximum or minimum but may not fill at all; stops trigger at a level and then execute at the next available price. ESMA's order-handling expectations cover market, stop, take-profit, limit and margin-close-out orders. [2]
- Order size. Larger orders are more likely to exhaust top-of-book liquidity and experience average-price slippage. [1]
- Session and spread regime. Spreads widen outside core trading hours and around news. Out-of-hours pricing behaviour should be disclosed in a firm's execution policy. [2]
- Market gaps. Over weekends or across news events, the first executable price after a gap can sit far from the last displayed quote. [2]
No single factor proves anything on its own. The purpose of listing them is to give you candidate explanations to test when a fill looks unusual, not to provide excuses to dismiss every complaint.
A worked arithmetic example (illustration only)
The following numbers are hypothetical illustrations, not market data, and pip values are not comparable across instruments without contract-size adjustments.
- Buy example. You request a buy at 1.10000. Your fill confirms at 1.10025. Adverse slippage = fill minus requested = 0.00025, which is 2.5 pips on a five-decimal forex quote. If the position is 100,000 units, 0.00025 per unit equals 25 units of the quote currency before any conversion into the account currency.
- Sell example. You request a sell at 1.10000. Your fill confirms at 1.09980. Adverse slippage = requested minus fill = 0.00020, which is 2 pips. On the same 100,000-unit position, that equals 20 units of the quote currency before any conversion into the account currency.
- Positive-slippage example. You request a buy at 1.10000 and fill at 1.09990. Adverse slippage = fill minus requested = -0.00010. Under the declared convention, the negative value records a 1-pip improvement passed to you.
Expressing results in basis points of the traded price can help compare across instruments: 0.00025 on 1.10000 is roughly 2.3 basis points. Raw pip counts alone do not translate cleanly between forex pairs, indices and commodities, so normalise before aggregating.
Building a repeatable fill audit
- Export your complete trade history, including closed and rejected orders where the platform allows it. Keep original files unedited and work on copies.
- Preserve order IDs and ticket numbers so each row can be traced back to a platform record if challenged.
- Record for every order: instrument, side, order type, requested price or defined benchmark, fill price, filled size, spread at the time if recorded, order submission timestamp, fill timestamp, trading session, relevant news or volatility condition, any rejection or requote, and platform plus connection notes.
- Apply the declared sign convention uniformly: adverse slippage positive for buys as fill minus benchmark, for sells as benchmark minus fill.
- Segment the sample into comparable groups by instrument, side, order type, size band, session and volatility regime before computing anything.
- Review distributions, not just averages: look at medians, the share of fills with zero slippage, the share improved, the share worsened, and outliers on both sides.
This method is trader-built record keeping, not a regulatory procedure. It produces evidence to support questions, not conclusions on its own.
Why comparisons must be like for like
Mixing incomparable trades creates misleading results. A sample combining small limit orders placed in quiet Asian-session hours with large market orders placed during a US news release will show wide dispersion that tells you about the sample, not the broker. Compare within groups matched on instrument, side, order type, size, session, spread or volatility regime, and benchmark method. If your platform does not record spread or volatility context, note that limitation explicitly rather than treating unmatched averages as findings.
Isolated bad fill versus persistent pattern
One poor fill can be economically significant to you and still tell you nothing systematic. What justifies investigation is repetition within comparable samples: adverse-only treatment recurring across many similar orders, positive improvements consistently absent where market movement would have made them possible, rejection or requote behaviour that differs depending on whether the move would have helped or hurt you, or observed behaviour that contradicts the disclosed execution policy. Historical enforcement shows regulators have acted on exactly such asymmetry. The FCA's 2014 final notice against Forex Capital Markets Limited records that favourable price movements between order and execution were not passed to customers while adverse movements were, a pattern the notice defines as asymmetric price slippage, and that limit orders were also treated asymmetrically. The CFTC's 2013 FXDirectDealer order similarly records historical asymmetric slippage settings. These cases are dated historical examples of patterns regulators have acted upon. They do not describe current conduct at those firms, any other broker, or a generally applicable statistical threshold. [5] [6]
Note also that neither case implies positive and negative slippage must be numerically equal in fair execution. Markets can move directionally during the measurement window, so asymmetry in raw outcomes can have ordinary explanations. The investigative question is whether treatment differs within genuinely comparable conditions.
Separate benchmark error from execution error
A slippage figure is only as defensible as its benchmark. Before analysing the result, write down exactly which timestamp and side of the quote you use. A buy should normally be compared with an ask-side reference and a sell with a bid-side reference. Comparing both sides with a chart midpoint quietly adds roughly half the spread to one side and removes it from the other. If the reference feed is from another provider, record its clock, timezone and update frequency. A one-minute candle cannot identify the executable price at a particular second, and a screenshot taken after the fill cannot establish what was available when the order arrived. These limitations do not make an audit pointless. They determine how narrowly its conclusions should be stated.
Use a weighted price for partial fills
If an order fills in several parts, calculate its volume-weighted average fill before measuring slippage. As a hypothetical example, 40 units filled at 100.02 and 60 at 100.05 produce a weighted fill of 100.038: add 40 multiplied by 100.02 to 60 multiplied by 100.05, then divide by 100. Comparing only the first or final partial fill can exaggerate either the improvement or the cost. Keep the component fills as well as the weighted result because the sequence may explain whether available liquidity was consumed progressively. For instruments with a contract multiplier, apply that multiplier before reporting cash cost, then record any currency conversion separately.
Read the distribution before interpreting its average
An average can hide the feature you are trying to test. Record the count and share of improved, unchanged and worsened fills, the median signed slippage, and the largest observations on both sides. Then repeat that summary inside each matched group. A small number of volatile-market outliers may move the mean while leaving the typical fill close to zero. Conversely, a near-zero overall mean can combine one group with mostly favourable fills and another with mostly adverse fills. Report both the numbers and the missing context. If rejected orders are absent from the export, say so rather than assuming every attempted trade is represented.
Reading an order execution policy
Your broker's order execution policy is the baseline against which observed behaviour should be compared. Under COBS 11.2A, the policy must explain how orders will be executed, identify relevant venues and factors, answer reasonable client information requests clearly within a reasonable time, and be monitored and reviewed with deficiencies corrected. ESMA guidance adds that a CFD execution policy should explain latency and factors affecting it, how positive and negative price changes are handled, normal execution timing, out-of-hours pricing, volatile-market handling, and identify execution venues or pricing sources by instrument type rather than remaining generic. Software, bridges, plugins and settings should not harm or discriminate against clients. [1] [2]
- Venues and price sources: are they named by instrument type? [2]
- OTC role: does the firm act as counterparty, and how does it check price fairness using market data and comparable products? [1] [4]
- Latency: does the policy explain typical timing and what affects it? [2]
- Positive and negative slippage: does it state how improvements and deteriorations are handled? [2]
- Volatile markets: widened spreads, stopped quotes, next-available-price execution? [2]
- Order cancellation clauses and requote handling. [2]
- Monitoring: does the firm commit to recording timestamps through reception, hedging and client execution, and escalating significant or persistent issues? [2]
Describing a firm as a counterparty to your trades is not itself an accusation. Capacity and hedging choices are business models; whether they produce fair total consideration is a separate question that a trade-level audit can inform but not settle. [1] [2]
Asking for a timestamped execution explanation
If your audit surfaces a pattern worth investigating, put specific questions to the contracting entity named in your account agreement. Ask for a timestamped explanation of identified orders, the version of the execution policy in force at the time, the price source or venue used for each instrument, and the formal complaint route. Under COBS 11.2A the firm must answer reasonable, proportionate information requests clearly within a reasonable time. Keep your requests factual and scoped to identifiable orders. No outcome, redress or regulatory finding can be promised here; the request creates a documented record either way. [1]
Execution-audit checklist
- Export complete trade history and keep order IDs for every transaction.
- Declare one sign convention and apply it to every calculation.
- Choose and document one benchmark method before analysing any fills.
- Segment samples by instrument, side, order type, size, session and volatility regime.
- Review distributions and both-sided outliers, not single worst fills.
- Read the execution policy version in force and list where observed behaviour appears to differ. [1] [2]
- Request timestamped explanations, policy versions and price sources in writing. [1]
- Preserve screenshots, platform logs, connection notes and all correspondence.
Frequently asked questions
- Does slippage mean my broker is manipulating prices?
- No. Slippage is the difference between a requested or benchmarked price and the actual fill, and it can result from latency, volatility, liquidity, order type and session conditions without any misconduct. Only persistent adverse-only treatment within genuinely comparable samples justifies investigation, and even then it is a reason to ask questions, not proof of manipulation.
- How do I calculate slippage with a consistent sign convention?
- Treat adverse slippage as a positive execution cost. For a buy, adverse slippage equals the fill price minus the requested or chosen benchmark price. For a sell, it equals the requested or benchmark price minus the fill price. Some reports use the opposite convention, so always confirm which one applies before comparing figures.
- Why did my stop order fill at a worse price than the trigger?
- A stop trigger activates the order; it does not guarantee a fill at that price. Latency between click and processing can allow the displayed price to change before filling, and in fast or gapped markets the policy may provide for execution at a next available price. Execution policies are expected to disclose this behaviour for volatile conditions.
- What is asymmetric slippage and why does it matter?
- Asymmetric slippage is an arrangement in which favourable price movements between order and execution are withheld from clients while adverse movements are passed on. The FCA's 2014 final notice against Forex Capital Markets Limited records this pattern historically, and the CFTC's 2013 FXDirectDealer order records similar settings. These are dated enforcement examples, not descriptions of current conduct at any firm.
- How many trades do I need before I can conclude something is wrong?
- There is no fixed sample size or ratio that proves wrongdoing. What matters is comparability: segment trades by instrument, side, order type, size, session and volatility regime, then examine distributions within matched groups. A mixed sample can create a misleading result regardless of its size.
- What should I ask my broker for if I suspect an execution problem?
- Ask the contracting entity for a timestamped explanation of the specific orders concerned, the version of the order execution policy in force at the time, the price source or venue used for each instrument, and the formal complaint route. Firms regulated under COBS 11.2A must answer reasonable, proportionate information requests clearly within a reasonable time, though no particular response or redress can be guaranteed.