Most traders systematically underestimate slippage, which makes real losses higher than the losses they calculated before entering the trade.
Slippage is often treated as one simple deviation from the expected price, but in a real market the execution price is formed through a sequence of partial trades, changes in available liquidity, and the reaction of market participants to aggressive order flow.
Slippage appears because a market order collects volume across several price levels of the order book and is recorded as the volume-weighted average price of those partial fills.
The execution price should be viewed as the aggregated result of several independent processes acting at the level of the order book, execution priority, and the time dynamics of the market.
⚙️ How the matching engine matches a market order with limit orders
The execution price of a market order is formed by the matching engine at the moment it is matched with limit orders, not at the moment when the trader sends the order.
Order matching: a sequential process in which the matching engine executes a market order against available limit orders on the opposite side at the current price levels.
After a market order arrives, the matching engine records only the trade direction and size, while the actual price is determined exclusively by the state of the order book at the moment of matching.
The engine does not analyze the trader’s intention and does not optimize the execution price; it mechanically applies liquidity-access rules, starting with the best price level on the opposite side.
📥 Which rules decide what liquidity is used
Access to liquidity is determined by price priority between levels and time priority within one level.
First, the limit orders with the best available price are used; after that, inside the selected level, a strict queue based on order placement time is applied.
- Orders at the best opposite-side price are used first.
- Within one level, orders are executed in the order of their placement time.
- The visible volume of a level is not equal to the volume available to a specific order.
- A shortage of volume causes the order to move to the next order book level.
If some limit orders have earlier time priority, the market order receives access only to the remaining volume of that level.
🧮 What actions the matching engine performs
A market order is executed as a series of partial trades, each tied to a specific level of the order book.
The engine matches the order with limit orders at the selected level, records the partial fill, and moves the remaining volume to the next level.
- The best available price level is selected.
- The order is matched with orders at that level according to time priority.
- Each part is recorded as a separate trade.
- The remaining volume moves to the next level.
One market order almost always breaks into several trades, so the final price is a volume-weighted average rather than a single point price.
Each partial trade is recorded at the price of the level where matching occurred, so the final execution price reflects how liquidity was distributed through the book.
| Matching rule | What is checked exactly | How it appears in the price |
|---|---|---|
| Price priority | The order of price levels in the book | Determines the direction in which levels are consumed |
| Time priority | The queue of limit orders at a level | Limits the volume available to the order |
| Level volume limit | Whether one price has enough liquidity | Creates the number of partial fills |
| Order book change | Cancellation and addition of orders during execution | Amplifies the deterioration of the average price |
Example: if 3 contracts are available at the best level and the market order requires 8 contracts, the remaining 5 contracts will be executed at the next levels with worse prices.
Any changes in the order book between order submission and matching are automatically reflected in execution, so a quote that looks unchanged on the screen does not guarantee the same execution result.
Matching leads to slippage if:
- The order size exceeds the liquidity of one price level.
- Some orders have earlier time priority.
- The order book changes during matching.
- Execution is distributed across several levels.
Therefore, slippage appears as a direct consequence of formal matching rules and the current structure of the order book.
🧩 Which execution stages create slippage
Slippage is formed during order execution and depends on the sequence of actions performed by the matching engine and on changes in available liquidity.
Slippage: the difference between the price at which an order was sent for execution and the volume-weighted average price of all trades that actually formed its execution.
Slippage does not appear at the moment the order is sent, because sending the order only records trade intent; the actual price is formed later during matching with available limit orders.
After a market order arrives, the matching engine checks for opposing limit orders; if their volume at one level is insufficient, the order is executed sequentially across several price levels.
Each price level in the order book contains limited volume, so one order almost always splits into several partial fills, each recorded at its own price.
🔍 Which data is used when forming the price expectation
Before sending the order, the trader looks at current quotes and visible order book depth at the nearest price levels.
The expected price is formed from the best bid or ask and the nearest book levels that show the state of limit orders at a specific moment in time.
- The expectation is based on the best quote, not on the full size of the order.
- Visible depth shows orders that are available only at the current moment.
- The queue of limit orders affects execution priority.
- Orders may be executed or canceled before matching begins.
The expectation of getting the best price is realized only if the available limit volume remains in place until the moment the order is matched.
⚙️ What actions the matching engine performs
During execution, the matching engine sequentially matches the order with available limit orders.
If the volume at the first level is not enough, the remaining part of the order automatically moves to the next level, which changes the average execution price.
- One order is split into several trades.
- Each trade is recorded at the price of its corresponding level.
- Later levels are usually less favorable in price.
- Order book changes over time affect which levels are available.
Slippage appears as the result of an order passing through several order book levels while liquidity changes.
Even if the best quote has not visually changed, the final price can differ from the expected one because matching uses the order book state at the moment of execution, not at the moment of submission.
| Execution stage | What happens | How it affects the price |
|---|---|---|
| Order submission | The intention to buy or sell a volume is recorded | The price has not yet been determined |
| Matching | The order is split into partial trades | The price is formed across several levels |
| Completion | A volume-weighted average price is assembled | The final slippage is recorded |
As order size increases or the market accelerates, each next book level contributes more to the deterioration of the average price, so slippage grows nonlinearly.
The composite nature of slippage is confirmed when:
- The order is executed by several trades instead of one.
- The average price differs from the first execution price.
- Increasing size accelerates price deterioration.
- The divergence grows stronger during impulsive moves.
Therefore, slippage is the result of consecutive execution stages, not a separate price effect; this makes it reproducible and analyzable through the structure of execution.
📊 The role of order book depth in forming the average execution price
Order book depth determines across which price levels the order volume will be distributed and what average execution price the matching engine will record.
Order book depth: the amount of limit-order volume available at each price level of the order book at the moment a market order is matched.
The execution price of a market order is formed as the result of using volume at several price levels, not as the fixing of a single quote.
If the order size exceeds the available liquidity at the top level, the matching engine executes the remainder at the next level, which is farther away in price.
The size of the average-price shift is determined by two order book parameters: volume at the upper levels and the distance between neighboring price levels.
| Price level | Price | Available volume | Cumulative volume | Role in execution |
|---|---|---|---|---|
| Level 1 | 100.00 | 2 | 2 | Executes the first part of the order |
| Level 2 | 100.05 | 2 | 4 | Execution continues after 2 units are exceeded |
| Level 3 | 100.15 | 3 | 7 | Creates a noticeable deterioration of the average price |
| Level 4 | 100.40 | 5 | 12 | Adds a disproportionate contribution to the average price |
This sequence shows the execution path of an order, where each additional unit of size can move to a progressively more distant level.
Average-price calculation: when buying 7 units across levels 2×100.00, 2×100.05 and 3×100.15, the average price equals (2×100.00 + 2×100.05 + 3×100.15) ÷ 7 = 100.0857.
Slippage becomes nonlinear when execution reaches a level located much farther away in price than the previous one.
Nonlinear effect: increasing size from 7 to 8 units adds one trade at 100.40 and shifts the average price to 100.1250.
The same total amount of liquidity can produce different execution prices if that liquidity is distributed unevenly across levels.
🧪 How to verify the effect of order book depth from actual execution
The check is performed using actual order execution data, not the visual appearance of the book before entry.
Order book depth appears in how many levels participated in execution and what share of the volume each level contributed.
- Execution consists of several trades at different prices.
- The later parts of the order are executed at levels away from the first price.
- A small increase in size causes a sharp deterioration of the average price.
- The average price is shifted toward the level that provided a significant share of volume.
If one distant level provided a noticeable part of the volume, its price has a dominant influence on the average execution price.
Therefore, book depth affects slippage through the concrete mechanism of distributing volume across price levels and through each level’s contribution to the average execution price.
🧾 Partial order execution and the divergence between the first and average price
The divergence between the first execution price and the average trade price appears because the volume of one order is distributed across several price levels of the order book.
Partial order execution: execution of one order as a series of separate trades, each recorded at the price of the price level where liquidity was available.
The first execution price is recorded when the order is matched with the top level of the book and reflects only the price of the part of the volume that was available at that level.
The average execution price is determined after all partial trades are completed and is calculated as the volume-weighted value of prices with the volume of each trade taken into account.
If later parts of the order are executed at levels farther from the first price, their contribution shifts the average price regardless of whether the first execution price itself changed.
| Execution part | Price | Volume | Share of the order | Contribution to the average price |
|---|---|---|---|---|
| Fill 1 | 100.00 | 2 | 25% | Records the first execution price |
| Fill 2 | 100.05 | 2 | 25% | Has a weak influence on the average price |
| Fill 3 | 100.15 | 3 | 37.5% | Provides the main contribution to the average-price shift |
| Fill 4 | 100.40 | 1 | 12.5% | Amplifies the final divergence |
This execution log shows that the first price remains unchanged, while the final price is formed by the combined contribution of all later partial trades.
Average execution price calculation: with volumes 2@100.00, 2@100.05, 3@100.15 and 1@100.40, the average price equals (2×100.00 + 2×100.05 + 3×100.15 + 1×100.40) ÷ 8 = 100.1375.
The larger the share of volume contributed by a level far from the first price, the stronger that level’s price affects the final average execution price.
Even a small portion of volume executed at a distant level can change the average price more than several trades executed at nearby levels.
🔍 How to record the divergence between the first and average price from the actual trade
The check is performed using order execution data, not the price of the first recorded trade.
The divergence is determined by the number of price levels that participated in execution and the share of volume executed at each of them.
- The first execution price corresponds to the top level of the book.
- The average price differs because of later partial fills.
- The level that provided the largest share of volume dominates the formation of the average price.
- The final price shifts toward levels located farther away from the first price.
If a meaningful part of the volume was executed at a distant level, the average price will be closer to that level regardless of the first trade.
Therefore, the divergence between the first and average price is a direct consequence of partial order execution and the distribution of volume across price levels in the order book.
⏱️ The time lag between order submission and matching
The time lag between order submission and matching creates a difference between expected and actual execution conditions.
Time lag: the interval between the moment when the trading client records order parameters and the moment when the matching engine actually matches that order.
The price expectation is formed at the moment the order is sent, while the execution price is determined by the state of the order book at the moment of matching.
During the time between submission and matching, the liquidity structure can change because other participants execute or cancel limit orders.
The faster the order flow and the stronger the competition for time priority, the more often the “visible” depth changes before matching; this is directly connected with how HFT and order-flow speed change execution quality even without any visible price movement on the chart.
🕒 T0 — order submission
At the order-submission stage, the order parameters are recorded, but the execution price has not yet been determined.
- The direction and size of the order are defined.
- The price expectation is based on the last trade.
- The queue of limit orders is assessed from the visual appearance of the book.
The information available at T0 is not used directly when the order is matched.
🕒 T1 — transmission and processing
At the transmission stage, the order is not yet participating in matching, but the state of the order book continues to change.
- Orders from other market participants are executed.
- Some limit orders are canceled or fully executed.
- The order queue inside price levels is recalculated.
Changes that occur at T1 are not reflected in the expectations formed when the order was sent.
🕒 T2 — order matching
At the matching stage, the matching engine uses the actual state of the order book.
- The remaining volume of limit orders is used.
- The order is matched against the current time-priority queue.
- The actual average execution price is formed.
If the available volume at the top level decreased between T0 and T2, the order begins to execute at the next price levels.
| Stage | Source of information | Data used | Role in price formation |
|---|---|---|---|
| T0 | Trader’s screen | Last trade and order book | Forms the expectation |
| T1 | Matching engine | Incoming order flow | Changes liquidity |
| T2 | Matching engine | Actual order book | Determines the execution price |
🔍 How to record the effect of time lag from the actual trade
The effect of time lag is determined by comparing expectations at the moment of submission with the actual execution path.
- The first execution price is worse than expected without a quote move.
- Execution starts from a level that was not visible at submission.
- The average price is formed by levels that were absent from the book at T0.
Therefore, time lag leads to slippage not through a change in price itself, but through a change in available liquidity and order priority.
⚠️ Adverse selection and liquidity disappearing before order execution
Adverse selection creates slippage when limit participants remove orders in advance because they expect an unfavorable price move after execution.
Adverse selection: a situation in which a limit participant estimates that execution of their order is likely to coincide with a later price move against their position.
A limit order remains in the book as long as the expected execution price stays favorable relative to the risk of a later price shift.
When directional market-order flow forms in the market, limit participants receive information about a higher probability of an unfavorable move and adjust their behavior before new orders are matched.
🔍 Step 1 — recording directional flow
The tape shows a sequence of market orders executed in one direction without significant pauses.
- Several trades in a row pass through one side of the market.
- The upper levels of the book are consumed faster than in a neutral regime.
- Intervals between trades become shorter.
🧠 Step 2 — limit participants reassess risk
Limit participants recalculate the probability that execution of their order will coincide with a further price move against their position.
- The current price no longer compensates for the risk of an unfavorable move.
- The probability of inventory imbalance increases.
- Spread compensation becomes insufficient.
🚫 Step 3 — limit orders are canceled or shifted
Limit orders are either canceled or moved to more distant price levels before the order is matched.
- Volume at the best prices decreases.
- Visible book depth no longer matches available liquidity.
- The next available level is farther away from the current price.
📉 Step 4 — actual execution deteriorates
The market order is matched with the volume that remains in the book after limit orders have been removed.
- Execution starts at prices worse than expected.
- The volume-weighted average price shifts faster than visible depth suggested.
- Slippage appears without any increase in order size.
Liquidity disappearance under adverse selection occurs before execution and is not reflected in price history; therefore, the chart shows only the final result.
| Observed state | Action of limit participants | Actual liquidity | Execution result |
|---|---|---|---|
| No directional flow | Orders are maintained | Matches the book | Price close to expected |
| Directional flow forms | Orders are partially canceled | Shrinks | Moderate slippage |
| Impulsive move | Mass order cancellation | Minimal | Sharp deterioration of execution |
🔎 How to diagnose adverse selection from the actual trade
Adverse selection is identified through the gap between expected and actual order execution.
- Execution starts at prices worse than those visually observed before entry.
- The average price deteriorates disproportionately to order size.
- Execution coincides with a series of one-directional market trades.
- Actual order book depth turns out lower than expected.
Therefore, adverse selection amplifies slippage because limit participants remove liquidity in advance, reacting to information about directional flow.
🌪 Volatility as an amplifier of slippage, not its cause
Slippage is determined by the price levels where the matching engine finds opposing limit orders at the moment a market order is executed; volatility amplifies slippage through a concrete action by limit participants: reducing volume at the best prices and moving orders farther away from the last recorded trade.
Volatility does not execute trades and does not change the trade price by itself, because the trade price is formed only when a market order is matched with a limit order in the book.
The connection between volatility and slippage appears through adverse selection risk, where a limit order is executed at the start of a directional move and, after execution, the price continues to move against the limit participant’s position.
When realized volatility rises and price-change speed increases, market-making algorithms recalculate the probability that price will shift by several ticks over the life of an order and simultaneously reduce volume at the first levels, widening the distance between quotes.
📉 Low intraday volatility
A small amplitude of price fluctuations reduces the probability that, after a limit order is executed, the price will continue moving in the same direction.
The market maker places quotes close to the last trade because the probability of a multi-tick price shift before the next order update remains low.
Limit orders at the first and second book levels remain active longer, because execution more often happens inside a range rather than at the start of a directional impulse.
- The distance between the best bid and ask stays within the minimum tick size.
- A market order is more often filled at one or two levels of the book.
- The average execution price deviates only slightly from the first trade.
After the best level is consumed, the next available volume is nearby, so the size of slippage is determined by the density at the top of the book rather than by the speed of price movement.
📈 High intraday volatility
Growth in the amplitude and speed of movement increases the probability that execution of a limit order will coincide with the start of a directional move.
The market maker widens the spread and reduces volume at the best price because the price more often moves several ticks faster than the quote can be recalculated and reposted.
Nearby limit levels are canceled or reduced because their execution increasingly happens during price acceleration rather than during stable trading.
- The first book levels contain less volume and disappear quickly.
- The market order has to collect volume across several distant prices.
- The average execution price shifts as the order passes through levels.
Even with comparable trading volume, the distance to the nearest limit orders increases, causing actual slippage to grow.
Slippage amplification under high volatility is recorded through concrete changes in the order book and trade tape, not through the shape or size of price candles.
| Measured parameter | Low volatility | High volatility | How it is checked |
|---|---|---|---|
| Spread width | Minimum tick | Widening by several ticks | The book snapshot shows a greater distance between the best bid and ask |
| Volume at first levels | Stable and repeatable | Reduced and unstable | Order sizes at the top of the book decrease with the same price steps |
| Limit order cancellations | Rare events | Frequent cancel and replace | The event log shows more cancellations relative to additions |
| Execution depth | 1–2 levels | Several distant levels | The tape shows a series of prints at worsening prices |
Example of the same market order. A market buy for 12,000 USDT during low volatility executes across two levels if 9,000 USDT is available at the first level and 6,000 USDT at the second, and the average execution price remains close to the best quote.
The same 12,000 USDT buy during high volatility executes across five levels if only 2,000–2,500 USDT is available at each of the first levels, and the average price shifts because there is not enough volume at the best prices when the order is sent.
Higher volatility does not increase slippage if, at the moment of execution, the book still contains sufficient passive volume at the first levels.
If limit orders remain at the best prices while the move accelerates, market orders continue to execute close to the last-trade price.
If limit orders are canceled while the move accelerates and volume shifts farther away, slippage grows even without an increase in trading volume, because the matching engine sequentially fills more distant book levels.
📦 Order size as a direct source of slippage
The size of a market order affects slippage through a clear execution mechanism: the matching engine sequentially matches the order size with limit orders in the book, moving through price levels until the full volume is collected.
A market order does not contain a price and does not create quotes; it activates already posted limit orders sorted by the matching engine according to price and arrival time.
If the size of the market order exceeds the total size of limit orders at the best price, the unfilled part is automatically executed at the next price level in the book.
Each partial fill is recorded as a separate trade with its own price, determined by the book level where the corresponding limit volume was located.
The average execution price changes in proportion to the number of price levels used by the matching engine while collecting the specified volume.
In this case, the size of slippage is determined exclusively by the relationship between market-order size and the distribution of limit volume across order book levels.
🔬 The sequence of market order execution
- The matching engine accepts a market order without an execution price.
- Execution starts with limit orders at the nearest price level.
- If volume is insufficient, the remaining part of the order is moved to the next book level.
- The process repeats until the entire order size has been matched.
- The trade log records a series of partial fills at different prices.
The relationship between order size and slippage is step-like, because the order book consists of discrete price levels with finite volume at each level.
A sharp increase in slippage occurs when the order size leaves the dense zone of the book and starts executing in an area with lower total limit volume.
| Execution parameter | Small market order | Large market order |
|---|---|---|
| Size relative to the top of book | Size is smaller than the total volume of 1–2 levels | Size exceeds the liquidity of nearby levels |
| Number of price levels | One or two levels | Several consecutive levels |
| Average execution price | Close to the first trade price | Shifts as volume is collected |
| Source of slippage | Minimum price tick | Thinness and depth of the book |
Execution example. A 4,000 USDT market buy is fully executed at the best ask if 6,000 USDT is available at the first book level, and the average price matches the price of the first trade.
A 30,000 USDT market buy with the same book structure executes across five levels if each level contains 5,000–7,000 USDT, and the average price worsens because the matching engine moves to more distant levels.
| Order size | Depth of interaction | Actual slippage |
|---|---|---|
| Smaller than top-of-book volume | Execution in the dense zone | Low and reproducible |
| Comparable to top-of-book volume | Boundary of the dense zone | Jump-like increase |
| Significantly larger than top-of-book volume | Thin area of the book | High and unstable |
Order size is a slippage factor fully controlled by the sender, because it defines how deep into the order book the matching engine will need to interact.
With the book structure unchanged, changing order size leads to a reproducible change in the average execution price.
When the book structure changes, a large order additionally encounters shrinking nearby limit volume, but the root cause of slippage remains mechanical and is visible in execution data.
🧱 Liquidity distribution across levels and the shape of slippage
Slippage during market execution is determined by how limit orders are distributed across price levels of the order book at the moment when the matching engine matches the incoming order with available volume.
It is important to separate the “chart price” from the price produced by execution mechanics: the first describes trades that have already happened, while the second describes the book levels from which the matching engine actually collects volume at the moment of matching. This gap is especially visible in derivatives, where additional technical price benchmarks exist, so it helps to understand how mark price and index price work and why they are not equal to the execution price.
🎯 How the average execution price is formed
The average execution price consists of the prices of the book levels where the matching engine actually finds opposing limit volume.
When volume at best ask is smaller than the size of a market buy, the matching engine executes the available volume at that level and moves the unfilled remainder to the next price level.
- Each level provides its own trade price and its own contribution to the average price.
- The more levels are used, the farther the average price moves away from the first trade.
- Moving to a distant level creates a jump in slippage.
If ask1 has enough volume for only part of the order, the remainder is inevitably “collected” higher in price, and the result is recorded as a volume-weighted average across all fill trades.
🧮 Why the same volume produces different slippage
The same total liquidity on the bid or ask side does not guarantee the same execution price, because what matters is the density of volume close to the best price.
If the main volume sits on 1–2 levels, the order closes quickly and the average price remains close to best bid or best ask.
- Concentration of volume on the first levels reduces execution depth.
- Distribution in “thin layers” increases the number of prices in the fill chain.
- Gaps between levels create a disproportionate deterioration of the average price.
Two books can have the same total liquidity, but in one the order will “close” on ask1–ask2, while in the other it will pass through ask1–ask10 and record larger slippage.
Potential slippage is assessed through the volume at the first book levels and the presence of price gaps, because these parameters determine at which level the required volume will be fully collected.
| Book profile | Volume distribution | Matching-engine action | Execution result |
|---|---|---|---|
| Dense top | Large volume on 1–2 levels | The order closes without a deep pass | Low slippage |
| Thin distribution | Small volume at each level | The order passes through several levels | Step-by-step price deterioration |
| Price gaps | No orders between levels | The remainder executes at a distant level | Jump-like slippage |
🗺 Diagram: how distribution across levels turns into slippage
| Observed state | Matching-engine action | Recorded effect |
|---|---|---|
| Less volume is available at best ask than the market buy requires | Executes the available volume and moves the remainder | Trades at several prices appear in the tape |
| The next level contains limited volume | Executes a part and again moves the remainder | The average price moves away from the first trade |
| There are no orders between levels | Jumps to the next available level | The average price worsens by the size of the gap |
| Meaningful volume exists only at distant levels | Collects volume at distant prices | Slippage is recorded as execution depth |
Execution example with the same total liquidity. In both books, the total ask-side volume is 100,000 USDT, and the size of the market buy is 20,000 USDT.
In the first book, 14,000 USDT is posted at ask1 and 10,000 USDT at ask2, so the matching engine closes the order across two levels and the average price remains close to the first trade.
In the second book, volume is distributed across ask1–ask10 at 2,000 USDT per level, so the matching engine passes through ten levels and the average price deteriorates because of execution depth.
🧾 What to analyze in the order book before sending the order
The purpose of the analysis is to understand in advance at which level the required volume will finish filling under the current book profile.
The matching engine executes a market order sequentially through levels, so the forecast is not based on “total liquidity” but on how much volume sits next to best bid or best ask and whether there are gaps.
- Volume on the first 3–5 levels relative to order size.
- Presence of price gaps between neighboring levels.
- The point where execution leaves the “dense zone” and enters the thin area of the book.
If volume on ask1–ask3 is smaller than the purchase size, you should assume in advance that execution will go deeper, and jump risk appears where there is a price gap between levels.
📑 What to analyze in the trade tape after execution
The trade tape and order report show the real execution path: which prices participated and what volume was assigned to each one.
If execution happened on one level, the data shows a series of prints at one price; if the order passed through several levels, the tape shows a “staircase” of prices, and that staircase explains the final average price.
- The number of unique execution prices in the fill chain.
- The sequence of prices as a sign of execution depth.
- Jumps between prices as an indicator of gaps in the book at the moment of matching.
If there is a large step between neighboring prices in the fill chain, it almost always means that orders were absent between those levels in the book at the moment of execution.
The final criterion is always the same: slippage is not a “candle,” but the distribution of volume across prices in execution, so verification is done through the level structure of the order book and the list of fill trades.
⚙️ Order type as a mechanism that shapes slippage
Order type sets the rules for matching volume with limit orders in the book and determines whether the matching engine may worsen the price to complete execution or must stop execution when no acceptable price is available.
Slippage appears at the moment an order is matched with limit orders, so the key difference between order types comes down to one parameter: whether the engine is allowed to move to the next price level.
Each order type sets a strict constraint: either the engine continues collecting volume at more distant levels, or it must stop execution if opposing volume is available only at a price worse than the one specified.
This is especially visible in stops, because after the trigger is hit the behavior of the order changes; that is why it is important to understand why a stop-loss almost always executes worse than the level, even if the level on the chart looked “exact.”
🟢 Market order (Market)
A market order has no price limit and allows the matching engine to take opposing volume from the current order book until the order is fully executed.
The matching engine starts execution from the best available opposite-side price and moves to the next level each time the current level lacks enough volume.
If the total volume at the first levels is smaller than the order size, execution inevitably goes deeper into the book regardless of why the market is moving.
As a result, the “order price” becomes a chain of price levels, and the final result is recorded as the volume-weighted average price of partial fills.
- The price of each partial trade equals the price of the level where opposing volume was found.
- Execution depth equals the number of levels used by the engine.
- Slippage appears as the difference between the first and average price.
🔵 Limit order (Limit)
A limit order forbids the matching engine from executing volume at a price worse than the specified one, thereby removing slippage at the cost of non-execution risk.
The engine matches volume only at an allowed price and has no right to “collect” the remainder at the next level if opposing volume is available only beyond the limit.
If there is no opposing volume at the limit price, or if it is insufficient, the order remains in the book and is filled partially or not filled at all.
The final risk is recorded not in the execution price, but in the size of the unfilled remainder and the waiting time in the queue.
- The execution price is restricted by the order parameters.
- Slippage is absent because price deterioration is forbidden.
- Unfilled volume remains in the book and competes for time priority.
🟡 Stop-market order
A stop-market order is activated by a trigger and, after activation, behaves like a market order without price limits.
After the trigger fires, the matching engine is allowed to take opposing volume from the current book, starting at the best level and moving deeper when liquidity is insufficient.
If activation happens when the top of book is thin or when limit orders are being canceled en masse, the order immediately passes through several levels and records a deterioration of the average price.
In the order report, this appears as a series of fill trades at several prices, while the final price becomes volume-weighted.
- The execution price is determined by the book at the moment of activation.
- Execution depth is often greater than for an ordinary market order in a calm regime.
- Slippage appears as a series of trades at worsening prices.
🟠 Stop-limit order
A stop-limit order is activated by a trigger, but after activation it becomes a limit order with a price boundary and may fail to execute.
The matching engine places a limit order and matches it only at an acceptable price, with no right to worsen the price for the sake of execution.
If price passes the limit level without returning, the order is considered activated but remains unfilled because no opposing volume is available within the limit.
The risk is recorded as non-execution during fast moves, especially when the gap between trigger and limit is narrow and the book is thin.
- Slippage is bounded by the specified price, but execution is not guaranteed.
- In impulses, the probability of non-execution rises sharply.
- Unfilled volume remains in the book and waits for opposing liquidity.
Order type determines the form in which execution risk is realized: market and stop-market orders record risk through a worse average price, while limit and stop-limit orders record risk through unfilled volume.
| Order type | Movement through levels allowed | Form of risk | How it is observed in data |
|---|---|---|---|
| Market | Yes | Slippage | Fill chain across several prices and a volume-weighted average price |
| Limit | No | Non-execution | Partial fill and order remainder in the book |
| Stop-market | Yes (after activation) | Slippage | Multi-level execution after the trigger |
| Stop-limit | No (after activation) | Non-execution | Activated order with no fill trades or with a partial fill |
Order type does not “remove” slippage as a phenomenon; it sets the rule: whether the matching engine may worsen the price to execute size or must stop when no acceptable price exists.
❓ FAQ on slippage
What exactly counts as slippage in market execution?
Slippage is the difference between the price at which a market order was sent (or a stop that was activated and became market-like) and the volume-weighted average price of the actual trades that the matching engine created while matching against limit orders across several order book levels.
This difference is recorded in the trade tape and in the order report: each partial trade has its own price and volume, and the final average execution price is obtained as the sum of price×volume for all parts divided by the total executed volume.
How is slippage different from the spread?
The spread is the state of the order book before execution: the difference between the best limit buy price (best bid) and the best limit sell price (best ask) at the moment the matching engine receives the order.
Slippage is the result of execution: if there is not enough volume at best ask for a buy or best bid for a sell, the engine executes the remainder at the next levels and creates a chain of trades at several prices, causing the average execution price to move away from the first available quote.
Why can slippage occur even in an instrument with high trading volume?
High trading volume in exchange statistics is the sum of trades already completed over a period, while slippage is determined by how much limit volume is present in the order book at the moment a specific order is executed.
If small limit volumes sit at the first levels of the book, or if some limit orders are canceled before matching, a market order collects opposing volume at distant levels, and the average execution price shifts even when “volume on candles” looks high.
Why does a stop order create slippage even with an “exact” stop level?
A stop order is not executed as a limit order at the stop price: when the trigger is reached, the matching engine creates an aggressive execution order, market or market-like in behavior, and starts taking opposing limit orders from the book.
If there is a gap between the trigger price and the nearest available limit orders, or if the nearest level lacks volume, part of the execution goes deeper into the book, and the average execution price is recorded below the trigger for a sell or above it for a buy.
Where in exchange data can you see what slippage was made of?
The mechanics of slippage are read through two layers of data: (1) the order book before and during execution shows what limit volumes were posted at price levels, and (2) the trade tape shows the actual prices and volumes of partial fills from which the matching engine assembled the final trade.
If the exchange provides an order report, it shows the average execution price and the list of fill trades; that list shows at which book levels opposing volume was found and why the final price moved away from the first quote.
How does “disappearing liquidity” turn into slippage?
Slippage appears when limit orders are canceled or reduced faster than the matching engine can match the market order with volume at the nearest book level.
At the data level, it looks like this: before the order is sent, volume sits at best ask, but at the moment of matching that volume has already been canceled or reduced, so the engine takes the next available level; if this removal repeats across several levels, the average execution price shifts and the tape shows a series of trades at worsening prices.
How can you distinguish slippage inside the order from price movement after the trade?
Slippage belongs to the execution price inside the order and is visible in the fill chain: trades for one order are distributed across book price levels and produce an average price worse than the first available quote.
Price movement after execution is formed by trades from other participants after your order has already closed; those trades appear in the tape as an independent flow and are not included in the list of partial fills for your order.
Why does a backtest usually fail to reproduce the slippage visible on a real account?
A candle-based backtest models execution using OHLC prices and does not use the order book, so it does not build a chain of partial fills at real price levels.
In real execution, the matching engine can execute volume only where opposing limit volume exists in the book at the moment of matching; therefore, with thin book depth, the actual exit price is formed by a series of trades across several levels, which a candle model without book and tape data does not capture.
Under what conditions can slippage be close to zero?
Slippage becomes close to zero when the volume of the market order is fully absorbed at the first available level of the order book, meaning best ask for a buy or best bid for a sell, without moving to the next level.
In execution data, this corresponds to one price level in the fill chain: the full size is closed at one price without a “staircase” of several levels and without an average-price shift relative to the first trade.
🧾 Slippage as the result of matching order size with liquidity by levels
Slippage appears at the moment the matching engine matches the order and is determined by which limit volume is available at specific price levels of the order book.
Slippage appears when the size of a market order or activated stop order exceeds the limit volume posted at the first available level of the order book. In that case, the matching engine executes the available part of the volume at the current level and moves the unfilled remainder to the next price level, repeating the process until the order is fully executed.
The final execution price is recorded as the volume-weighted average price of all partial trades for one order and is displayed in the order report and in the trade tape. Candle data and aggregated trading volume do not contain information about the distribution of limit orders at the moment of execution and cannot reconstruct the chain of price levels.
Stop orders amplify slippage because, after the trigger price is reached, they convert into market orders without a price limit. If there is no continuous volume between the trigger price and the nearest limit orders, or if the volume at those levels is insufficient, the matching engine executes the order at more distant price levels of the order book, which shifts the average execution price relative to the trigger level.
Slippage is the direct result of matching