Flat percentage slippage is almost always wrong. Real slippage is non-linear and depends on what the book looks like at the moment you fire.

What's worked better for me: pull L2 depth snapshots at signal-fire times and model fill probability against available liquidity at each price level. For liquid futures (ES, NQ) you can assume queue position and partial fills at the touch. For alts, bucket depth at 0.1% intervals and ask what percentage of your order fills at price X without moving the mid.

The other thing that gets ignored is adverse selection. Signal fires, price moves, you fill worse, then it reverses. That's not really slippage, it's alpha decay from signal-to-fill latency. Worth simulating separately by adding a 500ms to 2s delay on fills and seeing what happens to your Sharpe.

Built with LogoFlowershow