OpenClaw Tutorials5 min read

What Slippage Actually Costs — Audit of 200 Options Fills

S

Suneet Malhotra

Apr 28, 2026

1 views
What Slippage Actually Costs — Audit of 200 Options Fills - OpenClaw Tutorials blog post

For most of the year I have run a systematic options engine on a paper account. The engine routes between six defined-risk strategies based on regime and implied volatility. Position sizing is rule-based. Reward-to-risk minimums are baked into the entry filters. By the rules of the system, every trade has known max risk and known max reward.

Last weekend I pulled the JSON-lines trade log and did something I had been avoiding. I diffed every fill against the mid-price the engine saw at order submission, and totaled the dollar gap. The result is the number below, and it changed how I think about which strategies actually pay.

What I measured

Two hundred options trades, all defined-risk verticals or long single legs, paper account. For each:

  • Mid-price at order submission (engine view)
  • Actual fill price (broker view)
  • Slippage = fill minus mid, signed against trade direction (positive = paid more than mid; negative = price improvement)

I then summed across all trades, broken down by strategy class.

I did not measure live execution because I am not trading live. Paper-account fills are simulated; they are an optimistic model of what a real broker would give me, not a worst case. Treat every number below as a floor, not a ceiling.

The aggregate number

Total slippage paid across 200 trades: $1,847. Net P&L of the engine over the same window: $4,612.

Slippage was 40 percent of net P&L.

Forty percent. On paper fills. The number I was watching was the P&L line, not the slippage line, because the slippage line was buried in a column I did not have a chart for.

Where it hides

When I broke it out by strategy class, the picture got more specific:

  • Long call or long put: 64 trades, average slippage $0.04 per leg, total $256
  • Debit verticals (two legs): 78 trades, average slippage $0.06 per leg, total $936
  • Credit verticals (two legs): 58 trades, average slippage $0.05 per leg, total $580

The single-leg longs are cheap. The verticals are not. A debit vertical pays slippage on both the long and the short, and at $0.06 per leg with each leg multiplied by a $100 contract multiplier, you are giving up $12 per spread before you have done anything.

In a system that targets a 1.5x reward-to-risk minimum on debit spreads with average max risk around $130, that $12 is roughly 10 percent of risk. It does not change the win-or-loss outcome of any individual trade. It does compress the expected value of every trade by close to 10 percent.

What I had been told vs. what I found

The conventional retail framing is: the bid-ask spread is your cost. I had internalized that, and I was filtering candidates for tight bid-ask spreads on each leg. What I had not internalized is that on a vertical you do not just pay the spread, you pay it twice, and you pay it from the side of each leg that is least convenient for you.

A long call on QQQ with a $0.05 bid-ask might cost you $0.02 in slippage from mid. The same call inside a debit vertical, where you also have to fill a short call against it, regularly costs $0.06 from mid on the combined spread. The market maker quoting the vertical is not just adding the two leg spreads. They are pricing in the optionality you are giving them by submitting both orders together.

What I changed

Three things, in order of impact:

1. An effective-spread filter on the candidate scanner. Before, the entry filter checked the bid-ask spread on each leg independently. After, it checks the spread on the combined order at the mid I would actually submit at. Roughly 30 percent of the candidates that used to pass now fail. The remaining ones are tighter, and the slippage on those has dropped about 25 percent.

2. A wider reward-to-risk cushion on debit verticals. The old minimum was 1.5x. The new minimum is 1.7x. The extra 0.2x is the slippage budget I should have been carrying all along. It cut my eligible debit-vertical universe by about 20 percent.

3. Long single legs are no longer treated as equivalent to vertical legs in the planner. They are not. The slippage profile is different by a factor of two, and the engine now weights them accordingly when deciding between a long single leg and a debit vertical at the same conviction level.

The uncomfortable conclusion

Before the audit I would have told you my edge was the regime classifier and the bias score gate. After the audit I think those are necessary but not sufficient. The slippage budget is now a first-class part of how I think about whether a strategy survives in production.

There is also the live-vs-paper question, which I have not answered yet. Paper fills are optimistic. Live fills will be worse. By how much I do not know, and I will not know until I have a hundred live trades to diff against. The audit above tells me the floor; the live version will tell me the ceiling.

For now, the rule I am running on is simple. If a strategy class cannot survive a 10 percent compression of its expected value, it does not belong in the engine. The audit forced that question to the surface; it had been sitting there for months.

Share this post

You Might Also Like

Stay in the Loop

Get weekly insights on AI-driven QA, engineering leadership, and automation strategies.

No spam, ever. Unsubscribe anytime.