Strategy autopsy
RSI below 30: we tested buy-the-dip 2,473 times
“When RSI(14) drops below 30 a stock is oversold, so you buy the dip.”
- 2,473real signals tested
- 58%of trades won — and it still loses
- +9.9bpwhat a 3-slot account actually kept
- 78%of signals landed on crowded days
There is no indicator rule repeated more often than this one. RSI drops below 30, the stock is “oversold”, you buy the dip. It is in every beginner course, every chart thread, every list of simple strategies that supposedly work.
So we tested it. Not on one stock over one good year, but on 2,473 real signals across 369 liquid US stocks, with the spreads, commissions and fills a real account actually pays.
The short version: on paper it looks excellent. In an account it loses money. And the reason is not the one almost everybody assumes.
The claim
Stated precisely enough to be testable:
When the 14-period RSI of a stock closes below 30, the stock is oversold. Buy it, and it bounces.
We test the rule, never a person. If a rule is popular enough to be worth testing, it belongs to everyone.
How we tested it
Every rule fixed in advance, before seeing a single result:
| Universe | 369 liquid US stocks (tight spreads, over $50M traded per day) |
| Period | January 2024 to July 2026 |
| Indicator | Wilder’s RSI(14) on daily closes, checked against his own published example |
| Signal | RSI crosses below 30 (yesterday 30 or above, today below) — so one oversold stretch is one signal, not twenty |
| Entry | The next session, at the close of the first minute: a bar that had already finished, so no peeking |
| Exits | Both versions people actually use — fixed holds of 1, 3, 5 and 10 days, and the rule exit “sell when RSI gets back above 50” |
| Control | The same stocks over the same period on days with no signal: 233,703 of them |
That control is the part most backtests skip, and it is the only thing that makes the answer mean anything. Between 2024 and 2026 the market rose a great deal. Buying almost anything and holding it for a few days made money. So “did it make money?” is the wrong question. The only question worth asking is: did it beat simply being long?
The result on paper
It did. Comfortably.
| Hold | Signal | Control | Edge over just being long |
|---|---|---|---|
| 1 day | +30.8 bp | +13.1 bp | +17.7 bp |
| 3 days | +116.5 bp | +32.5 bp | +84.0 bp |
| 5 days | +117.4 bp | +52.7 bp | +64.7 bp |
| 10 days | +179.9 bp | +103.6 bp | +76.3 bp |
(bp = basis points, hundredths of a percent. 100 bp = 1%.)
Oversold stocks bounced harder than the same stocks on ordinary days, at every horizon, and 58% of the trades were winners. This is the number a backtest screenshot shows you.
We also checked the usual ways such a number turns out to be fake, and it survived all of them. It is not a couple of lucky outliers: the median trade made +72.6 bp, and removing the best 1% of trades still leaves +95.6 bp. It is not a broken indicator either: the deeper the oversold reading, the better the bounce — below 20, the 3-day return averaged +101 bp.
So the effect is real. And the strategy still loses money.
The thing backtests never tell you
Here is the number that ends the story.
A backtest counts all 2,473 signals. An account has a limited number of positions. Give it three at a time — a reasonable, even generous, number for a retail account — and the edge does not shrink a little. It collapses:
| Hold | All 2,473 signals | What a 3-position account actually got |
|---|---|---|
| 1 day | +30.8 bp | +20.7 bp |
| 3 days | +116.5 bp | +9.9 bp |
| 5 days | +117.4 bp | +33.4 bp |
| 10 days | +179.9 bp | −0.1 bp |
Our first instinct was that we had rigged it by choosing which three to take. So we tried every rule: take the most oversold, take the least oversold, or pick at random. All three collapse the same way — random selection gave +12.7 bp at a 3-day hold, least-oversold +21.1 bp. The choice barely matters.
What matters is when the signals arrive. RSI does not drop below 30 on a quiet Tuesday because one company had bad news. It drops below 30 when the whole market falls, and it does it to dozens of stocks at once:
- 78% of all signals fired on days when more than three stocks triggered simultaneously
- On 7 April 2025, 101 stocks in our universe went oversold on the same day
- With a 10-day hold, on 69% of signal days the account was already full — every position occupied by an earlier trade, so the new signal was simply unreachable
The trades you are forced to skip are the crowded ones: the market-wide panics, which is exactly where the biggest bounces live. The backtest happily takes all 101. You take three, and then you sit full while the rest of the opportunity plays out without you.
The edge is real. It just lives almost entirely in trades you cannot take.
What it costs to trade
Now add the costs to the fraction you can take. Here is every cent of a 3-day trade at a position size of roughly $5,000:
| bp | |
|---|---|
| Gross edge earned on the trades actually taken | +9.9 |
| Half-spread, both sides | −3.9 |
| Slippage (measured from real executions, not assumed) | −12.0 |
| Commission, round trip | −4.0 |
| Overnight financing, 3 nights | −7.5 |
| Subtotal, before we even model the fill | −17.5 |
| Entry-bar adversity: where a market order really lands in the first minute | −19.8 |
| Exit-bar adversity | −3.7 |
| Net per trade | −41.0 |
Two things deserve attention.
The opening minute costs nearly 20 bp on its own. The first minute of the session is the most violent of the day. A backtest fills you at that minute’s closing price; a market order lands somewhere inside its range, and not usually at the flattering end. That single modelling choice costs more than spread, commission and financing put together.
The cost floor moves with position size, and then stops. Because commission carries a per-order minimum, small positions are punished hardest:
| Position size | Commission, round trip | Total cost floor |
|---|---|---|
| about $1,700 | 11.9 bp | 31.1 bp — the per-order minimum dominates |
| about $5,100 | 4.0 bp | 23.2 bp |
| about $63,000 | 4.0 bp | 23.2 bp |
Above roughly $5,000 per position the minimum stops binding and the floor flattens at about 23 bp. More money does not make trading cheaper after that. It only makes the losses bigger, which is exactly what we measured: at the largest size the same strategy lost $114 per trade.
Does more money save it?
There is a fair objection to everything above: the account we test with is small. If capacity is the cause of death, a bigger account — with more slots — should escape it. So we re-ran the entire study at three account sizes, scaling the number of concurrent positions with the capital: $10,000 running 3 slots, $50,000 running 6, and $250,000 running 12. Bigger orders also pay a cost small ones never see — moving the price with your own order — so we charged a standard square-root impact model on top of every measured cost. That impact number is a model, not a measurement; we have no large-order fills to calibrate it. Everything else in the table is measured.
| Account | Signals taken | Net per trade | Net per day |
|---|---|---|---|
| $10,000 · 3 slots | 413 of 2,469 | −$18 | −$11 |
| $50,000 · 6 slots | 753 of 2,469 | −$39 | −$44 |
| $250,000 · 12 slots | 1,245 of 2,469 | −$99 | −$185 |
3-day hold, standard fill assumption. The other hold lengths are worse.
The capacity argument does weaken, exactly as the objection predicts: the $250,000 account takes half of all signals instead of a sixth. But every additional slot fills with a trade that loses money after costs, so more capacity is the same leak at a bigger diameter. The cost floor barely moves with size — commission stops mattering above small positions, and the impact charge quietly replaces it — while the gross edge never clears it at any tier. More money does not save this strategy. It scales the loss, almost exactly in proportion to the account.
The verdict
DIED.
Net of real costs the strategy lost money in every configuration we tested: every hold length, every exit rule, every position size, in 2024, 2025 and 2026 alike. We even re-ran it under the friendliest assumption a backtest can make — filling exactly at the closed-bar price with no adverse fill at all, which is what most retail backtests silently assume. It still lost, at every size.
Cause of death: capacity, then costs. In that order, and the order is the interesting part. This strategy does not fail because the indicator is worthless: the bounce is real and measurable. It fails because the opportunity arrives in crowded bursts that a finite account cannot absorb, and the modest remainder does not clear a floor of roughly 23 bp.
That is a failure mode no amount of parameter tuning fixes. Changing 30 to 25, or 14 periods to 10, moves the signal around inside the same crowded days. It does not create slots you do not have.
What to take from this
- A backtest’s trade count is a claim about your account. If it fires 2,473 trades and you can hold three at a time, you are not testing the strategy you would trade. Cap the positions first, before you look at any other number.
- “Did it make money” is never the question. In a rising market, being long makes money. Always compare against the boring alternative over the identical period.
- A high win rate is not an edge. This one won 58% of the time and still lost, because costs are charged per trade regardless of who was right.
- Ask where your order actually fills. The most volatile minute of the day cost more here than commissions and spread combined.
We will keep testing the rules people repeat. Some of them will survive.