Begin with the difference between gross and net
A historical simulation can look attractive before the costs of implementing its transactions are considered. The first question is therefore not whether the displayed result is large, but whether it is gross or net and exactly what has been deducted. Investor.gov explains that transaction and ongoing fees reduce investment returns. A backtest needs a clear accounting of the costs relevant to its own assumed activity.
The ledger below is an original research framework, not a validated investment strategy. Bailey and coauthors' work on backtest overfitting addresses a separate reason to question historical results. Adding a cost model does not fix model selection problems. It simply makes one part of the simulation more explicit so a reader can see which economic assumptions stand between the calculated result and a possible real-world implementation.
Primary-source context: Investor.gov: How Fees and Expenses Affect Your Investment Portfolio; Bailey, Borwein, Lopez de Prado and Zhu: The Probability of Backtest Overfitting.
Write a cost ledger with consistent units
Separate costs charged per transaction from costs related to holding an instrument or maintaining an account. For each modeled item, record the rate or amount, the basis to which it applies, and whether it is charged on entry, exit, or over time. A percentage of traded notional is not the same as a percentage of account value. Mixing those bases can make a plausible-looking calculation wrong.
Consider commissions, bid-ask effects, slippage relative to the chosen reference price, and other applicable charges. Some strategies require additional assumptions about financing, borrowing, foreign exchange, or taxes; the relevant treatment depends on the study. State what is excluded and why. Avoid importing a universal all-in cost figure from an unrelated context. A deliberately simplified model is acceptable for an illustration if it is clearly labeled and not presented as an execution estimate.
Model how activity translates into cost
Describe turnover precisely. Does 100% turnover mean one side of transactions equal to the whole portfolio value, or does it count both purchases and sales? Different conventions produce different cost calculations. State the chosen convention before presenting any percentage. For transaction-level simulations, preserving each assumed fill and its cost basis can be clearer than applying one broad haircut at the end.
Keep the reference price distinct from the simulated execution price. If the model already executes buys above the midpoint and sells below it, adding a separate full spread charge may double count the same effect. Similarly, a slippage assumption should specify whether it already includes spread or only additional price movement. The ledger should let a reviewer trace every deduction once, without needing to guess how overlapping labels were combined.
Worked example: an illustrative round trip
Suppose an invented simulation buys 100 shares at a reference price of 50 and later sells them at a reference price of 51. The gross gain is 100 currency units. Assume, solely for this example, execution is 0.03 worse per share on both sides and commissions are 2 per side. Entry execution cost is 3, exit execution cost is 3, and commissions total 4, leaving a net gain of 90 before any other costs.
Now suppose the gross price change had been only 0.05 per share. The gross gain would be 5, while the same modeled costs total 10, producing a net loss of 5. The example does not estimate typical market costs or imply a profitable rule. It shows why a cost assumption can matter differently depending on the size and frequency of modeled gains.
A sensitivity table could repeat the exercise with adverse execution of 0.01, 0.03, and 0.06 per share. These are deliberately chosen scenarios, not forecasts or confidence intervals. The purpose is to expose dependence on the assumption.
Take this question further: Adjusted vs Unadjusted Stock Prices: Which Series Answers Your Question? Then read Look-Ahead Bias: Keep Future Information Out of Historical Decisions.
Reusable backtest cost checklist
Label results gross or net. List every cost component, its units, its calculation basis, and its timing. Define turnover and the reference price. State whether spread and slippage overlap. Include applicable holding and financing assumptions, or explain their exclusion from the study's scope.
Inspect a sample transaction from signal through assumed execution and final accounting. Reconcile the cost in currency units before converting it to a portfolio percentage. Compare several plausible-for-the-study scenarios without selecting only the one that preserves an attractive outcome. If cost estimates lack empirical support, describe the exercise as sensitivity analysis rather than a realistic execution model.
Keep a versioned record of assumptions alongside the result. If changing one small cost input reverses the conclusion, make that fragility prominent. It is a substantive finding about the simulation, not a formatting detail to bury beneath the headline result.
Reconcile turnover in currency before applying a rate
Consider a hypothetical portfolio worth 100,000 currency units immediately before a rebalance. The simulation sells holdings worth 20,000 and buys replacements worth 20,000. Under a convention that sums purchases and sales, traded notional is 40,000, or 40% of starting portfolio value. Under an explicitly defined one-sided convention, the same replacement activity might be described as 20% turnover. The economic activity has not changed; only the reporting convention has. A cost formula must state which measure it uses before the resulting deduction can be interpreted.
Assume an illustrative cost of ten basis points, meaning 0.10%, applied to each unit of traded notional. Multiplying 40,000 by 0.001 gives a modeled cost of 40, equal to 0.04% of the 100,000 portfolio. Multiplying the one-sided 20,000 measure by the same rate without accounting for both sides would produce 20 and omit half the specified transaction basis. These rates are invented for arithmetic, not estimates of available execution terms. Real model inputs require evidence appropriate to the instruments, order sizes, and implementation being studied.
Build a rebalance worksheet with starting wealth, sales, purchases, total traded notional, turnover convention, cost rate, and cost in currency units. Reconcile the currency deduction before presenting a percentage. If costs reduce cash available for purchases, show how the purchase amount changes instead of assuming the portfolio can spend both the entire sale proceeds and the fees. If the study uses external cash to pay costs, disclose that funding convention. A result that ignores the funding source may reconcile gross holdings while overstating net wealth, especially when repeated rebalances are chained together across time.
Separate reference prices from actual deductions
A hypothetical trade has a midpoint reference of 50.00. The model buys 100 shares at 50.02 and later sells them at 50.98 when the exit midpoint is 51.00. Gross midpoint profit is 100. Execution-price profit is 96 because the buy and sell each lose 2 relative to their respective reference. If commissions are 1 per side, the remaining profit is 94. This ledger has already included 4 of execution disadvantage in its fill prices; subtracting that same 4 again as a spread charge would double count it.
Give each cost line a precise relationship to the reference. A model that applies an all-in adverse adjustment should describe which effects that adjustment is intended to include. A model that separates spread from additional slippage must define the boundary between them. Otherwise two reasonable-looking labels can refer to the same difference between reference and fill. The problem is not solved by calling every deduction conservative. Double counting changes the modeled economics and can obscure which assumption would need better evidence, even when the resulting headline appears appropriately cautious.
A practical worksheet contains reference price, fill price, quantity, signed trade direction, explicit fee, and any separately modeled charge. For buys, adverse execution is fill minus reference, multiplied by quantity. For sells, it is reference minus fill, multiplied by quantity. Favorable differences should retain their sign if the model allows them; silently flooring every difference at zero is another assumption. Reconcile profit using both the cash ledger and the reference-profit-minus-costs route. Agreement shows the specified components have been accounted for consistently, while leaving the realism of the selected reference and fill assumptions as a separate research question.
Make partial fills and unfilled orders change the ledger
Suppose an original hypothetical simulation plans to buy 1,000 shares at a reference price of 20. Its stated fill model permits only 400 shares at 20.05 during the eligible execution window, with a total commission of 2. Starting cash is 25,000. The completed purchase spends 8,020 plus 2, leaving cash of 16,978 and a holding of 400 shares. If the evaluation price is later 21, holdings are worth 8,400 and total wealth is 25,378 before any other effects. The gain is 378 under these invented assumptions.
Filling the remaining 600 shares retroactively at the reference price would describe a different execution path. So would carrying the unfinished order into a later session. Either requires an explicit rule. The order worksheet should distinguish requested quantity, filled quantity, canceled quantity, remaining quantity, fill time, and cash reserved. A planned position is not an actual simulated holding until its fill rule permits it. Keeping this distinction visible also prevents a performance engine from earning returns on quantities that the execution model never acquired.
Set the order's time limit and treatment of insufficient cash before reviewing results. For a simplified research exercise, it can be reasonable to assume all eligible orders fill, provided that assumption is prominent and not described as demonstrated execution. If partial fills are modeled, subsequent allocations must use actual simulated holdings and remaining cash. Do not calculate risk on one position set while calculating returns on another. The example's value is the consistent state transition from order to fill to holdings, not the particular fill quantity or price, neither of which is a claim about a real market's available liquidity.
Solve for break-even costs without calling them realistic
A hypothetical one-period strategy produces gross profit of 300 currency units and trades total notional of 150,000 under a stated convention. Assume every modeled transaction cost is represented by a single proportional rate, with no fixed fees or holding charges. The break-even rate is 300 divided by 150,000, or 0.002. That is 0.20%, equivalent to twenty basis points per unit of traded notional. A rate below that threshold leaves a positive modeled profit; a rate above it makes the simplified result negative. The threshold is arithmetic, not evidence about achievable costs.
Now add fixed charges totaling 60. Only 240 of gross profit remains available to absorb the proportional component, so its break-even rate becomes 240 divided by 150,000, or sixteen basis points. Show both scenarios rather than merging them into an unexplained all-in number. If the gross result is already negative, there is no positive cost allowance that turns it profitable under this deduction-only model. This observation can help organize research effort without implying that a strategy near break-even would work if only a cheaper service were found.
Use a worksheet with gross profit, fixed charges, traded-notional definition, proportional rates, and resulting net profit. Choose sensitivity scenarios before selecting a favorite result. A uniform rate may be adequate to explain dependence on cost, but it does not capture differences among orders. If a small subset of large or difficult orders dominates uncertainty, identify that concentration separately. For multiple periods, reconcile costs at their modeled times rather than assuming a one-period break-even calculation exactly describes a compounded wealth path. Label the exercise as a diagnostic threshold and state which cost components and funding effects it deliberately leaves outside the calculation.
Keep holding charges and end-of-study treatment explicit
Consider a hypothetical financing assumption of 6% simple annual interest on a constant borrowed balance of 10,000, using an explicitly chosen 360-day convention. Holding that balance for thirty days produces a modeled charge of 50: 10,000 times 0.06 times thirty divided by 360. The rate and convention are invented and do not describe a lender's terms. Their purpose is to show that a holding charge depends on amount and elapsed time, unlike a transaction charge applied only when notional changes hands. Variable balances would require a schedule instead of this single multiplication.
The cost worksheet should record accrual basis, balance, dates, rate, payment timing, and whether unpaid charges affect available cash. Treat borrowing availability as separate from a borrowing-rate assumption when a simulation requires it. Assigning a numerical rate does not establish that the intended position could have been opened or maintained. Likewise, listing foreign-exchange or tax costs as excluded is clearer than implicitly declaring them zero. Keep the scope of an educational model explicit without importing tax rules, account terms, or lending conditions that have not been verified for the actual situation.
Finally, state how the study ends. A portfolio marked to a reference price while still holding positions differs from one hypothetically liquidated at modeled execution prices with exit fees. If the reported result assumes liquidation, include the corresponding transactions and costs once. If it reports ongoing marked wealth, say that future exit costs are not included. This distinction can matter even for a short demonstration. It gives readers a complete accounting endpoint and prevents a net label from implying that every cost of realizing the displayed value has already been deducted when the model stops before those transactions occur.
What net results still cannot prove
A positive result after modeled costs does not demonstrate that the strategy could have been traded as assumed. Fill availability, market impact, information timing, historical membership, and repeated experimentation remain separate questions. Real costs can vary, and a constant deduction cannot capture every implementation condition.
Do not treat a conservative label as evidence that a cost assumption is conservative. Explain its basis and show how the conclusion changes when it moves. Likewise, a negative result under one deliberately severe scenario does not prove that every possible implementation fails. The useful output is a transparent relationship between activity, assumptions, and calculated outcomes. That relationship supports further investigation without turning a backtest into a promise of attainable returns.
Sources and editorial approach
Sources consulted on 2026-09-19. Examples and checklists are Momentu’s editorial frameworks, not validated strategies for generating returns.
General education, not personalised investment advice. Investing involves risk, including loss of capital. Read our editorial standards.