A price can be visible without being available for your entire order. Crypto slippage is the difference between an execution price and a stated reference price; order-book depth helps estimate how that difference changes with size. The reference might be the decision-time ask, the arrival-time ask or a midpoint. Without naming it, a slippage percentage is not reproducible.
Below, an original hypothetical depth worksheet separates three things often combined in one number: crossing the spread, consuming deeper prices and arriving after the market moves. The article was prepared with AI assistance from official documentation. It is not a live execution study or a recommended sizing rule.
The first price answers only the first-size question
An order book lists quantities offered at different prices. The lowest ask may be sufficient for a tiny purchase but insufficient for a larger one. Once that offered quantity is consumed, the next acceptable price matters.
The best bid and best ask also differ. If a report uses the midpoint as its benchmark, an immediate purchase can show a positive cost before it consumes any deeper level. If it uses the best ask, that same first-level fill can show zero slippage. Both calculations can be internally consistent while measuring different things.
Start with the bid-ask spread calculation when comparing figures from two tools. Ask each tool for its price source, observation time, denominator and side convention. A smaller displayed number may come from a different benchmark rather than a better execution.
For a buy order, a higher fill price is adverse relative to a fixed benchmark. For a sell, a lower fill is adverse. State that sign convention before reporting an average across both directions; otherwise favorable buys can cancel adverse sells simply because the formula ignored direction.
A depth curve you can recompute
Use this constructed ETH/USDT ask book. Each row is the quantity at that specific price, not cumulative quantity. Assume all shown orders remain available, no other orders compete, fees are excluded and all quantities satisfy the venue's rules. This is a frozen-book illustration, not a forecast.
| Ask price, USDT/ETH | ETH at this level | Cumulative ETH available |
|---|---|---|
| 2,000 | 2 | 2 |
| 2,002 | 3 | 5 |
| 2,008 | 5 | 10 |
To model a purchase, take quantities from the lowest ask upward until the requested size is reached. Multiply each used quantity by its price and add those notionals. Divide the total by filled ETH to obtain the volume-weighted average price.
| Requested purchase | Modeled cost | Average execution price | Adverse difference from the initial 2,000 ask |
|---|---|---|---|
| 2 ETH | 4,000 USDT | 2,000.00 USDT/ETH | 0 basis points |
| 5 ETH | 10,006 USDT | 2,001.20 USDT/ETH | 6 basis points |
| 10 ETH | 20,046 USDT | 2,004.60 USDT/ETH | 23 basis points |
For the ten-ETH row, the cost is (2 × 2,000) + (3 × 2,002) + (5 × 2,008) = 20,046 USDT. The benchmark cost is 10 × 2,000 = 20,000 USDT, so the difference is 46 USDT. Dividing 4.60 by 2,000 and multiplying by 10,000 gives 23 basis points.
That last row is not ten times the slippage of the first row. Size interacts with discrete available quantities. A fixed slippage assumption can miss this change precisely where a strategy increases its order size.
Nor can the worksheet say what an eleven-ETH purchase costs. There are only ten ETH in the visible data. Treat the additional quantity as unknown instead of extrapolating the last row indefinitely.
A tight cap can improve the average by leaving work unfinished
Suppose the operator instead authorizes a ten-ETH buy with a maximum price of 2,003 and an immediate-or-cancel instruction. In the constructed book, only the first five ETH are within that boundary. They cost 10,006 USDT and average 2,001.20. The remaining five ETH are canceled under the stated instruction.
The reported realized slippage is now six basis points against the initial ask. That sounds better than 23. But the purchase is only 50% complete. Comparing only average execution price would reward an instruction for not completing half the intended trade.
Track the filled fraction alongside price. Also record what happens to the remainder: canceled, still working or unresolved. Repeatedly submitting the canceled amount at a fresh higher benchmark can make each individual trade look acceptable while the full parent intention becomes much more expensive.
A venue's slippage setting has its own definition and supported order types. Bybit's documented slippage-tolerance feature anchors limits to the best ask or bid and can cancel quantity outside the allowed range. Its product restrictions must be checked rather than assuming every conditional order supports the feature. Bybit: market order with slippage tolerance.
Use the market versus limit order guide to translate a price boundary into an instruction. A configurable tolerance is not a promise that the desired quantity will execute or that the account cannot lose more afterward.
Separate book consumption from market movement
Consider another hypothetical purchase, separate from the table above. At decision time, the best ask is 2,000 USDT/ETH. By the time the order reaches the venue, it is 2,004. The eventual average fill is 2,006.
Against the decision-time ask, the adverse difference is six USDT per ETH, or 6 ÷ 2,000 × 10,000 = 30 basis points. Against the arrival-time ask, it is two USDT per ETH, or about 2 ÷ 2,004 × 10,000 = 9.98 basis points.
Those figures answer different questions. The first includes movement before arrival as well as any further price deterioration. The second isolates a narrower interval using an observed arrival benchmark. Neither establishes that your order caused the entire change.
Proving causal market impact is harder than subtracting two prices. Other trades, cancellations and new orders occur at the same time. A historical comparison needs a stated method and data; a single before-and-after screenshot is insufficient.
For a practical operator record, preserve the decision observation, submission time, exchange acknowledgement when available, fills and fee assets. Label missing intervals. Avoid claiming microsecond precision from unsynchronized clocks or presenting a later refreshed quote as the quote that existed when the decision was made.
Depth is usable only if the local book is valid
A depth model can be mathematically correct and operationally wrong because its input is stale or incorrectly assembled. A delta update is not necessarily a new full book. A zero size can mean a level should be removed, rather than that it should remain available with its old quantity.
Bybit's public order-book documentation specifies replacing the local state on a new snapshot and describes insert, update and delete handling for deltas. Following that feed's protocol is part of building a meaningful depth estimate. Bybit API: order-book stream.
Binance Spot distinguishes its top-of-book ticker from its depth stream, including update identifiers in depth messages. A best-price feed alone cannot populate all the deeper rows in the worksheet. Binance Spot: market streams.
An execution system should know whether it has a valid supported book, not just whether a WebSocket is connected. A connection can be healthy while a consumer misses data, subscribes to the wrong instrument or applies messages out of sequence.
When that state is uncertain, a conservative entry policy can stop relying on the estimate and require a fresh supported state. This does not close existing positions. Monitoring, protective orders and incident handling remain separate obligations.
Test several sizes and one adverse-data case
A useful preflight worksheet includes the intended size, a smaller size and a larger stress size. The larger case is not permission to increase the trade. It reveals how quickly the assumed costs worsen near the planned quantity.
Then change the input rather than only the size. Remove the largest displayed level, delay the observation, or consider a price gap between levels. These are hypothetical stress assumptions, not calibrated probabilities. Their value is exposing dependence on one fragile row.
Avoid deciding that a book is safe because total displayed notional is large. Liquidity far outside your acceptable price range may be irrelevant to your instruction. Depth within the actual price boundary is the useful subset.
If a model uses historical candles instead of recorded books, say that depth was not observed. The backtest evidence guide explains why candle highs and lows cannot reconstruct an order's detailed execution path. A paper result should retain this limitation when compared with Live behavior in the environment guide.
Keep a parent-intent execution record
For an order split into several children, retain the original requested quantity and common benchmark. Add each distinct fill once. Report total filled quantity, remaining quantity, weighted average price, fees and the benchmark's timestamp.
This record prevents a misleading success metric in which expensive later children disappear behind their own refreshed references. It also distinguishes nonexecution from favorable execution. A strategy that buys none of its intended position has not demonstrated a zero-cost fill.
Our partial-fill management guide develops that accounting step. If any submission result is unknown, resolve the original identity before calculating an apparently free remaining allowance.
The useful output is a range of possible execution outcomes supported by a defined book and a defined instruction. A slippage number without a quantity, benchmark or data-quality condition is too incomplete to approve an automated action. Even a well-specified estimate remains subject to the broader trading risks of changing liquidity, outages and price movement.
