Take your best backtest and multiply the fees by four. Then run it again.

If the equity curve barely moves, good. If it collapses, you've just learned something a clean backtest was never going to tell you.

Why your cost assumption is probably wrong

Most of us plug in an exchange's fee schedule and call it done. On a big crypto exchange that's roughly 0.1% for a round trip if you're crossing the spread with market orders. It feels precise. It isn't.

Real costs include slippage on thin hours, funding payments, the occasional missed fill, and the day the order book is half empty because everyone is running for the exit. Those costs aren't constant. They spike exactly when your system wants to trade most.

So the number in your backtest is the best case. I think of it as the price on the menu, not the bill.

Two systems, same fee assumption

Here's a made-up but realistic comparison. System A trades 300 times a year and earns an average of 0.30% per trade before costs. At 0.10% costs, that's 0.20% net per trade, or about 60% a year before compounding. Looks great.

Now quadruple the costs to 0.40%. Net per trade is minus 0.10%. The same system now loses about 30% a year. Nothing about the signal changed. The edge was always smaller than the cost uncertainty.

System B is a trend follower that trades 12 times a year and averages 4% before costs. At 0.10% costs it pays about 1.2% a year in friction. At 0.40% it pays about 4.8%.

That hurts. It's also nowhere near fatal.

What the stress test actually measures

Most people read this as pessimism. It isn't. You aren't predicting that fees will quadruple.

You're measuring how much of your result is edge and how much is a fee assumption wearing a Sharpe ratio. A strategy that only works at exactly its assumed costs hasn't been proven. It's been fitted.

The ratio matters more than the headline return. Divide your average gross profit per trade by your round-trip cost. If it's 3 to 1, one bad quarter of slippage will erase you. If it's 40 to 1, you can be wrong about costs by a lot and still be fine.

The mistake that keeps repeating

High-frequency retail bots are the usual victims. The backtest shows hundreds of small wins, and the optimizer loves it because small wins accumulate smoothly. Smooth is seductive.

But a small edge per trade multiplied by a large trade count is a bet that your cost model is perfect. You're stacking a lot of weight on one estimate you can't verify. When the market changes, the estimate moves and the whole stack goes with it.

I've watched people spend months tuning an entry signal and never once check what happens when a fill comes in 0.15% worse than expected. The signal gets the attention. The cost line decides the result.

Do this before you go live

Run three versions of every backtest: your assumed costs, double, and quadruple. Write the three results side by side.

If the strategy is profitable at double and still breathing at quadruple, you probably have an edge that's bigger than your friction. If it flips negative at double, don't deploy it. Find a slower version or a bigger move per trade.

Then compare live fills against the backtest every month. Your own trade log is the only honest cost model you'll ever get.

Slower systems with fat average wins tend to pass this test easily, which is one reason we favor them. The full cost assumptions behind our results are published at v33systematic.com, so you can stress them yourself.