For educational purposes only. This content does not constitute financial advice or a recommendation to buy or sell any security.
← Blog
Practice17 May 2026 · 6 min read

The Difference Between Gross and Net Returns

A precise breakdown of the cost stack separating paper backtest performance from realized account returns in systematic strategies.

A backtest that reports a 38% annualized return without specifying what has been deducted is reporting noise. The gap between gross and net returns is not a footnote — for high-turnover systematic strategies, it routinely consumes more than half of paper performance, and occasionally all of it. Every strategy a serious trader evaluates lives or dies in that gap. This post defines the cost stack precisely and shows how each layer compounds against you.

Gross return is a hypothesis, not a result

Gross return is the return your strategy would have earned in a frictionless market: instant fills at the decision price, no commissions, no borrow fees, no taxes, no slippage. It is useful exactly once — as a sanity check that your signal contains information. After that, it is misleading.

Net return is what arrives in the account. The relationship is straightforward in form but punishing in magnitude:

R_net = R_gross − commissions − slippage − financing − borrow − fees − taxes

Each term scales differently with turnover, position size, holding period, and instrument. Treating them as a single fudge factor is the most common mistake in retail backtesting, and it produces strategies that look profitable on paper and bleed in production.

The cost stack, layer by layer

Commissions are the easiest to model and the smallest concern for most modern equity strategies. With zero-commission brokers, the visible per-trade fee is often zero, but regulatory pass-throughs (SEC, FINRA TAF, exchange fees) still apply. For futures, commissions plus exchange fees of $2–$5 per contract per round-turn matter materially for short-holding-period strategies.

Slippage is the difference between the price your backtest assumes and the price you actually transact at. For a market order on a liquid large-cap, this is a few basis points. For a thinly traded small-cap, an options spread, or a size that consumes multiple levels of the book, it can dwarf every other cost combined. Slippage is non-linear in order size and time-varying with volatility — modeling it as a flat 5 bps per side is a convenient lie.

Financing applies whenever you use leverage. Overnight margin loans, futures roll costs, and swap rates on CFDs all accrue daily and are invisible in a price-only backtest. Borrow fees apply to short positions and range from a few basis points annualized for general collateral to over 100% for hard-to-borrow names. Both compound continuously against returns.

A strategy that holds short positions in small-cap stocks and shows strong gross returns is the single most common case of backtest fiction. Locate fees of 20–80% annualized are routine for the names that produce the most attractive short signals. Without a borrow-cost model calibrated to actual broker rates, the backtest is unusable.

Turnover is the multiplier

The single number that determines how much gross-to-net erosion you suffer is annual turnover. If your one-way transaction cost is c (commissions plus slippage) and your annual two-way turnover is T, the cost drag is approximately:

Cost drag (annual) ≈ 2 × c × T

A strategy with 10 bps one-way costs and 20x annual turnover loses 400 bps per year before any other deduction. A strategy with the same edge and 2x turnover loses 40 bps. Two strategies with identical gross Sharpe can have wildly different net Sharpe purely because one trades ten times as often. This is why turnover should appear in every backtest summary alongside return and drawdown.

Taxes are part of the strategy

Most retail backtests ignore taxes entirely on the grounds that they are personal. This is defensible for comparing strategies in the abstract, but not for sizing capital allocation decisions. A high-turnover strategy generating short-term capital gains at a 37% federal marginal rate has a fundamentally different after-tax profile than a low-turnover strategy generating long-term gains at 20%, even with identical pre-tax Sharpe.

The relevant comparison for capital allocation is after-tax compound growth, not pre-tax. For US taxable accounts, the formula approximates as:

R_after_tax ≈ R_net × (1 − t_st × f_st − t_lt × (1 − f_st))

where f_st is the fraction of gains realized short-term. A strategy that converts long-term-style edges into short-term realizations through frequent rebalancing can underperform a buy-and-hold benchmark on an after-tax basis even when it outperforms gross.

What to demand from your backtest

Every backtest output should display gross return, total cost deduction broken into commissions, slippage, financing, and borrow, and net return. Turnover should be visible. The slippage model should be specified — a constant, a function of spread, a function of participation rate, or a market impact model — and the assumed parameters reported. If any of these are missing, the result is incomplete.

The useful question is never "what did this strategy return?" but "what did this strategy return, under which cost model, at which assumed fill quality, with which borrow assumptions?" Two answers to the first question that differ by 1500 bps can both be defensible answers to the second.

In Kestrel Signal, the cost stack is configurable per-instrument and per-venue, and the gross/net decomposition is surfaced by default. The platform refuses to display a single headline return number — because a single number is the question that started this whole problem.

More in Practice
A checklist for evaluating whether a backtest result is worth trusting8 min readReading an Equity Curve: What Smooth Actually Means6 min readHow Transaction Costs Silently Destroy Strategy Edge6 min read
← All postsTry it on a real backtest