How does the Trading Friction toggle work?
Strategy results which ignore trading costs overstate what you would have actually earned. The Trading Friction toggle (on by default) deducts an estimated cost from each month's return based on how much the strategy actually traded that month.
The model is turnover-weighted. Each month, the strategy's new target ETF weights are compared against what it was already holding as the month opened. The sum of the absolute weight changes is the turnover, and each traded slice is charged a one-way cost based on the ETF's leverage:
| ETF type | One-way cost |
|---|---|
| Non-leveraged (1×) | 10 bps (0.10%) |
| 2× leveraged | 15 bps (0.15%) |
| 3× leveraged | 20 bps (0.20%) |
So a month that rotates 50% of the portfolio out of one 1× ETF and into another costs roughly 0.10% (10 bps on the 50% sold + 10 bps on the 50% bought). Leveraged ETFs are charged more because their wider spreads and higher trading impact make them costlier to trade in practice.
Holdings that are left alone still move. This is the subtle part, and it is why the comparison is against what the strategy was holding rather than against last month's published percentages. If you hold 50% stocks and 50% bonds and stocks gain 10% while bonds are flat, you are holding roughly 52.4% / 47.6% a month later without having placed a single trade. Those percentages changed, but nothing was bought or sold and nothing was owed to a broker.
Two consequences follow:
- A month spent holding costs nothing, even though the published allocation percentages moved. Strategies that deliberately let positions run - buy-and-hold portfolios, and the drift-band strategies that only trade once a position wanders outside its band - are charged only in the months they genuinely trade.
- Rebalancing back to an unchanged target is not free. Returning that 52.4% / 47.6% portfolio to a 50/50 target means actually selling stocks and buying bonds. The target looks identical to last month's, but real money moved, and friction is charged accordingly.
Other points:
- The toggle is global - it flows through every view, chart, metric, and calculator, including benchmarks.
- Benchmarks with a known, fixed composition (currently the 60/40) are modeled as annually rebalanced: weights start at the target mix each January (and at inception), then drift with the underlying ETFs' actual returns the rest of the year. Only the January reset generates turnover, so these benchmarks see a small, once-a-year friction cost rather than a monthly one. Single-asset benchmarks like the S&P 500 have no allocation to drift or rebalance, so they see none.
- Imported strategies supply monthly returns only, never allocations, so there is no honest way to estimate their trading costs. Whenever an imported strategy is on either side of a comparison the toggle is disabled, keeping both sides on the same footing.
- The setting is preserved in the page URL, so shared links reproduce your configuration.
If you want to see the "frictionless" academic version of a backtest, switch the toggle off - just remember nobody earns those returns in a real account.