Tools

Order execution costs

Empirical bps cost by asset class and order strategy — measured on live Interactive Brokers fills, not lifted from fee tables.

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 realized 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's 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 algo did its job.

n is the count of FILLED trials in the slice. Color 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 don't yet have enough fills to call it confidently. not supported means the order type isn't available for that category (e.g. the IB midprice algo on futures, the adaptive algo on FX/CFD). How we measure →

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 doesn't 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 isn't 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 doesn't fill within 35 seconds, drop to IB adaptive; if that doesn't fill, plain market. When the spread is small, retry overhead isn't 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.

No live quote. Adaptive immediately; plain market on timeout. When bid/ask isn't available at submit (illiquid instruments, market data limits), there's no anchor to set a limit against — use IB's adaptive routing to find liquidity, fall back to plain market if it can't. 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 isn't supported on that contract type, or live quote data wasn't 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 repo, point it at your own IB paper account, and re-run the sweep against your broker tier.

FAQ

Six questions readers ask before trusting the matrix.

Why measure trading costs instead of using broker fee tables?
Accordion arrow

Fee tables miss spread cost — the dominant component for tight instruments — and miss the strategy effect: a limit at mid often fills near-free while a market order pays the half-spread. Empirical measurement captures both, and reveals price improvement that fee tables can't.

Why do limit orders sometimes show negative cost (price improvement)?
Accordion arrow

When IB routes a marketable limit to an exchange offering price improvement (mid-point matches, IEX D-Peg, etc.), the fill comes back better than the visible NBBO. Live data captures this; paper does not, because paper fills at the calculated mid deterministically.

What's the difference between the IB midprice algo and a manual limit at mid?
Accordion arrow

Both target the mid. IB midprice is IB's hosted algorithm with a ~30 second internal wait at the prevailing mid; limit-at-mid is a manual limit at the snapped mid with up to four 15-second retries. Midprice is lower workload; manual limit gives more control and works on more asset classes.

Are these numbers good for million-dollar trades?
Accordion arrow

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?
Accordion arrow

Interactive Brokers Pro, tiered commission. 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?
Accordion arrow

Manually, after each new sweep. The page reads matrix CSVs directly from the public GitHub repo via jsDelivr, so a refresh shows up within ~12 hours of a push. The methodology section links to the repo if you want to see the latest commit history.

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

Managing your own investments allows for the highest degree of flexibility while minimising fees.

However, DIY investing can be time consuming, complicated & scary. Not with pfolio.

pfolio is investing optimised for performance, flexibility & efficiency.
Performance
Build portfolios optimised for maximum risk-adjusted returns using Nobel Prize-winning Modern Portfolio Theory. Diversify across ETFs, stocks, futures, crypto and more.
Flexibility
Design portfolios with any assets you choose—ETFs, stocks, futures, cryptocurrencies and more. Set your own risk level and geographic exposure, then invest via your own broker.
Efficiency
Minimise portfolio management fees and time with a systematic, data-driven investment strategy across any asset class. Rebalance on your schedule, not someone else's.

Get started now

It is never too early and it is never too late to start investing. With pfolio, everybody can be their own wealth manager.
pfolio — start investing for free, broker-agnostic DIY portfolio management
This website uses cookies. Learn more in our Privacy Policy