Broker slippage: how to calculate your execution drag
A forex order can be filled at a price different from the requested price. The difference is slippage. It is measured in pips, percentage deviation, or account currency. The resulting cost is execution drag.
Evan Hayes·Updated: August 15, 2026·15 min read

A broker review that excludes slippage measures the quoted market, not the executed market. Spread data shows the price available before order submission. Slippage data shows the price received after submission. The distinction affects scalping systems, news strategies, Expert Advisors, and any model with a low expected edge.
The forex broker slippage calculation formula is direct:
Slippage in pips = (Execution Price − Requested Price) × 10,000
The formula applies to standard four-decimal currency pairs. For Japanese yen pairs, the pip convention differs. The calculation must use the pair’s pip size rather than applying 10,000 without adjustment.
The mechanics of execution drag
Slippage occurs when the requested price and the available executable price diverge between order creation and fill. The broker is not the only variable. Market liquidity, order type, routing latency, price-feed updates, and volatility all affect the result.
A market order does not reserve a fixed price. It requests execution at the best available price under current conditions. If the best offer moves before a buy order reaches the liquidity provider, the fill can be higher. If the best bid moves before a sell order reaches the market, the fill can be lower.
The main sources are:
- Volatility. Bid and ask prices can move several updates during the interval between order submission and execution.
- Liquidity. A thin order book can contain insufficient volume at the requested level.
- Latency. The order may pass through the trading terminal, broker server, bridge, and liquidity provider before execution.
- Order size. A larger order can consume several price levels.
- News conditions. Economic releases can remove displayed liquidity and widen the executable range.
- Broker execution rules. A dealing-desk model, STP model, and ECN model can apply different routing and fill logic.
- Platform architecture. Terminal-side processing, server distance, API design, and bridge configuration can alter the time to fill.
The relevant variable is not whether the broker advertises an ECN or STP model. The relevant variable is the distribution of executed prices under defined test conditions.
Slippage is an execution variable. It is not proof of broker misconduct and it is not proof of broker quality.
Positive and negative slippage
Slippage has two directions.
For a buy order:
- A fill above the requested ask is negative slippage.
- A fill below the requested ask is positive slippage.
For a sell order:
- A fill below the requested bid is negative slippage.
- A fill above the requested bid is positive slippage.
A raw price-difference formula does not capture this directional distinction unless the order side is included. A measurement system should normalize the result so that positive values represent a worse fill and negative values represent a better fill.
For a buy:
Directional slippage = Execution Price − Requested Price
For a sell:
Directional slippage = Requested Price − Execution Price
The normalized result can then be converted into pips. Positive values indicate execution cost. Negative values indicate price improvement.
Limit orders change the constraint. A limit order restricts execution to the specified price or better. It removes the risk of negative slippage. It does not guarantee execution. If the market does not reach the limit price, or available liquidity is insufficient, the order can remain unfilled.
A stop order has different behavior. When triggered, it generally becomes a market order or a broker-defined executable order. It can therefore experience negative slippage during a price gap or liquidity reduction.
Quantifying slippage in pips and percentage terms
The first measurement is the difference between the intended and actual prices.
For a four-decimal pair:
Slippage in pips = (Execution Price − Requested Price) × 10,000
Illustrative example:
- Requested buy price:
1.08420 - Actual fill:
1.08427 - Price difference:
0.00007 - Slippage:
0.7 pips
The value is not yet a monetary cost. It only describes price displacement. The monetary impact depends on position size and the pip value of the instrument.
A percentage measure provides a scale-independent view:
Slippage % = [(Execution Price − Expected Price) / Expected Price] × 100
For a directional audit, the same buy and sell normalization should be applied before calculating the percentage. A raw negative result for a sell order can otherwise be misclassified as a favorable fill.
The percentage is useful when comparing different currency pairs or instruments with different price levels. The pip value is more useful for measuring trading cost. Both should be retained.
Measurement fields
A broker slippage log should contain at least these fields:
- Order ticket.
- Symbol.
- Order side.
- Order type.
- Requested price.
- Bid and ask at submission.
- Execution price.
- Order volume.
- Submission timestamp.
- Broker-server timestamp.
- Fill timestamp.
- Execution status.
- Requote or rejection status.
- Spread at submission.
- Spread at execution, if available.
- Strategy identifier.
- Market session.
- News-event flag.
- Positive or negative slippage classification.
The timestamps must use one time standard. Server time and local terminal time should not be mixed. The same timestamp discipline used when reconciling event data with tournament schedules and match results is applicable here: the record is only useful when the event sequence is ordered correctly.
How to measure slippage in MT4
MetaTrader 4 does not provide a complete broker-quality report by default. The required values must be reconstructed from order history, execution records, and, where available, tick data.
For a closed or opened order, the minimum process is:
1. Export the order history from MT4.
2. Record the order type and side.
3. Identify the requested price.
4. Identify the actual fill price.
5. Apply the pair-specific pip factor.
6. Normalize the sign by order direction.
7. Group results by symbol, session, order type, and strategy.
8. Calculate mean, median, standard deviation, and tail percentiles.
9. Separate ordinary conditions from news and low-liquidity periods.
10. Compare results against the broker’s execution report.
The MT4 history may not preserve the exact market snapshot that existed at the time of submission. This creates a measurement limitation. The open price in the order record is the actual fill, but the requested price may have been generated locally by an Expert Advisor or recorded only in its log.
For an Expert Advisor, the intended price should be written to a local file or database at the moment of order submission. The record should include the terminal timestamp and a unique order identifier. Without this field, a later slippage calculation can confuse spread movement with execution slippage.
A robust MT4 implementation should distinguish:
- Requested price generated by the strategy.
- Bid or ask observed by the terminal.
- Price sent in the order request.
- Price accepted by the broker.
- Final execution price.
- Time spent between request and fill.
These are not always identical. A strategy may request the current ask, while the market changes before the broker receives the request. A backtest that uses the bar open or close as the intended price cannot reproduce this sequence.
From pips to account currency
Execution drag becomes economically relevant after position size is applied.
The basic formula is:
Execution Drag = (Intended Entry Price − Actual Fill Price) × Position Size
For a buy order with negative slippage, the actual fill is higher than the intended entry. For a sell order, the directional price difference must be normalized before multiplying by volume.
Illustrative example for a EUR/USD buy order:
- Intended entry:
1.08420 - Actual fill:
1.08427 - Difference:
0.00007 - Position size:
100,000units - Execution drag:
0.00007 × 100,000 = 7quote-currency units
The same trade can also be expressed as 0.7 pips. The currency value depends on the quote currency and account conversion rate.
A slippage cost calculator for forex should therefore accept:
- Currency pair.
- Order side.
- Intended price.
- Actual fill price.
- Position size.
- Account currency.
- Quote-currency conversion rate.
- Pip size.
- Commission, if total execution cost is required.
- Spread, if the calculation covers all entry costs.
Slippage is only one component of execution drag. A complete cost model can be represented as:
Total Execution Cost = Spread Cost + Commission + Negative Slippage + Financing Effects
The formula must avoid double counting. If the requested price already includes the ask for a buy or the bid for a sell, the spread treatment differs from a model based on the mid-price.
Example of aggregated cost
Assume a strategy completes 1,000 trades. The average negative slippage is 0.4 pips per trade. The average pip value is 10 account-currency units per standard lot. The average position size is one standard lot.
The slippage component is:
0.4 × 10 × 1,000 = 4,000 account-currency units
This is an illustrative calculation. It does not estimate a market-wide average. The result depends on the recorded sample, pair, volume, and trading conditions.
A strategy with a gross expectancy of 0.6 pips per trade can be invalidated by 0.4 pips of average negative slippage before spread and commission. A strategy with a gross expectancy of 4.0 pips has a different tolerance. Execution drag must be compared with expectancy, not assessed in isolation.
Distribution matters more than the average
The mean can conceal tail exposure. A strategy may record low average slippage while suffering large losses during a small number of high-volatility events.
The report should include:
- Mean directional slippage.
- Median directional slippage.
- Standard deviation.
- Minimum and maximum.
- 90th, 95th, and 99th percentile.
- Share of trades with positive slippage.
- Share of trades with negative slippage.
- Separate buy and sell results.
- Separate market, limit, and stop orders.
- Results by session.
- Results during news windows.
- Results by order volume.
A useful broker comparison is not a single average. It is a distribution under the same order-generation process.
| Metric | Broker A | Broker B |
|---|---|---|
| Mean negative slippage | 0.32 pips | 0.21 pips |
| Median slippage | 0.18 pips | 0.11 pips |
| 95th percentile | 1.40 pips | 1.05 pips |
| Positive-slippage share | 14% | 19% |
| Stop-order tail | 3.8 pips | 2.9 pips |
The table is a reporting format, not a market benchmark. The numbers must come from the same symbol, strategy, position size, time window, and execution environment. Comparing a EUR/USD scalping sample at London open with a GBP/JPY swing sample is not a broker test.
The broker with the lowest average slippage is not necessarily the broker with the lowest execution cost. The tail and the strategy interaction determine the result.
Broker testing and execution evidence
An average slippage forex broker test requires controlled sampling. Random screenshots of favorable or unfavorable fills have no statistical value. The sample must identify the conditions under which the orders were submitted.
The test design should define:
- Instrument set.
- Order volume.
- Order type.
- Trading sessions.
- Holding period.
- News-event treatment.
- Terminal and server location.
- Internet connection.
- API or platform path.
- Requested-price source.
- Minimum sample size.
- Exclusion rules.
- Statistical outputs.
The same strategy should be sent through each broker. A broker comparison based on different Expert Advisor settings measures different systems.
Market orders
Market orders are the primary source of slippage exposure. They are suitable for measuring fill quality because they interact with available liquidity. The test should record the intended price immediately before submission and the actual fill.
Latency should be recorded at several levels if the infrastructure allows it:
- Strategy decision time.
- Terminal request time.
- Broker-server receipt time.
- Liquidity-provider routing time.
- Final fill time.
A single round-trip latency value is less informative than a timestamp sequence. It does not identify where the delay occurred.
Limit orders
Limit orders restrict price but introduce non-execution bias. If the test counts only filled limit orders, it can overstate execution quality. The unfilled orders are part of the result.
The report should therefore separate:
- Fill rate.
- Time to fill.
- Positive price improvement.
- Cancellation rate.
- Missed trade opportunity.
- Slippage on any partial or transformed execution.
A limit order with zero negative slippage but a low fill rate is not equivalent to a market order with moderate slippage and near-complete execution.
Stop orders
Stop orders require a separate report. The relevant event is not only the requested stop level. It is the market state at trigger time and the available price at fill time.
During a gap, the next executable price can be materially different from the stop level. An ECN or STP label does not guarantee zero slippage on market orders during extreme news conditions. The liquidity event remains the controlling variable.
Backtest limitations
Historical backtests usually model execution with a fixed spread, a defined slippage input, or an assumed fill at the requested price. These methods do not reproduce broker-specific execution distributions.
A backtest can therefore produce:
- Lower drawdown than live trading.
- Higher trade frequency than live trading.
- Higher expectancy than live trading.
- Lower stop-loss deviation than live trading.
- No representation of rejection or requote behavior.
- No representation of liquidity exhaustion.
A live forward test should be used to estimate actual execution drag. The test still has limits. Market regime, broker infrastructure, account tier, order volume, and liquidity conditions can change. A result from one month is not a permanent broker property.
Regulatory standards and best-execution disclosure
Regulated brokers in the European Union and United Kingdom operate under best-execution requirements. MiFID II rules took effect in 2018. ESMA and the FCA require regulated firms to maintain execution policies and disclose execution-quality information.
The disclosures can include:
- Execution venues.
- Order-routing arrangements.
- Factors used to select execution venues.
- Price and cost considerations.
- Speed and likelihood of execution.
- Execution quality metrics.
- Slippage information, where applicable.
These documents are useful, but they do not replace account-level testing. A published execution-quality report can cover an aggregate client population, a defined asset class, and a reporting period that does not match the strategy under review.
The audit should compare three records:
1. The broker’s best-execution policy.
2. The broker’s execution-quality disclosure.
3. The account’s order-level execution history.
A mismatch is not automatic evidence of a breach. It is a reason to inspect order types, conditions, and the broker’s stated methodology.
A broker can disclose positive and negative slippage while still producing a cost profile that is unsuitable for a low-margin strategy. Conversely, a broker with higher average slippage can produce acceptable results for a strategy with wider stops and lower turnover.
Managing slippage risk
Slippage cannot be removed from market-order execution. It can be constrained, measured, and included in system optimization.
Slippage tolerance
Some platforms and APIs provide a slippage parameter or tolerance threshold. The threshold defines the maximum acceptable deviation from the requested price. A tolerance may be expressed in points, pips, or percentage terms, depending on the interface.
A percentage threshold can be represented as:
Maximum deviation = Expected Price × Slippage Tolerance
A configured tolerance of 0.1% to 1.0% is only an example of the parameter’s form. The correct value depends on the instrument, order type, volatility, and strategy expectancy. A threshold that is too narrow can increase rejections and missed entries. A threshold that is too wide can convert a trade with positive expectancy into a negative one.
The system should record whether an order:
- Filled within tolerance.
- Filled with a rejected tolerance.
- Was requoted.
- Was partially filled.
- Was cancelled.
- Was resubmitted.
- Was filled after a delay.
Resubmission logic can create selection bias. A strategy that retries after rejection may receive a worse price while recording only the final fill. The retry count and elapsed time must remain in the data.
Execution rules for automated systems
An algorithmic system should define execution rules before optimization. Parameters can include:
- Maximum tolerated slippage.
- Maximum request latency.
- Maximum spread.
- News-event block window.
- Maximum position volume per order.
- Partial-fill treatment.
- Retry count.
- Order cancellation time.
- Stop-order handling.
- Session-specific restrictions.
These rules should be tested out of sample. If slippage tolerance is optimized on the same period used to assess profitability, the result is vulnerable to overfitting.
Optimization should measure net performance after execution drag. A parameter set that maximizes gross profit but creates high sensitivity to a 0.2-pip fill deviation is not robust. The more relevant test is the stability of drawdown, expectancy, and trade frequency under a range of slippage assumptions.
Separate normal and stress conditions
Execution reports should contain at least two regimes:
- Normal liquidity.
- Stress liquidity.
Normal conditions can cover routine trading periods. Stress conditions can include major economic releases, market open, rollover, gaps, and sudden volatility expansion.
Combining both regimes into one average hides operational risk. A strategy that blocks news trading may not need the same tolerance as a strategy that trades scheduled releases. The broker comparison must match the intended operating window.
A strict risk-reward interpretation
Execution drag reduces the expected value of every trade. The relevant equation is:
Net Expectancy = Gross Expectancy − Spread − Commission − Expected Negative Slippage − Other Trading Costs
The result should be evaluated with variance and drawdown. A small mean cost with a large standard deviation can produce unstable equity changes. A moderate mean cost with a narrow distribution can be easier to model.
The final broker assessment should answer five questions:
- What is the mean directional slippage by order type?
- What is the standard deviation and upper-tail slippage?
- What monetary cost does the distribution create at the intended position size?
- How does the cost compare with strategy expectancy?
- Does the result remain valid after stress conditions and backtest limitations are included?
A broker review that reports only spread is incomplete. A broker review that reports only average slippage is also incomplete. Execution quality is a distribution of outcomes conditioned by symbol, order type, volume, latency, and market state.
The practical conclusion is strict. Market orders expose the system to negative and positive slippage. Limit orders constrain price but add non-execution risk. Stop orders can produce tail losses during gaps. Regulatory disclosures establish a framework for best execution, but account-level records establish actual performance. The valid measure is not the advertised spread. It is the net execution drag after the order reaches the market.