# RSI strategy tested on Bitcoin: what oversold really did

> Buy when RSI(14) drops below 30, sell at 50: the textbook rule run on BTC/USDT Perp with real fees and slippage, by timeframe, by year, against holding.

Published October 22, 2026 · Research · by the EdgeLuma team · 11 min read

Source: https://edgeluma.com/blog/rsi-strategy-tested

Tested on BTC/USDT Perp with real fees and slippage, the textbook RSI rule, buy when RSI(14) crosses below 30 and sell when it climbs back above 50, lost 0.14R per trade on average over 220 trades on hourly candles. It lost on four-hour and daily candles too, and in every year from August 2024 to October 2026.

"Buy when the RSI is oversold" is one of the first rules most traders learn, and one of the most repeated. The published tests that rank for it, such as [Quantified Strategies' RSI pullback test](https://quantifiedstrategies.substack.com/p/rsi-pullback-strategy), are mostly on US stocks, not crypto, and few count the fees and slippage a crypto trader actually pays. So we wrote the rule down the way it's usually taught, fixed it before looking at any result, and ran it over more than two years of hourly candles of Bitcoin's perpetual.

This article gives the rules, how the test was run, and the result: by timeframe, by year, with and without costs, on two more coins, against simply holding, and with a trend filter. Every number sits in a table, and every run we made is there.

## What is the RSI?

The **relative strength index** (RSI) measures how strongly a market has risen against how strongly it has fallen over its last candles. J. Welles Wilder introduced it in 1978, and it runs from 0 to 100. Over 14 candles, Wilder's default, it compares the average gain of the up candles with the average loss of the down candles:

```
RSI = 100 − 100 ÷ (1 + average gain ÷ average loss)
```

When the losses dominate, the RSI sinks toward 0; when the gains dominate, it climbs toward 100. The usual readings are traders' conventions, not part of the formula: under 30 is called **oversold**, over 70 **overbought**. The [Wikipedia article on the RSI](https://en.wikipedia.org/wiki/Relative_strength_index) gives the smoothing Wilder used, which is the one EdgeLuma computes.

"Oversold" describes the past, not the future. It says the last 14 candles fell much more than they rose. The trade idea behind buying it is [mean reversion](https://en.wikipedia.org/wiki/Mean_reversion_(finance)): a market that fell this hard should bounce back toward its average. Whether it does is what a backtest can check.

## The RSI strategy we tested

The rules are the plain version most guides teach, written before the test and not changed after it:

- **Market:** BTC/USDT Perp on Bybit, long only.
- **Entry:** when RSI(14) crosses below 30, buy at the next candle's open, at market.
- **Exit:** when RSI(14) crosses back above 50, the midline, sell at the next candle's open.
- **Stop:** two ATR(14) below the entry. The [average true range](https://en.wikipedia.org/wiki/Average_true_range) sets the stop at a distance that follows the market's own swings.
- **No target**, and the same risk on every trade: 1% of the account.

We ran the same rules on three timeframes: hourly candles, four-hour candles and daily candles. Fourteen candles, the 30 line and the 50 exit are the defaults almost everyone quotes, so the test answers the question as people ask it, not a tuned version of it.

## How the test was run

Every result below comes from EdgeLuma's backtest engine, the same one a user runs in the app, under these conditions:

- **Data:** Bybit's hourly candles for BTC/USDT Perp from 9 August 2024 to 21 October 2026, all 19,265 of them, with no gap. The four-hour and daily candles are built from them. No window was picked: the test covers the whole stretch.
- **Fills:** a signal is read when its candle closes and filled at the next candle's open. For Bitcoin the stop is checked on one-minute candles inside each candle, so a stop hit and recovered within the hour still counts as hit.
- **Fees:** Bybit's own [fee schedule for USDT perpetuals](https://www.bybit.com/en/help-center/article/Trading-Fee-Structure) at the entry tier, the one a new account pays, read on 7 September 2026 and read again, unchanged, on 22 October 2026. Market orders pay the taker fee.
- **Slippage:** half the venue's tick to cross the spread, plus the order book's impact for the order's size, measured on live order books on 6 September 2026.
- **Funding:** not modelled. Holding a perpetual pays or receives [funding](https://www.bybit.com/en/help-center/article/Introduction-to-Funding-Rate) every few hours. Almost every hourly trade here closed within a day, but funding isn't in the numbers.
- **Units:** results are in R, the risk of one trade. 1R includes the round trip's costs, so a trade stopped at its stop loses exactly 1R.

The runs were made on 22 October 2026. Results are hypothetical: a backtest replays the past, and the past doesn't promise the future.

## The result: the oversold rule lost on every timeframe

On hourly candles the rule traded often and won a bit less than half of the time. Its average win was slightly smaller than its average loss, and that combination loses money, as our guide to [win rate and expectancy](https://edgeluma.com/blog/win-rate-vs-expectancy) explains. On four-hour candles it lost less per trade, and on daily candles the test made only six trades in two years.

BTC/USDT Perp, Bybit, 9 August 2024 to 21 October 2026, after fees and slippage:

| Candles | Trades | Won | Expectancy | Total | Max drawdown |
| --- | ---: | ---: | ---: | ---: | ---: |
| 1 hour | 220 | 45% | −0.14R | −30.75R | 37.56R |
| 4 hours | 46 | 46% | −0.07R | −3.10R | 8.66R |
| 1 day | 6 | 17% | −0.71R | −4.26R | 4.26R |

Six trades can't say anything about a strategy, in either direction: our guide to [how many trades a backtest needs](https://edgeluma.com/blog/how-many-trades-backtest) shows how much luck a sample that small holds. The hourly and four-hour rows have enough trades to read, and both are negative.

What the trades looked like, on the same runs:

| Candles | Average win | Average loss | Longest losing streak |
| --- | ---: | ---: | ---: |
| 1 hour | +0.92R | −0.99R | 7 |
| 4 hours | +1.04R | −1.00R | 6 |
| 1 day | +0.74R | −1.00R | 4 |

On hourly candles, a little more than half the trades ended at the stop and the rest at the RSI exit. The exit at 50 usually came before the price had travelled far, so the wins stayed smaller than the losses, which ran the full distance to the stop.

## Did it work in any year?

No. Split by the year each trade closed, the hourly test lost in all three:

| Year | Trades | Won | Expectancy | Total |
| --- | ---: | ---: | ---: | ---: |
| 2024, from 9 August | 32 | 44% | −0.18R | −5.64R |
| 2025 | 99 | 43% | −0.14R | −13.86R |
| 2026, to 21 October | 89 | 46% | −0.13R | −11.25R |

The four-hour test was close to flat in 2025, at −0.19R over 27 trades, and negative in the other two years. A rule that loses at about the same pace in every year isn't failing in one kind of market: on this data it has no edge to lose.

## Was it the costs?

Partly. We ran the same rules a second time with no fees and no slippage at all:

| Candles | Costs | Expectancy | Total |
| --- | --- | ---: | ---: |
| 1 hour | none | −0.06R | −14.25R |
| 1 hour | fees and slippage | −0.14R | −30.75R |
| 4 hours | none | −0.03R | −1.37R |
| 4 hours | fees and slippage | −0.07R | −3.10R |

Costs roughly doubled the loss, and almost all of it was fees. On a $10,000 account, the hourly test paid $1,737 in fees and $29 in slippage: on Bitcoin's perpetual the order book is so deep that a small order barely moves it, while the fee is paid on every entry and every exit. Fees weigh most on hourly candles because the stop sits close to the entry, so the round trip's fees are a bigger slice of each trade's risk. Our guide to [fees and slippage](https://edgeluma.com/blog/backtest-fees-and-slippage) goes through the arithmetic.

Without any costs the rule still lost. The signal itself had no edge on this data; costs only made a losing rule lose faster.

## Did it work on other coins?

No. The same rules on Ethereum's and Solana's perpetuals, Bybit, from 15 October 2024 to 15 October 2026, after fees and slippage. For these two coins EdgeLuma's one-minute candles start in September 2026, so before then the stop was checked on the hourly candle itself. With a stop and no target that gives the same trades: run both ways on Bitcoin, all 220 hourly trades came out identical.

| Market | Candles | Trades | Won | Expectancy | Total |
| --- | --- | ---: | ---: | ---: | ---: |
| ETH/USDT Perp | 1 hour | 195 | 51% | −0.03R | −6.58R |
| SOL/USDT Perp | 1 hour | 193 | 46% | −0.14R | −26.63R |
| ETH/USDT Perp | 4 hours | 47 | 38% | −0.24R | −11.36R |
| SOL/USDT Perp | 4 hours | 46 | 37% | −0.23R | −10.52R |

Ethereum on hourly candles came closest to break-even. None of the four runs made money.

## Against buy and hold

Here the same hourly runs are counted on an account of $10,000 that risks 1% of its starting balance on every trade, next to the change in the coin's price over the same period:

| Market | Period | RSI rule, 1% risk a trade | Holding the coin |
| --- | --- | ---: | ---: |
| BTC/USDT Perp | Aug 2024 to Oct 2026 | −30.8% | +37.0% |
| ETH/USDT Perp | Oct 2024 to Oct 2026 | −6.6% | −9.1% |
| SOL/USDT Perp | Oct 2024 to Oct 2026 | −26.6% | −33.8% |

On Bitcoin, which rose over the period, holding it did far better than trading its dips. On Ethereum and Solana, which fell, the rule lost less than holding, but only because it was out of the market most of the time and risked a small part of the account on each trade. Losing a little less than a falling coin isn't an edge.

## Does a trend filter help?

A common fix is to buy oversold dips only when the bigger trend is up. We tested one version, chosen before the run: the same rules, with a second condition that the close is above its 200-candle simple moving average.

| Rule | Candles | Trades | Won | Expectancy | Total |
| --- | --- | ---: | ---: | ---: | ---: |
| Oversold only | 1 hour | 220 | 45% | −0.14R | −30.75R |
| Oversold, above the 200 SMA | 1 hour | 24 | 50% | +0.05R | +1.17R |
| Oversold only | 4 hours | 46 | 46% | −0.07R | −3.10R |
| Oversold, above the 200 SMA | 4 hours | 6 | 33% | −0.40R | −2.38R |

On hourly candles the filter turned the result positive, and it also cut the trades from 220 to 24. RSI rarely falls under 30 while the price is above its long average, so the filter leaves only a handful of dips. At 24 trades a small positive expectancy is well within what luck produces, and on four-hour candles the same filter left six trades and lost. The filter is worth a longer test, on more data and more coins, before anyone trusts it.

## Why we didn't search for better settings

We could have tried RSI(7), RSI(21), oversold at 20 or 25, exits at 60 or 70, stops at one, two or three ATR, and kept whichever combination did best. With a few dozen combinations, one of them would almost certainly look good on this data by chance alone. That's [overfitting](https://edgeluma.com/blog/backtest-overfitting), and a result found that way usually fades on the next stretch of data.

So the rules were fixed before the first run, the one filter was chosen before it was tested, and every run made for this article is in the tables above: nine with costs and two without. If you test other settings, count how many you tried, and judge the best one against that number.

## How to run this test in EdgeLuma

In [EdgeLuma](https://edgeluma.com/) you describe a System in the System Builder in your own words, for example "buy BTC/USDT Perp on the 1-hour chart when RSI(14) crosses below 30, exit when it crosses back above 50, stop two ATR below the entry, risk 1% per trade". When the description leaves a choice open, the EdgeLuma AI assistant asks you. The backtest charges the venue's verified fees and models slippage by default, replays fills on finer candles, and reports the result in R, after costs, with every trade listed.

From there you can change one thing at a time: the coin, the timeframe, the exit level, a trend filter. Each change is a new run, so keep count of how many you try. To read a result, attach the run in the Chat and ask the EdgeLuma AI assistant, for example, why the expectancy is negative while the win rate is close to half. Like any backtest, a report replays the past: it doesn't tell you what to trade, and nothing in a report is financial advice.

Test a strategy yourself: [start with the Free plan](https://edgeluma.com/sign-up), no card needed.

## Key takeaways

- The textbook RSI rule, long when RSI(14) crosses below 30 and out when it crosses back above 50, with a stop two ATR away, lost money on BTC/USDT Perp after fees and slippage.
- It lost on hourly, four-hour and daily candles, in every calendar year of the test, and on ETH/USDT Perp and SOL/USDT Perp as well.
- Costs doubled the loss on hourly candles, but without any costs the rule still lost: the oversold signal on its own had no edge here.
- Buying only above the 200-candle average turned the hourly result positive, on 24 trades: too few to tell an edge from luck.
- The rules were fixed before the test and every run is in the tables. Picking the best RSI settings after seeing the results is how a backtest starts to lie.

## Frequently asked questions

### Does the RSI strategy work on Bitcoin?

Not the textbook version. Buying when RSI(14) crosses below 30 and selling when it crosses back above 50 lost money on BTC/USDT Perp after fees and slippage, on hourly, four-hour and daily candles, from August 2024 to October 2026. It lost without costs too, so the problem was the signal, not only the fees.

### What does an RSI below 30 mean?

That over the last 14 candles the average loss was much bigger than the average gain: the market fell hard and fast. It describes what already happened. It doesn't mean the price has to bounce, and in this test it often kept falling to the stop.

### What is the best RSI setting for crypto?

There isn't one that holds in general. RSI(14) is Wilder's default and the one most traders use. Any setting picked because it did best on past data has been fitted to that data, so test it on a period you didn't use to choose it before you trust it.

### Is the RSI better on higher timeframes?

In this test the four-hour version lost less per trade than the hourly one, partly because a wider stop makes the fees a smaller part of each trade's risk. The daily version gave six trades in two years, too few to judge.

### Should you use the RSI with a trend filter?

It's the most common fix, and it changed the hourly result from negative to slightly positive here, on only 24 trades. That's too few to separate an edge from luck. Treat a filter like any other rule: decide it before the test, and give it enough trades to judge.
