Crypto backtest slippage is the difference between the price a test expects and the price an order could reasonably receive. If a backtest treats every signal as an exact fill, a small historical edge can look larger than it is. Record the fill rule, apply the cost on both entry and exit, and rerun the same strategy with baseline and worse assumptions. Then read the result beside fees, spread, liquidity, order type, and trade size.
What crypto backtest slippage measures
A strategy can identify a price, submit an order later, and receive one or more fills at different prices. Slippage measures the gap between the expected price and the executed price. It is not the same as a trading fee, and it is not automatically captured by the bid-ask spread.
Kraken’s official trading glossary describes slippage as the difference between the expected cost of a trade and its execution price. It also explains that a large market order can split across multiple trades in the order book. That definition is useful beyond any one venue: the price visible when a rule fires is not evidence that the full order could fill there.
Separate signal, order, and fill prices
Keep three events distinct in the test record:
- Signal price: the market value used when the strategy condition became true.
- Order price: the price instruction created by the strategy, such as a market order or limit price.
- Fill price: the weighted average price of the quantity that actually executed.
They may match in a simplified model, but that should be a declared assumption. Candle granularity, processing delay, order-book depth, partial fills, and fast price movement can separate them.
A three-scenario slippage stress test
Consider a transparent, illustrative round trip with 2,000 units of notional on entry and again on exit. The gross price effect is +1.00%, or +20 units. Fees are 10 basis points per side, so the simplified round-trip fee is 4 units. The only changing input is adverse slippage on each side.
| Scenario | Slippage per side | Round-trip slippage | Illustrative result after fees and slippage |
|---|---|---|---|
| Exact-fill baseline | 0 bps | 0 units | +16 units |
| Moderate stress | 5 bps | 2 units | +14 units |
| Wider stress | 15 bps | 6 units | +10 units |
This is cost-equivalent arithmetic, not Gimmer data, market data, an executable order, or a forecast. It holds notional fixed so each cost layer is easy to audit. A real fill can depend on size, side, time, venue, order type, liquidity, and the path through the order book.
Keep fees, spread, and slippage separate
Fees are explicit charges under a defined schedule. Spread is the gap between the best displayed bid and ask. Slippage is the gap between the expected price and the realized fill. They can interact, but combining them into one unexplained deduction makes a backtest harder to reproduce.
Use the crypto trading bot fee checklist to document fee tiers and the sides charged. If spread is modeled, state whether the expected entry begins at the mid-price, bid, ask, last trade, or another reference. Add slippage after that boundary instead of assuming one label covers every execution cost.
Match the assumption to the order
A market order prioritizes execution, but its price is not guaranteed. A limit order controls the acceptable price boundary, but it may remain unfilled or fill only in part. The available quantity at each order-book level determines whether one expected price can absorb the full order.
The practical consequence is not that one order type is always better. The model must represent the behavior it claims to test. Review the market-versus-limit order framework, then document whether an unfilled limit order is skipped, carried forward, partially filled, or replaced.
Use the right market resolution
A candle’s high and low do not reveal the order of every trade inside that interval or the available quantity at each price. A test that enters at a candle close and exits at the next candle open still needs an explicit rule for gaps and fill timing.
Match the decision cadence with the crypto trading bot timeframe checklist. Then use the backtest candle-data checklist to record timestamps, missing intervals, and the final-candle rule. More decimal places cannot recover order-book information that the source data never contained.
Audit six inputs before comparing runs
- Reference price: Name the signal, quote, mid, last trade, candle value, or other expected price.
- Direction: Apply adverse movement in the correct direction for buys, sells, longs, and shorts.
- Both sides: State whether entry and exit each receive a slippage assumption.
- Size and liquidity: Use a range that reflects the tested quantity and market conditions rather than one universal constant.
- Order behavior: Define partial fills, missed limits, cancellations, and replacements.
- Sensitivity: Keep the strategy and historical period fixed while changing only the cost assumption.
If the conclusion changes after a small adverse adjustment, record that sensitivity. Do not hide it by selecting only the most favorable fill rule.
Read the stressed result as a system
Gimmer’s public backtest guidance says realistic costs can include fees, spread, slippage, funding, and borrowing. It also recommends rerunning with worse costs. The guide to reading Gimmer’s Backtest Details adds the surrounding report, positions, and risk context.
This article does not claim that Gimmer uses the example’s formula, basis-point values, fill timing, or a dedicated slippage control. It provides an audit method for any tested workflow: identify the current model, name what it omits, and compare like with like.
Frequently asked questions
How much slippage should a crypto backtest use?
There is no universal percentage. The range should reflect the market, side, order type, quantity, liquidity, volatility, and time period being tested. Use multiple explicit scenarios when direct fill evidence is unavailable.
Does a limit order remove slippage?
A limit can bound the accepted price, but it does not guarantee execution or a complete fill. A test must define what happens when the market touches the limit without enough quantity, moves away, or fills only part of the order.
Is slippage always a loss?
No. A fill can be better or worse than the reference price. A conservative stress test usually applies adverse movement so the result is not dependent on favorable price improvement.
Make the fill assumption visible
Crypto backtest slippage is useful when another reviewer can reconstruct the reference price, direction, size, order behavior, and entry-and-exit cost. It becomes misleading when a perfect historical fill is treated as an observed trade.
For the next test, open Gimmer’s Running Backtest guide, add a slippage line to the run record, and compare the same strategy under a baseline and at least one worse-cost assumption wherever the tested workflow supports it. Treat the result as evidence about the model and historical period, not a promise about future execution.