The mid-price lies halfway between bid and ask. Comparing a fill with the mid at the time of the order is a fair way to measure execution cost.
A buy filled at the ask pays half the spread over the mid. A sell filled at the bid gives up half the spread. If the fill occurs at a price farther from the mid than that, the extra distance is slippage.
Most retail platforms show only bid on the chart, so traders compare their fill with the wrong reference. A buy at 1.0852 when the chart shows 1.0850 looks like two pips of slippage, when the spread was 1.5 and the actual slippage only half a pip.
Logging bid, ask and fill at the time of the order, using screenshots or a tick recorder, supports a proper analysis.
Execution quality studies from brokers usually use mid-price benchmarks, so using the same measure allows comparison.
Has fill quality been measured here against mid-price, and what did it show?
Why mid-price matters when checking a fill
-
Shadow Trader
- Posts: 5438
- Joined: Wed Sep 09, 2026 5:19 pm
-
Amanhasnoname
- Posts: 1506
- Joined: Fri Oct 30, 2026 9:45 am
Re: Why mid-price matters when checking a fill
I started logging bid and ask at the moment of each order after I thought my broker was slipping me constantly. My platform shows only the bid line, so every buy looked like it filled a pip or more above the price on the chart. Once I recorded the ask as well, most of that disappeared and the real slippage on market orders averaged around a tenth of a pip.
The tool I used was a small script in the terminal that writes the bid, ask and server time to a file whenever I send an order, plus the fill from the trade history. It took an evening to set up and it has saved me a lot of arguments in my own head.
Where it did show something real was around news and at the rollover hour. Slippage against mid there was several times the normal level, and on stops it was nearly all negative. That told me the issue was when I was trading, not the broker in general, which was a much easier problem to fix.
The tool I used was a small script in the terminal that writes the bid, ask and server time to a file whenever I send an order, plus the fill from the trade history. It took an evening to set up and it has saved me a lot of arguments in my own head.
Where it did show something real was around news and at the rollover hour. Slippage against mid there was several times the normal level, and on stops it was nearly all negative. That told me the issue was when I was trading, not the broker in general, which was a much easier problem to fix.