Simulated trades are free to execute in a way real trades never are. A simulation picks a price, assigns a cost, and moves on. Execution involves spreads, queues, partial fills and prices that move while the order is in transit. The difference between the two is small per trade and large per year, and it grows with every additional trade.

This article separates the components of trading cost, then works through a numeric example showing how a fixed cost per trade, stated in basis points, changes which of three strategies looks best.

What a simulation usually charges, and what it leaves out

Most simple simulations reduce trading cost to one number per trade. That number is meant to absorb several different things:

  • Commission and fees. Explicit, usually known in advance.
  • Spread. The gap between the bid and the ask. A market order that buys at the ask and later sells at the bid pays roughly the spread over the round trip.
  • Slippage. The difference between the price the simulation assumed and the price actually obtained. It depends on volatility, order size relative to available liquidity, and timing.
  • Market impact. For larger orders, the price moving against you because of your own trading.

The SEC's investor guidance makes the basic point plainly: prices can change quickly, particularly in fast-moving markets, and investors may not receive the price they saw on their screen (Investor.gov (external site)). A simulation that fills at a reference price with no slippage is assuming that problem away.

Basis points, sides and round trips

Costs are easiest to compare in basis points (bps), where 1 bp is 0.01%. Two conventions cause most of the confusion:

  • Per side vs round trip. A cost of 5 bps per side means 10 bps per round trip (entry plus exit).
  • Per trade vs per year. A per-trade cost only becomes meaningful once multiplied by how many trades the strategy makes and how much capital each trade uses.

The approximate annual cost drag is:

annual drag ≈ round trips per year × round-trip cost × average position size as a fraction of capital

This ignores compounding and assumes cost is proportional to traded value, which is adequate for comparison. It already explains why turnover is the variable to watch.

A worked example: three strategies, three cost levels

All numbers in this section are illustrative, not market data, and not results of any real strategy.

Three hypothetical strategies each trade one position at a time, using 100% of capital per position. Their gross annual returns before costs differ, and so does their turnover:

StrategyRound trips per yearGross annual returnGross edge per round trip
A — slow trend208%40 bps
B — swing10012%12 bps
C — fast reversal40020%5 bps

On gross numbers, C looks best and A worst. Now apply a fixed round-trip cost of 4, 10 and 20 bps. Net return is gross return minus the annual drag from the formula above:

StrategyNet at 4 bps round tripNet at 10 bps round tripNet at 20 bps round trip
A8.0 − 0.8 = 7.2%8.0 − 2.0 = 6.0%8.0 − 4.0 = 4.0%
B12.0 − 4.0 = 8.0%12.0 − 10.0 = 2.0%12.0 − 20.0 = −8.0%
C20.0 − 16.0 = 4.0%20.0 − 40.0 = −20.0%20.0 − 80.0 = −60.0%
Net annual return by cost level (illustrative)
  • 4 bps round trip
  • 10 bps round trip
  • 20 bps round trip
-60%-40%-20%0%A — 20 trips/yrB — 100 trips/yrC — 400 trips/yr4 bps round trip · A — 20 trips/yr: 7.2%4 bps round trip · B — 100 trips/yr: 8%4 bps round trip · C — 400 trips/yr: 4%10 bps round trip · A — 20 trips/yr: 6%10 bps round trip · B — 100 trips/yr: 2%10 bps round trip · C — 400 trips/yr: -20%20 bps round trip · A — 20 trips/yr: 4%20 bps round trip · B — 100 trips/yr: -8%20 bps round trip · C — 400 trips/yr: -60%

Illustrative numbers, not market data. Gross returns and turnover are hypothetical; costs are fixed round-trip bps; compounding ignored.

Show the numbers
4 bps round trip10 bps round trip20 bps round trip
A — 20 trips/yr7.2%6%4%
B — 100 trips/yr8%2%-8%
C — 400 trips/yr4%-20%-60%

Three things stand out:

  1. The ranking flips. At 4 bps, B leads. At 10 bps, A leads. C, the gross winner, is last at every cost level shown.
  2. Breakeven cost equals edge per trade. Strategy C stops making money once round-trip cost exceeds 5 bps. Strategy A tolerates up to 40 bps. That single number, gross edge per round trip, says more about cost robustness than the gross annual return does.
  3. Cost uncertainty scales with turnover. Moving from 4 to 20 bps costs A 3.2 percentage points and C 64. If you do not know your cost to within a few basis points, a high-turnover result is barely a result at all.

Why per-trade costs are rarely fixed

The example uses a constant cost per trade because that is what most simple simulations do. Real costs vary:

  • With volatility. Spreads usually widen and slippage grows when prices move fast, which is often exactly when a signal fires.
  • With size. A fixed bps charge assumes cost is proportional to trade value. Larger orders relative to liquidity tend to cost more per unit.
  • With timing. Orders at the open, the close or around scheduled announcements behave differently from orders mid-session.
  • With fill rules. A simulation that fills at the bar's close assumes you could trade at a price that was only known once the bar ended.

A fixed cost model is still useful for review, provided it is treated as one scenario among several rather than a description of reality. Harvey and Liu show in their work on backtesting that statistical haircuts fall most heavily on marginal Sharpe ratios rather than strong ones (Journal of Portfolio Management (external site)). Costs work in a similar direction: a result whose edge per trade sits close to plausible costs is marginal twice over.

How to test cost sensitivity in practice

A short routine that fits any simulation:

  1. Compute gross edge per round trip. Gross annual return divided by round trips per year, adjusted for position size. Write it next to the headline number.
  2. Run at least two cost scenarios. A base case and a pessimistic case at two to three times the base. If the conclusion changes, the cost assumption is load-bearing.
  3. Find breakeven cost. The round-trip cost at which net return reaches zero. Compare it to what you can reasonably expect to pay.
  4. Check where trades cluster. If most trades happen on high-volatility days, a flat cost model is optimistic for this strategy in particular.
  5. Record the cost model in the assumptions list. Per side or round trip, in bps, applied to what notional.

Where Monoqant fits, and where it stops

In Scenario Comparison, you can run the same strategy parameters under two cost sets, A and B, on labelled synthetic data, with the formula for each metric shown alongside the value. That isolates the cost effect the way the table above does. It is deliberately a simplified simulation: synthetic daily bars, fills at the close, a fixed cost model, no order book and no latency. It does not connect to brokers or execute anything, so it cannot tell you what your real fills would be. What it can do is show whether a result survives a pessimistic cost assumption before anyone treats it as evidence. If you are evaluating an ai trading bot that reports results without stating its cost model, that missing line is the first question to ask. The hidden assumptions checklist covers the rest, and our methodology page documents the cost model in detail.