F&GFinance
What the same signal earns — backtest fantasy vs a 3-position account
All 2,473 signals (what a backtest counts)
+116.5bp
What a 3-slot account actually gets
+9.9bp

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:

Universe369 liquid US stocks (tight spreads, over $50M traded per day)
PeriodJanuary 2024 to July 2026
IndicatorWilder’s RSI(14) on daily closes, checked against his own published example
SignalRSI crosses below 30 (yesterday 30 or above, today below) — so one oversold stretch is one signal, not twenty
EntryThe next session, at the close of the first minute: a bar that had already finished, so no peeking
ExitsBoth versions people actually use — fixed holds of 1, 3, 5 and 10 days, and the rule exit “sell when RSI gets back above 50”
ControlThe 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.

HoldSignalControlEdge 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:

HoldAll 2,473 signalsWhat 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:

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
Where the money goes — one 3-day trade
Gross edge earned
+9.9 bp
Half-spread, both sides
−3.9 bp
Slippage (measured live)
−12 bp
Commission, round trip
−4 bp
Financing, 3 nights
−7.5 bp
Entry-bar adversity (09:31)
−19.8 bp
Exit-bar adversity
−3.7 bp
Net per trade
−41 bp

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 sizeCommission, round tripTotal cost floor
about $1,70011.9 bp31.1 bp — the per-order minimum dominates
about $5,1004.0 bp23.2 bp
about $63,0004.0 bp23.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.

AccountSignals takenNet per tradeNet per day
$10,000 · 3 slots413 of 2,469−$18−$11
$50,000 · 6 slots753 of 2,469−$39−$44
$250,000 · 12 slots1,245 of 2,469−$99−$185

3-day hold, standard fill assumption. The other hold lengths are worse.

What the same strategy loses per day, by account size — 3-day hold
$10,000 · 3 slots
−11 $/day
$50,000 · 6 slots
−44 $/day
$250,000 · 12 slots
−185 $/day

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

  1. 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.
  2. “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.
  3. 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.
  4. 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.