Trading costs

Slippage in trading: separate the spread, the trigger and the price you got

Author · Editor

Reviewed

Layers of pale stone, teal metal and translucent glass separated to reveal their structure.

A price on the screen is not an execution receipt. Follow a hypothetical forex order through several price levels, calculate its average fill and see which part of the difference is spread, slippage or a change of benchmark.

The essentials

  1. Spread compares Bid and Ask at one moment. Slippage compares an execution with a specified earlier price.

  2. A larger order can fill at several prices. Calculate the average using executed quantities, not a simple average of price levels.

  3. A stop is a trigger, a limit is a price restriction, and neither is proof that the whole position has closed.

What is slippage in trading?

Slippage is the difference between an execution price and the price used as the reference when an order was submitted or assessed. The reference matters: a quoted Ask, a quoted Bid, a stop trigger and a chart's last price are different numbers. State which one you are comparing before calling the difference a cost.

For a purchase, paying more than the reference is adverse; paying less is an improvement. For a sale, receiving less is adverse and receiving more is an improvement. The terminology applies to opening and closing trades: closing a short position is a purchase, not a sale.

The SEC's order-type overview distinguishes market execution from the last displayed trade price. Its examples concern securities. This guide uses hypothetical EUR/USD prices to explain the arithmetic, without claiming that stock-market routing rules or a particular broker's execution policy apply to every forex account.

Slippage vs spread: two different comparisons

Bid is the quoted selling side and Ask the buying side; their difference is the spread. OANDA's explanation of Bid and Ask sets out that distinction. A quote also needs a time and an available quantity: a displayed price is not an unlimited commitment to execute any order size.

Measure

What it compares

Example in this guide

Quoted spread

Ask − Bid at the reference time

(1.1002 − 1.1000) ÷ 0.0001 = 2 pips

Adverse buy slippage

Average buy fill − reference Ask

(1.10036 − 1.1002) ÷ 0.0001 = 1.6 pips

Buy shortfall versus midpoint

Average buy fill − reference midpoint

(1.10036 − 1.1001) ÷ 0.0001 = 2.6 pips

Scroll sideways to compare all columns ↔

Our reference quote is Bid 1.1000 and Ask 1.1002, with midpoint 1.1001. A purchase exactly at 1.1002 has zero slippage against that Ask, while still sitting 1 pip above the midpoint. Calling the whole midpoint difference “slippage” would hide the spread component.

For one execution, midpoint shortfall = half the reference spread + adverse slippage against the reference side. Adding the full spread to that slippage would double-count half the spread under this benchmark. This is not a round-trip trading-cost formula.

How to calculate slippage for a buy or a sell

We use EUR/USD, a USD account and a pip size of 0.0001. Quantity means units of EUR. These assumptions make the currency arithmetic explicit; a different pair, account currency or contract specification requires its own conversion.

  • Buy adverse slippage in pips = (average fill − reference Ask) ÷ 0.0001.
  • Sell adverse slippage in pips = (reference Bid − average fill) ÷ 0.0001.
  • Dollar slippage = adverse slippage in pips × 0.0001 × executed EUR units.

A 100,000 EUR purchase at an average 1.10036 versus Ask 1.1002 has 1.6 pips of adverse slippage, or $16. In the mirrored sale, an average 1.09984 versus Bid 1.1000 produces the same 1.6 pips and $16. Using the buy formula for that sale would reverse the meaning of the sign.

Our calculation uses positive numbers for adverse cost and negative numbers for improvement. That sign convention is different from the everyday phrase “positive slippage”, which usually means a better fill. Keep the formula and label together when comparing reports.

Why order size changes the average execution price

Suppose the execution snapshot offers 20,000 EUR at 1.1002, 40,000 at 1.1003 and 90,000 at 1.1005. A hypothetical market purchase of 100,000 EUR consumes the first two levels and 40,000 EUR from the third. The best displayed price alone cannot describe this receipt.

Executed EUR units

Execution price

USD paid

20,000

1.1002

$22,004

40,000

1.1003

$44,012

40,000

1.1005

$44,020

100,000 total

1.10036 weighted average

$110,036

Scroll sideways to compare all columns ↔

The average fill is the sum of price × executed quantity divided by total executed quantity. Here, $110,036 ÷ 100,000 EUR = 1.10036 USD per EUR. Giving each price level equal weight would be wrong because the quantities differ. This is a volume-weighted average of this order's fills, not a market-wide daily VWAP indicator.

MetaTrader 5's depth-of-market documentation illustrates orders filled from multiple offers and distinguishes exchange depth from broker-provided OTC depth. The ladder here is synthetic, not a live order book or a promise that the quantities shown in a terminal remain available until an order arrives.

Inspect the execution receipt, not just the headline quote

Choose “Buy EUR”, “Several price levels” and 100,000 EUR to reproduce the $16 slippage example. The reference half-spread contributes another $10 against midpoint, for a $26 shortfall on that single execution. Switch to “Sell EUR” to see why the formula reverses, then compare the improvement and gap scenarios.

The reference quote comes before the hypothetical execution snapshot. The two are not simultaneous quotes. Prices and quantities are fixed within each snapshot; the model consumes available levels in price order and stops when either the requested quantity or the displayed depth is exhausted. It does not simulate latency, queue priority, cancellations, hidden liquidity or a broker's fill policy. Commissions, financing, currency conversion and a later exit are excluded.

Try 200,000 units: only 150,000 are available in each snapshot, so 50,000 remain unfilled. Average price and dollar comparisons describe the filled part only. The remainder has no execution price in this model; it is not a free or completed trade.

Try it yourself

Execution receipt

Where did the execution cost come from?

Choose a side and size. Follow the available price levels into a volume-weighted fill, then separate half-spread from signed slippage.

The best execution price matches the earlier quote. Larger orders also consume worse levels.
Order side

The quote before execution

Initial Bid
1.1000
Initial Ask
1.1002
Initial mid
1.1001

Full quoted spread2.00 pips

EUR/USD · USD account · 1 pip = 0.0001. The earlier quote and the execution snapshot are different observations.

The modelled fill

Fully filled in this snapshot

Requested · EUR
100,000
Filled · EUR
100,000
Unfilled · EUR
0
Volume-weighted fill price
1.10036
Slippage benchmark · Initial Ask
1.1002
  • 20,000 EURPrice · USD/EUR:1.1002
  • 40,000 EURPrice · USD/EUR:1.1003
  • 40,000 EURPrice · USD/EUR:1.1005

A buy is compared with the initial Ask. A higher fill is worse; a lower fill is better.

Inspect the execution levels
Scroll horizontally to inspect prices and quantities.
Inspect the execution levels
Price · USD/EURAvailable · EURFilled · EURShare of total fill
1.100220,00020,00020%
1.100340,00040,00040%
1.100590,00040,00040%

Cost relative to the initial mid

Half of the quoted spread
+10.00 USD1.00 pips
Signed adverse slippage
+16.00 USD1.60 pips
Total deviation from mid
+26.00 USD2.60 pips

Half-spread + signed slippage = deviation from mid. One execution, calculated on filled units only.

Positive = worse price relative to the stated benchmark. Negative = better price. These amounts are not a trading profit or loss.

The slippage component captures the fill beyond the initial side quote. It can include both a changed snapshot and walking through deeper levels.

Buy EUR. Filled · EUR: 100,000. Unfilled · EUR: 0. Volume-weighted fill price: 1.10036. Total deviation from mid: +26.00 USD.

Assumptions and calculation

BUY: (VWAP − initial Ask) / 0.0001. SELL: (initial Bid − VWAP) / 0.0001.

Synthetic EUR/USD prices and EUR quantities; USD account. No fees, commission, financing, currency conversion or closing trade. The initial quote is a benchmark before execution, not a promise that its size or price remains available.

The selected side consumes listed levels in price order. Each preset has 150,000 EUR of available depth. A request for 200,000 EUR therefore leaves 50,000 EUR unfilled. The model does not predict when, whether or at what price that remainder could execute.

VWAP = sum of fill price × filled units / total filled units. Buy slippage compares VWAP with the initial Ask; sell slippage compares the initial Bid with VWAP. Half-spread is measured from the initial mid, so one execution does not incur the full quoted spread in this decomposition.

USD amounts use filled units and unrounded fill calculations; displayed VWAP is rounded. Prices are snapshots, not a live order book. Queue position, latency, rejections, changing liquidity and order-type rules are omitted. This is not a broker execution simulator or a recommendation of order size.

Positive slippage means an improvement, not a guaranteed profit

IG's forex lesson describes both better and worse fills relative to an expected price. In our improvement scenario, a purchase of 50,000 EUR fills at 1.1001 after the earlier Ask of 1.1002. That is 1 pip better, a $5 improvement, and −1 pip under our adverse-cost convention.

Because 1.1001 is also the original midpoint, this example's midpoint shortfall is zero: the $5 improvement offsets the $5 reference half-spread contribution. It does not establish a profitable position. A later exit, commissions, financing and subsequent market movement remain outside this calculation.

A single favourable or adverse execution is also insufficient to rank a broker. Comparisons need a consistent reference, timing, instrument, order type and size, including the orders that did not execute.

Why a stop can trigger at one level and fill elsewhere

A conventional stop-market order activates market execution when its trigger condition is met. The FINRA explanation of stop-order risks warns that the resulting fill can differ substantially from the stop. A stop level is not a reserved price or a guaranteed maximum loss.

Imagine a sell stop at 1.0995, following an earlier Bid of 1.1000. The next execution snapshot begins at Bid 1.0994. Assume that this quote satisfies the platform's trigger rule. In our 100,000-unit gap sale, the average fill is 1.09908. The difference is 4.2 pips below the stop, but 9.2 pips below the earlier Bid.

Those are two comparisons of the same fill, not two costs to add together. The calculator measures against the earlier quote; it does not simulate a stop order. Check the actual trigger reference separately, since a chart's last price and a broker's trigger input may differ. Our trailing stop-loss vs trailing stop-limit guide explores that distinction in more detail.

Does a limit order remove slippage?

A buy limit restricts purchases to the limit price or lower; a sell limit restricts sales to that price or higher. It does not require an exact price match. The SEC's stop and stop-limit bulletin explains the corresponding trade-off: a price restriction can prevent execution.

A limit therefore bounds the acceptable execution price under its order terms, while leaving uncertainty about whether and how much will fill. A better fill is still possible. A rejection, expiry or unfilled remainder cannot be recorded as zero slippage and then treated as a successfully completed exit.

In the depth scenario, requesting 200,000 EUR fills 150,000 and leaves 50,000 unfilled. The filled part has $31 of adverse slippage against the reference Ask and a $46 shortfall against midpoint. Multiplying those per-unit differences by the requested 200,000 would invent an execution for the remainder. A real order's remaining quantity follows its fill and time-in-force rules; our snapshot simply stops.

Add execution differences to the right cost and risk calculation

Choose the benchmark before combining numbers. A single execution against midpoint, an immediate buy-and-sell comparison, and realised profit after an eventual exit answer different questions. A spread already included in a tool's model should not be added a second time under another label.

Use the forex spread calculator to inspect the cost associated with entered spread and size assumptions. Use the position-size calculator to explore a chosen monetary risk amount and stop distance. Neither makes future execution certain; read which costs and conversions each calculation includes.

A stop-based risk estimate can differ from the realised loss when the fill differs from the assumed exit. Account-level constraints are another layer: the trailing drawdown guide explains why a loss threshold is not the same as an order that will close a position at that level.

How to compare execution policies without a “zero slippage” shortcut

Start with the exact account entity, instrument and platform. Ask how market and stop orders are priced, how price improvement is handled, what a displayed depth figure represents and what happens when the requested size cannot fill. A spread advertisement alone does not answer those questions.

The review routes below are starting points for checking platforms and costs. Their inclusion is not a ranking of execution quality, and it does not establish lower slippage or support for a particular order. Read current documentation for your own account instead of treating a general broker score as a fill guarantee.

Compare MT5 brokers

Compare platforms and account conditions, then verify the exact trailing and execution rules.

AvaTrade

AvaTrade review

Review platform choices and costs. Confirm order behaviour for the specific account and instrument.

FP Markets

FP Markets review

Check platforms, account conditions and costs before asking about the required order type.

IC Markets

IC Markets review

Review platform choices and costs. Confirm order behaviour for the specific account and instrument.

What to record when an execution looks wrong

  • The instrument, account currency and quantity units, including the requested and executed amounts.
  • The reference Bid and Ask with their timestamp; record whether the chart shows Bid, Ask, midpoint or last trade.
  • The order type, side, submission time and any stop, limit, fill-policy or expiry settings.
  • Every fill's price, quantity and timestamp, plus the final order status and remaining position.
  • Commissions and other charges separately from price differences; use the same benchmark throughout the comparison.

Then calculate the quantity-weighted fill and ask the broker to explain any remaining discrepancy using those records. A screenshot without a timestamp or executable side may miss the relevant event. A demo exercise can test whether you understand the interface; it does not establish how a live order will execute.

Frequently asked questions

Is slippage the same as spread?

No. Spread is the difference between Bid and Ask at a particular time. Slippage compares a fill with a specified reference price. A trade can have zero slippage against its reference Ask or Bid while still crossing the spread.

Can slippage be positive?

Yes. A lower purchase price or a higher sale price than the chosen reference is an improvement. This is commonly called positive slippage. Our signed adverse-cost calculation represents that improvement with a negative number; it does not mean a negative trading outcome.

How much is one pip of slippage worth?

In this EUR/USD model with a USD account, one pip is 0.0001 USD per EUR. Multiply it by executed EUR units: at 100,000 units, one pip is $10. Other instruments, contract sizes and account currencies require their own calculation.

Why was my stop filled beyond its level?

The stop level activates an order; it does not reserve liquidity at that price. Available quotes, volume and the order's execution rules determine the fill. First check the trigger reference and the execution record rather than assuming the chart's visible price proves an error.

Can I avoid all slippage with limit orders?

A limit sets an acceptable price boundary, but execution and a full fill are not guaranteed. Favourable price improvement remains possible, and an unfilled exit leaves exposure open. Compare the consequences of not executing as well as the price restriction.

Does the calculator predict my broker's next fill?

No. It consumes fixed hypothetical price levels and quantities after a separate reference quote. It excludes real routing, timing, competing orders, fees and later executions. It explains the fill prices and costs for the executed portion and shows any unfilled quantity separately.

Sources & further reading

All guides
Trailing stop-loss vs trailing stop-limitCompare a trigger, a market exit and a price-restricted exit.Trailing drawdown explainedSeparate an account loss threshold from the price of an exit order.Forex spread calculatorExplore spread and position-size assumptions separately from slippage.Position size calculatorCompare an entered monetary risk budget with the assumed stop distance.
All guides