A strategy does not trade the clean price series shown on a chart. It submits orders into a market where prices move, spreads vary, and fills may differ from the price used to create the signal. A useful backtest makes those frictions visible instead of treating every historical price as freely available.
Four costs that are easy to blend together
Trading cost is not one number. Separate each source so you can explain the assumption, change it, and see which part of the strategy is most sensitive.
Commissions
Commissions and explicit fees are usually the easiest costs to document. They may be charged per share, per contract, per order, or through another schedule. “Commission free” does not mean execution is frictionless; it only removes or changes one visible fee.
Bid-ask spread
A buyer often crosses toward the ask and a seller toward the bid. A test that always transacts at a midpoint or last-traded price can give the strategy a price that was not realistically available for the order being modeled.
Slippage
Slippage is the difference between an expected execution and the actual fill. It can result from fast price movement, order type, liquidity, delay, gaps, or queue position. It is not constant, so a single estimate should be treated as a scenario rather than a promise.
Market impact
Larger orders can consume available liquidity and influence the price. A test based on small historical bars may not reveal whether the proposed size could have traded without changing the market. Capacity is therefore part of the strategy specification, not an afterthought.
Why turnover changes the question
Small costs can become decisive when they repeat frequently. A slow strategy with a wide expected edge may react differently to friction than a high-turnover strategy whose average trade is small. Compare total modeled costs with gross strategy results, the average trade, and the frequency of entries and exits.
Do not conclude that a cost assumption is harmless merely because its per-trade value looks small. Ask how often it occurs and whether the strategy depends on very precise entry or exit prices.
If a modest cost estimate erases the result, the useful finding is fragility—not a reason to hide the estimate.
Use scenarios instead of one “correct” number
Historical execution cannot be reconstructed perfectly from bar data. Build at least three documented scenarios: a low-friction case, a central planning case, and a stressed case. The numbers should reflect the instrument, order type, timeframe, and expected size—not a generic value copied from another strategy.
- Start with explicit fees. Record the applicable commission and venue assumptions.
- Model the spread. State whether entries and exits transact at the bid, ask, midpoint, or another defensible convention.
- Add slippage scenarios. Test more than one value and explain what each scenario represents.
- Review turnover. Calculate how often the assumed friction is paid and which trades are most affected.
- Stress size and liquidity. Ask whether the historical volume and spread could plausibly support the order.
Match the cost model to the order logic
A market order, limit order, stop order, and next-bar execution do not share the same fill assumptions. Neither do a daily strategy and an intraday strategy. Write the order type, submission time, earliest possible fill, and behavior when the desired price is not available.
This timing work complements the look-ahead bias audit. A cost estimate cannot repair an impossible signal-to-fill timeline, and a valid timeline does not make a frictionless price realistic.
Inspect trades instead of trusting only totals
Review several individual trades under each cost scenario. Include ordinary trades, fast-moving periods, gaps, and the trades that contribute most to the result. Confirm that the assumed execution is consistent with the strategy rules and the data resolution.
Then repeat the broader backtest validation checklist after costs are applied. A strategy can pass the logic audit and still fail the economic test once realistic friction is included.
What a cost-adjusted test can tell you
It cannot predict the exact price of a future fill. It can show whether the conclusion survives a defensible range of execution assumptions, whether turnover consumes the modeled edge, and where the strategy needs more evidence.
Preserve the gross result, each cost input, the cost-adjusted result, and the scenario name together. That record makes later paper observation easier to compare without rewriting history.
Historical tests are hypothetical, depend on their data and assumptions, and do not predict future results. Actual commissions, spreads, slippage, liquidity, delays, and market impact can differ materially from a model. Paper trading also differs from live execution. This material is educational and is not financial advice or a recommendation to trade.