---
title: How much do trading fees hurt a crypto backtest? We tested
url: https://comparand.xyz/blog/crypto-trading-fees-backtest-impact
description: A Bitcoin rule that trades about 210 times a year went from 27.52% to 3.41% a year as fees rose. The daily version barely changed. See the table.
updated: '2026-10-21'
category: Patterns
---

# How much do trading fees hurt a crypto backtest? We tested

A Bitcoin rule that trades about 210 times a year went from 27.52% to 3.41% a year as fees rose. The daily version barely changed. See the table.

Fees take a bigger bite the more often a rule trades. In our test on Binance Bitcoin, a simple moving-average rule on 1-hour bars traded about 210 times a year. It earned 27.52% a year before fees, 14.84% at a 0.05% fee per side, and 3.41% at 0.10%. The same rule on daily bars traded about 8 times a year and went from 31.19% to 30.14%, even at 0.10%.

These are past results from one simple rule, not a forecast, and fees are only one of the costs real trading has.

## What rule did we test?

We used a classic rule built on two moving averages. A **moving average** is the average of the last N closing prices. We used the last 20 closes and the last 50 closes, called SMA20 and SMA50.

We tried two versions:

- **Long-flat:** be long (gain if price rises) when SMA20 is above SMA50, and stay out otherwise.
- **Long-short:** be long when SMA20 is above SMA50 and short (gain if price falls) when it is below.

The averages at the close of a bar set the position for the next bar. So the test never uses prices from the future.

We ran each version on Bitcoin, Ethereum and Solana perpetual futures on Binance, at 1-hour, 4-hour and daily bars. A **perp** is a futures contract that never expires. A **bar** is the open, high, low and close price over a set time.

## How do fees change the result?

A **fee per side** is paid when you open a trade and again when you close it. We charged 0.02%, 0.05% and 0.10% per side. These are our test settings, not any exchange's price list, so check your own fee table.

This table shows the long-flat rule, in percent per year, with annual numbers so the coins compare fairly.

| Coin, bars | Trades per year | Before fees | Fee 0.02% | Fee 0.05% | Fee 0.10% |
| --- | ---: | ---: | ---: | ---: | ---: |
| Bitcoin, 1h | 209.5 | 27.52% | 22.29% | 14.84% | 3.41% |
| Bitcoin, 4h | 50.9 | 19.61% | 18.40% | 16.61% | 13.68% |
| Bitcoin, 1d | 8.0 | 31.19% | 30.98% | 30.67% | 30.14% |
| Ethereum, 1h | 208.0 | 46.30% | 40.34% | 31.85% | 18.82% |
| Ethereum, 4h | 50.4 | 28.03% | 26.74% | 24.84% | 21.73% |
| Ethereum, 1d | 7.2 | 55.39% | 55.17% | 54.84% | 54.29% |
| Solana, 1h | 197.9 | 69.99% | 63.39% | 53.97% | 39.46% |
| Solana, 4h | 47.9 | 102.21% | 100.28% | 97.42% | 92.74% |
| Solana, 1d | 7.1 | 71.07% | 70.83% | 70.47% | 69.87% |

The pattern is the same for all three coins. Hourly rules lose the most to fees. Daily rules lose almost nothing.

*Diagram: Show three bars per coin for 1h, 4h and 1d, each split into the part kept after a 0.05% fee and the part paid in fees.*
## Why do faster rules pay so much more?

The math is simple. Fees paid per year are roughly trades per year times the fee per side.

At 0.05% per side, Bitcoin's 1-hour rule paid about 10.47% of the account each year in fees. The 4-hour version paid 2.54%, and the daily version paid 0.40%.

The chart's gray "lost" number for the 1-hour rule (the drop from 27.52% to 14.84% a year) is a bit bigger than the 10.47% fee bill, because money paid in fees is no longer in the account to grow with the rule's later gains.

That is why the 1-hour rule gave up almost half of its yearly return at 0.05% (27.52% down to 14.84%). The daily rule gave up about half a percentage point (31.19% down to 30.67%).

## Do long-short rules lose even more?

Yes. When a long-short rule flips from long to short, it closes one trade and opens another. That is two sides, so two fees.

In our Bitcoin 1-hour test the rule changed positions about 210 times a year, which is 419.10 sides. Here is how that played out at 0.05% per side:

| Coin, bars | Sides per year | Before fees | Fee 0.05% |
| --- | ---: | ---: | ---: |
| Bitcoin, 1h | 419.1 | −1.70% | −20.29% |
| Ethereum, 1h | 415.8 | 2.11% | −17.06% |
| Solana, 1h | 395.9 | −20.03% | −34.40% |

Ethereum's 1-hour long-short rule made a small gain before fees. After a 0.05% fee it lost 17.06% a year. Fees turned a small plus into a clear minus.

## Did the rules beat just holding?

Not mostly. Before judging a fee result, compare it with buy and hold, which means buying once and not trading.

- **Bitcoin:** buy and hold earned 33.74% a year on the 1-hour data. The long-flat rule earned 14.84% at 0.05%. At every bar size, the rule fell short of holding.
- **Ethereum:** the daily rule earned 54.84% a year at 0.05% against 49.17% for holding. The 1-hour rule earned 31.85% against 52.14%.
- **Solana:** the 4-hour rule earned 97.42% at 0.05% against 75.65% for holding. The 1-hour rule earned 53.97% against 75.76%.

So fees are only one part of the story. Only 2 of the 9 long-flat tests beat holding after a 0.05% fee: Ethereum daily and Solana 4-hour. Those two also beat more than 95% of random runs that traded as often. But with 9 tries, a couple of standouts can come from luck. Both also earned much less per year in 2023 to 2026 than in 2019 to 2022 (Ethereum daily 25.00% against 101.41%, Solana 4-hour 84.00% against 121.81%). The [Sharpe ratio guide](https://comparand.xyz/blog/sharpe-ratio-explained-crypto) shows the same rules scored on risk.

We also tried random entries with the same number of trades and the same holding lengths. For Bitcoin on 1-hour bars, 23% of 200 random runs did better than the rule after a 0.05% fee. So even a rule that looks fine is not clearly beating random timing. This is one rule family on three coins, not a search for rules that work.

## How we measured this

We used Binance perpetual futures bars for Bitcoin (from September 2019), Ethereum (from November 2019) and Solana (from September 2020), all to October 19, 2026. Each rule used closed bars only. The first 50 bars were flat while the averages warmed up. Each change of position paid the fee on the size traded, so a long-short flip paid twice. Returns are compounded and shown per year.

Limits: we left out funding payments on perps, the gap between buy and sell prices, slippage and delays, so real costs are higher than shown. We tested one simple rule on three coins that still trade today. Results from a market that mostly rose are not typical of every period. Past cases, not a forecast.

## How can you test fees on your own results?

Here is a short method for any backtest:

1. Count how many sides you trade per year.
2. Multiply by your real fee per side to get yearly fee drag.
3. Re-run with a fee two or three times larger, as we did, and see where the rule stops working.
4. Compare with buy and hold and with random entries that trade as often.

Our guide to [ways to backtest a crypto chart pattern](https://comparand.xyz/blog/ways-to-backtest-a-crypto-chart-pattern) shows other checks, including later-date tests.

## Try this in Comparand

With Comparand connected to your AI app, you can ask:

- "Get Binance BTCUSDT daily and hourly bars for the last two years." The bar tool (venue_bars) returns completed open, high, low, close and volume bars on 1m, 5m, 15m, 1h, 4h or 1d. It is free on every key. You can then run your own moving-average rule and count the trades.
- "Here are my last 800 Hyperliquid fills. How did the price move after each one?" The [fill markout](https://comparand.xyz/blog/trading-markouts-explained) tool (hl_fills_markout) takes up to 5,000 fills, each with the coin, time, price, side and fee in basis points (fee_bp). A basis point is one hundredth of a percent, so 0.05% is 5 bp. You also give a horizon in seconds, and it returns the price move after each fill. It costs $0.30 per 1,000 fills, with a minimum of $0.02 per call, from your credits.

The first shows how often a rule would trade. The second shows what your real fills paid. You can [try 3 coins free](https://comparand.xyz/try), see the [docs](https://comparand.xyz/docs) or check [pricing](https://comparand.xyz/pricing).

## The short version

- Fees paid per year are about trades per year times the fee per side.
- Bitcoin's 1-hour rule traded about 210 times a year and fell from 27.52% to 14.84% a year at a 0.05% fee. The daily rule went from 31.19% to 30.67%.
- Long-short rules pay for two sides on each flip and lost more.
- Only 2 of 9 fee-adjusted long-flat rules beat buy and hold. On Bitcoin none did.
- These costs leave out funding, spreads and slippage. Past cases, not a forecast.

## Questions people ask

**How much do trading fees affect a crypto backtest?**

It depends on how often the rule trades. A Bitcoin moving-average rule on 1-hour bars traded about 210 times a year and went from 27.52% a year before fees to 14.84% at 0.05% per side. The same rule on daily bars traded about 8 times a year and went from 31.19% to 30.67%.

**Why do faster trading rules lose more to fees?**

Each trade pays a fee, so more trades means more fees. At 0.05% per side, Bitcoin's 1-hour rule paid about 10.47% of the account a year in fees, which cut its yearly return from 27.52% to 14.84%. The 4-hour version paid 2.54% and the daily version paid 0.40%.

**What fee should I use in a backtest?**

Use your own exchange's fee for the type of order you would really send, and test a higher fee too. We tested 0.02%, 0.05% and 0.10% per side. Also add costs we left out, such as funding, the gap between buy and sell prices and slippage.

**Do fees hurt long-short rules more than long-or-flat rules?**

In our tests, yes. A flip from long to short pays for two sides. The Bitcoin 1-hour long-short rule made 419.10 sides of trades a year and went from −1.70% a year before fees to −20.29% at 0.05%.

**Does a rule that survives fees prove it works?**

No. Our rules that survived fees often just rode the rise in prices. On Bitcoin, buy and hold earned 33.74% a year and the best fee-adjusted 1-hour rule earned 14.84%. Past cases, not a forecast.
