Cost drag in algorithmic trading: how fees destroy your edge
Cost drag from fees, spread, and slippage: how small edges vanish after costs, and how to model drag honestly before deployment.
Cost drag trading fees slippage and trading fees impact on returns are foundational SEO topics because they decide whether a "great" backtest is economically real. Cost drag is the performance lost to fees, spread, and slippage versus a frictionless simulation.
The failure mode
You optimize on mid prices, then pay spread and fees in live trading. High-frequency edges die first; slower edges may survive with smaller size.
What to include in a serious model
- Maker vs taker fees and whether your logic can actually rest liquidity
- Funding for perpetuals when relevant
- Slippage that scales with size and volatility, not only a constant
How cost drag interacts with metrics
Backtest transaction costs impact changes:
- Profit factor
- Expectancy per trade
- Sharpe and Sortino (Sharpe vs Sortino)
Freqtrade note
Freqtrade backtest slippage fees settings must match your venue. If drag is large relative to per-trade expectancy, prioritize robustness under costs over raw in-sample return (How to read Freqtrade results).
A toy example that explains why drag dominates turnover
Suppose a strategy expects +6 bps per trade before costs, but pays 4 bps in fees plus 5 bps in realistic slippage on average.
Net is negative even if the signal is directionally right. High turnover makes small per-trade losses compound quickly.
This is why drag is not a footnote for scalping and short-hold systems.
Scenario ladder (baseline, stressed, shock)
Run three cost tiers and compare rankings:
- baseline: your best estimate of live costs
- stressed: +50% slippage, wider spread proxy
- shock: +150% slippage on volatile weeks only
If your chosen strategy only wins in baseline, you learned something material.
Live monitoring: drag is not static
After deployment, track realized:
- average slippage vs model
- fee tier drift (maker/taker mix changes)
- funding drift for perps
When realized drag diverges, revisit size and kill-switch thresholds before you rewrite the strategy.