Slippage models: fixed numbers versus volatility-scaled costs
Posted: Sat Oct 31, 2026 6:58 pm
A common backtest assumption is a fixed slippage, such as 0.2 pips per trade. It is simple and unrealistic. Real slippage depends on the market state: it is near zero in quiet conditions and large when volatility spikes.
A volatility-scaled model ties slippage to a measure like recent range or tick rate. For example, slippage equals some fraction of the average one-second movement over the last minute, or scales with the spread.
The calibration should come from live data. Record actual slippage and the market conditions at the time, then fit a simple relationship. Even a two-parameter model captures much of the pattern.
Compared with fixed slippage, the scaled version penalizes trades during volatile periods and spares those in calm periods. Strategies that rely on fast markets may show much lower profit once calibrated.
Order type matters. Limit orders may have zero slippage but suffer adverse selection. Stops have larger slippage. Separate models for each type are better than one average.
How was the slippage assumption chosen for the backtests, and was it checked against live fills?
A volatility-scaled model ties slippage to a measure like recent range or tick rate. For example, slippage equals some fraction of the average one-second movement over the last minute, or scales with the spread.
The calibration should come from live data. Record actual slippage and the market conditions at the time, then fit a simple relationship. Even a two-parameter model captures much of the pattern.
Compared with fixed slippage, the scaled version penalizes trades during volatile periods and spares those in calm periods. Strategies that rely on fast markets may show much lower profit once calibrated.
Order type matters. Limit orders may have zero slippage but suffer adverse selection. Stops have larger slippage. Separate models for each type are better than one average.
How was the slippage assumption chosen for the backtests, and was it checked against live fills?