Tools
Order execution costs
Most published trading-cost numbers come from broker fee schedules. They miss the largest cost driver—the spread your order pays—and they miss the strategy effect: a limit at mid often fills near-free, a plain market order pays the full half-spread plus any impact.
The matrix below is the answer to "what does it actually cost". Each cell shows the median realised cost in bps of notional, measured on real Interactive Brokers fills across six asset-class buckets and four order strategies. Positive numbers are cost; negative numbers are price improvement.
The data refreshes whenever a new sweep runs against our IB account; the harness, the cost-model engine, and the cell values you see here are all open-source. Reproduce them against your own broker if you want—links below.
The matrix
Median slippage versus the midpoint at the moment the order is submitted (T0), in bps of notional. The cell with the ✓ marker is the strategy our recommended execution policy picks for that category (see below).
What is measured: the difference between the final fill price and the midpoint snapped at submit time (T0), signed so that positive = cost (you paid worse than mid) and negative = price improvement. Note that the reference is the mid at submit, not the mid at fill—algorithms like the IB midprice algo target the prevailing mid at fill time, so market drift between submit and fill shows up here as slippage even when the algorithm did its job.
n is the count of FILLED trials in the slice. Colour saturation is row-relative—each category is shaded against its own widest cell. low n means the order type works for that category but we do not yet have enough fills to call it confidently. not supported means the order type is not available for that category (e.g. the IB midprice algo on futures, the adaptive algo on FX/CFD).
The four order types
Each strategy trades off price against certainty of execution differently. The matrix above measures all four on every category; our recommended policy picks one per spread band (see below).
Limit at mid. A limit order priced at the calculated midpoint of the bid/ask at submit. If it does not fill, the order is cancelled and re-submitted—up to four attempts on a 60-second budget. Best for wide spreads where waiting beats paying the spread; can fail to fill in fast-moving markets if the mid runs away from the price.
IB midprice algo. Interactive Brokers' hosted MIDPRICE algorithm. The algo waits internally (up to ~30 seconds) and fills at the prevailing midpoint at the moment of execution. Less control than the manual limit, but lower workload. Available on US equities and equity ETFs; not supported on futures, cash FX, or CFDs.
IB adaptive algo. IB's Adaptive algorithm at Normal priority. Sends a marketable limit that adjusts toward the touch as needed—smarter routing than plain market with active venue selection. Available on most asset classes but not on cash FX or CFDs.
Plain market. A standard market order. Fills immediately at the touch—no price guarantee but no waiting either. Universal—works on any instrument we trade.
Our recommended execution policy
Picking the cheapest cell from the matrix per instrument is not robust—per-cell sample sizes are thin and the cheapest-measured strategy can flip with one more sweep. The honest move is to classify each order by its spread band at submit and follow a chain. Below is the policy we recommend.
Tight spread (≤ 3 bps). IB midprice algo first. If it does not fill within 35 seconds, drop to IB adaptive; if that does not fill, plain market. When the spread is small, retry overhead is not worth it—let the algo find liquidity quickly and accept near-mid execution.
Chain: IB midprice → IB adaptive → plain market.
Wide spread (> 3 bps). Limit at mid first, with up to four retries on a 60-second budget. If none of the retries fill, fall back to IB adaptive, then plain market. Wide spreads make limit-at-mid economical—the cost saved per fill is worth the wait.
Chain: Limit at mid → IB adaptive → plain market.
Grey zone (3-10 bps). Same chain as tight. The right strategy in this band is sensitive to the exact spread and remains a calibration question as more data accumulates.
FX. Plain market by design. EURUSD spreads run around 0.17 bps. At that level the difference between picking the optimal strategy and just hitting the touch is in the noise—the delta is negligible. The midprice and adaptive algos are not supported on cash FX anyway, so the realistic choice is limit-at-mid or plain market. Plain market wins on simplicity, and the cost difference is immaterial.
No live quote. Adaptive immediately; plain market on timeout. When bid/ask is not available at submit (illiquid instruments, market data limits), there is no anchor to set a limit against—use IB's adaptive routing to find liquidity, fall back to plain market if it cannot fill.
Chain: IB adaptive → plain market.
What does my trade cost?
Plug in your trade. The calculator applies our recommended execution policy to both legs of a round-trip.
How we measure
The numbers above come from running real orders, not from broker fee tables. The harness submits small orders against an Interactive Brokers account across four strategies—limit at mid, IB midprice algo, IB adaptive algo, plain market—and records per fill: the slippage versus the midpoint at submit time, the time to fill, and the all-in commission. Trials alternate buy and sell to wash out first-order drift bias.
Slippage is signed: positive means the fill came back worse than mid (cost), negative means price improvement. Sample size n is shown in each cell so you can see how thin or fat the data is. Empty cells mean either the strategy is not supported on that contract type, or live quote data was not available at submit time.
Where there is enough live-account data we use it; otherwise we fall back to paper-account data. Paper is reliable for spread, commission, and fill timing, but slightly distorts limit-strategy slippage—paper fills limits at the mid deterministically, with no book depth or impact modelling. The matrix flags low-n cells so you can interpret accordingly.
The harness, the cost-model engine, and the matrix data are all open-source. Clone the repository, point it at your own IB paper account, and re-run the sweep against your broker tier.
FAQ
How the matrix is built, what the cells mean, and how to use the calculator.
Why measure trading costs instead of using broker fee tables?
Fee tables miss the spread cost, which is the dominant component for tight instruments. They also miss the strategy effect: a limit at mid often fills near-free, while a market order pays the full half-spread plus any impact. Empirical measurement captures both, plus the price improvement that fee tables cannot show.
Why do limit orders sometimes show negative cost (price improvement)?
Marketable limits routed to exchanges that offer price improvement (midpoint matches, dark pools, IEX D-Peg, etc.) can fill inside the visible NBBO. The execution returns better than the snapped mid and the slippage column registers a negative number. It is the broker doing its job, not a measurement quirk.
What is the difference between the IB midprice algorithm and a manual limit at mid?
Both target the mid. The IB midprice algorithm is hosted by Interactive Brokers and waits internally for up to 30 seconds at the prevailing midpoint. A manual limit at mid snaps the bid/ask mid at submit time and posts a limit at that exact price, with up to four 15-second retries if it does not fill. The hosted algorithm is lower workload; the manual approach offers more control and works on a wider range of asset classes (the hosted midprice algorithm is not available on futures, cash FX, or CFDs).
Are these numbers good for million-dollar trades?
No. The harness uses small notional, so size impact—book depth, queue position, market impact at the touch—is not captured. Expect costs to scale up at meaningful size. Treat the matrix as a floor on what tight-spread fills look like in practice, not a ceiling on what large trades cost.
Which broker did you measure?
Interactive Brokers Pro on a tiered commission plan. Other brokers will differ on commission and fee structure; the spread numbers should generalise since they reflect the public market. The calculator's commission table is broker-specific—swap it for your broker's schedule and the bps shift accordingly.
How often does this update?
Manually, after each new harness sweep. The page reads matrix CSVs directly from the public GitHub repository via jsDelivr, so a refresh shows up within roughly 12 hours of a push. The methodology section links to the repository if you want to see the latest commit history.
Reproduce it
The harness, the calculator engine, and the static cost tables are all open-source under MIT. Clone the repository, point it at your own Interactive Brokers paper account, and regenerate the matrix in about ten minutes. Each cell here ships with sample size n so you can judge confidence—and verify our numbers against your own runs.
Disclaimer
This page reports observed execution costs for orders routed via Interactive Brokers; it is not investment advice. Past execution outcomes do not guarantee future ones. Costs you experience will differ based on your broker, account tier, order size, and market conditions. Provided by pfolio GmbH, a financial service provider under the Swiss Financial Services Act (FinSA). Advertising under Art. 68 FinSA. For information only.
Why pfolio?
DIY investing without the downsides
However, DIY investing can be time consuming, complicated & scary. Not with pfolio.
pfolio is investing optimised for performance, flexibility & efficiency.
Get started now
