Get new posts by email

One email per new post with the opening and a link to the rest. Nothing else, unsubscribe any time.

Trading Friction, Rebuilt: What It Really Cost to Trade, Era by Era

Trading Friction, Rebuilt

Every backtest on this site is shown net of trading friction by default, because we all want to see what would really have happened, both in a backtest and in live results as they come in month to month, rather than results without trading friction. A strategy that trades has to pay something every time it buys or sells, and a backtest or live record that ignores that cost overstates what anyone would actually have earned.

What changed is how the cost is estimated. This post covers how it used to be done, what was wrong with it, how it works now, and what it did to the results.

How it used to work

The old model was simple. Every trade was charged a flat one-way cost, set by how leveraged the fund was:

FundOne-way cost, old model
Unleveraged ETFs (VOO, IEF, GLD, BIL...)10 bps (0.10%)
2x leveraged ETFs (SSO, QLD)15 bps
3x leveraged ETFs (UPRO, TQQQ)20 bps

The same rates applied to every month from 1980 to today. The thinking was that leveraged funds are riskier and more expensive to trade, so they should pay more, and that a flat 10 bps was a reasonably conservative figure for everything else.

The turnover side of the model was already sound and has not changed. Each month, the strategy's new target weights are compared against what it was actually holding as the month opened, after the prior month's returns moved the weights around. Only the slices that really have to be bought or sold are charged. A month spent holding costs nothing.

What was wrong with it

A conversation made me take a harder look at the rate itself. The person I was talking with pointed out that leverage is not what drives trading cost. Liquidity is. They were right.

TQQQ is a 3x fund, and it trades on a one-cent spread most days, a cost of about a basis point. A small, thinly traded unleveraged fund can cost twenty times that. Charging TQQQ double what a thin fund pays had it exactly backwards.

Once I started pulling the actual figures, two more problems showed up.

Today's costs were overstated. Almost every US ETF publishes its 30-day median bid/ask spread. For the big, liquid funds the strategies hold most of the time, VOO, QQQ, IEF, TLT and BIL, the spread is about 1 bp. The old model was charging 10.

The past was understated, badly. The backtests start in 1980. There were no ETFs then. Until May 1975 brokerage commissions were fixed by the exchanges, and through the 1980s a round trip in an index fund or a basket of stocks cost far more than it does now. Prices were quoted in eighths of a dollar until 1997 and in sixteenths until 2001. Charging 10 bps for a trade in 1985 was far too generous.

So the old flat rate was too high for recent years and too low for the early years. Those errors do not cancel out, because strategies do not trade the same amount in every era, and some strategies only have history in the recent era.

How it works now

Each traded slice is now charged:

cost = the higher of (the fund's own cost, the era minimum) x a market-stress multiplier

The fund's own cost. Each fund's published 30-day median bid/ask spread, charged in full on every buy and every sell. A patient limit order at the midpoint would pay only half the spread, but trades placed at the open or close, or as market orders, often pay more, and the median sits below the average because bad days skew it. Charging the full spread covers that, with commissions included. A fund with no published figure is charged 10 bps.

The era minimum. No trade pays less than what was realistic for its time:

PeriodMinimum, one wayWhy
Before May 197550 bpsFixed brokerage commissions
May 1975 to 199225 bpsNo ETFs yet; these years use index data
1993 to mid-199715 bpsFirst ETFs, prices quoted in eighths
Mid-1997 to 20008 bpsSixteenths, early online brokers
2001 to 20073 bpsDecimal pricing, $8 to $10 commissions
2008 onward2 bpsModern spreads

These are estimates built from those market milestones and the published research on historical trading costs, not measured figures. I chose them to sit on the conservative side.

The market-stress multiplier. Spreads widen when the whole market panics, and tactical strategies tend to trade most at exactly those moments. Each month's cost is multiplied by the prior month-end VIX divided by 20, never less than 1x and capped at 4x. A calm market pays 1x. Late 2008 and April 2020 paid close to 3x. Before 1990 there is no VIX, so a stand-in built from the stock market's own recent volatility is used, which means the 1987 crash is charged for too.

Here is what that does to the cost of a single trade in an S&P 500 fund across the whole record:

What one trade in an S&P 500 fund costs, then and now

In the 1980s a trade cost 25 to 70 bps depending on how rattled the market was. Through the mid-1990s it was 15 bps. From 2001 on it settles to 2 to 3 bps in calm markets, with short spikes in 2008, 2011, 2020 and 2022. The old flat 10 bps was wrong in almost every month, just in different directions.

The full details are in the FAQ: How does the Trading Friction toggle work?

The effect by era

The clearest way to see what changed is to look at how much return each strategy gave up to trading, era by era, under each model.

Annual friction drag by era

EraEra minimumAverage stress multiplierGlobal Navigator, old → newTriad, old → newCarrier, old → new
1980 to 199225 bps1.22x76 → 22650 → 154-
1993 to mid-199715 bps1.00x54 → 8248 → 72-
Mid-1997 to 20008 bps1.24x39 → 4652 → 5618 → 18
2001 to 20073 bps1.12x49 → 1753 → 2415 → 6
2008 to Sep 20262 bps1.15x60 → 1747 → 1818 → 6

Friction drag in basis points of return per year. Carrier's history begins in January 1997.

The pattern is the same for every strategy that trades regularly. In the 1980s the new model charges about three times what the old one did. In the mid-1990s it charges about half again as much. From 2001 on it charges well under half, often about a third. In the modern era, a strategy that rotates most months is giving up something under 20 bps a year, not 50 or 60.

What it did to the headline numbers

Whether a strategy's full-history return went up or down depends almost entirely on when its history starts.

StrategyHistory fromFriction cost per year, old → newNet CAGR, old → new
Global Navigator19800.69% → 0.95%14.48% → 14.21%
Global Navigator 30019800.80% → 0.89%22.25% → 22.16%
Triad19800.56% → 0.74%14.62% → 14.43%
Triad 17019800.64% → 0.79%17.13% → 16.96%
HAA19800.66% → 0.79%14.37% → 14.24%
Permanent Portfolio DMS19800.01% → 0.02%8.97% → 8.96%
Carrier19970.19% → 0.08%12.86% → 12.96%
Carrier 24019970.40% → 0.12%17.91% → 18.19%
Catalyst20030.71% → 0.23%23.43% → 23.91%
Catalyst 30020031.05% → 0.28%39.52% → 40.28%
Quiet Compounding20030.57% → 0.19%15.73% → 16.10%

January of the start year (May 2003 for Catalyst and Quiet Compounding) through September 2026.

Strategies with history back to 1980 now carry the expensive 1980s in full, so their long-run returns came down by roughly a tenth to a quarter of a point. Strategies that start in 1997 or 2003 never saw that era and now benefit from modern spreads, so their returns went up. Catalyst 300 gained more than three-quarters of a point a year. The leveraged versions gained the most, because the old model's 15 and 20 bps leverage surcharge is gone.

I'll admit Triad surprised me. I expected a strategy that trades often to come out ahead under a model that charges a lot less today. It did come out ahead for every year since 2001, but the 1980s more than took it back. That is the right answer. The point of this work was to make the numbers more accurate, not more flattering.

Buy-and-hold style allocations, like Permanent Portfolio DMS, barely moved. They trade once a year, so the rate charged hardly matters.

What it means for comparing strategies

Two things are worth keeping in mind.

A long backtest now carries a real handicap for its early years. When you compare a 1980-start strategy against a 2003-start strategy over their own full histories, the older one is paying for an era the newer one never traded in. That was always true of market conditions; now it is true of trading costs as well. If you are comparing strategies on Dual Momentum Systems, view them together: the date range will be in sync, and so will the trading friction costs.

The modern-era numbers are closer to what you will actually pay. If you trade the strategies today in liquid ETFs, the friction you should expect is the 2008-onward column, not the full-history average.

Where the estimate is still approximate

You can always turn off trading friction and see unadjusted returns and metrics on the site too. Just remember that nobody earns those in a real account.


Past performance, including backtested results, is not indicative of future results. Backtested performance is hypothetical and does not reflect actual trading. Trading costs before each fund's launch, and before ETFs existed, are estimates.