RSI Oversold-Recovery Strategy (Crypto)
Does an RSI oversold strategy work on crypto? Backtested on real Hyperliquid perps from 2024-08-15 to 2026-07-05, the default settings earned a Sharpe of 1.05 — +29.4% total return with a 9.6% worst drawdown across 107 trades, net of fees, slippage, and funding.
2024-08-15 → 2026-07-05 · net of fees, slippage, and funding · price-only Sharpe 1.05 · these are the default settings, not a hand-picked best case.
At $1,000, this strategy’s worst historical dip was about $96. Free account, your own Hyperliquid keys — Keel only trades.
How it works
How it works
Across the top-15 Hyperliquid perps, daily. Buy a coin when its 7-period RSI has dropped into oversold territory — at or below 30 — and is recovering, while price still holds above its 200-day trend line. Exit once RSI climbs back through 50. The RSI reading times a short-term washout, and the 200-day trend gate is what separates this from a naive "buy every RSI dip": entries only trigger on coins that are still in an uptrend, not ones in free fall. Positions are equal-weight and exposure stays light, since the setup only fires on genuine oversold recoveries.
When it works best
Uptrending majors that pause and shake out weak hands before continuing. Each oversold dip inside a healthy trend becomes a repeatable re-entry, and the trend filter cuts losers quickly when a dip keeps going.
When it struggles
Bear markets and choppy, trendless stretches: the 200-day gate keeps it mostly in cash during downtrends, so it sidesteps the worst damage but also sits out long periods with no trades. Widening the setup — trading intraday, adding more coins, or loosening the exit — consistently weakened it in testing, so the edge is narrow by design. With 107 trades over the window, the sample is modest; treat the headline as indicative rather than a promise.
How it’s built
The exact strategy behind this backtest — no black box. Switch to code to see or copy the full definition.
Configuration
Factories
Globals(target_timeframe="1d", bar_offset="12h")Universe(mode="top_volume", top_n=15, market="perp", resolved=[], resolved_at="")Execution(rebalance="every_bar")trend_vs_200 = Pipeline([ { "px": [EWMA(window=2)], "trend": [EWMA(window=200)], }, Crossover(fast_key="px", slow_key="trend"),], name="trend_vs_200")Pipeline([ PriceDataLoader(timeframe="15min"), TargetTimeframeResampler(), { "entry_setup": [ Pipeline([ { "oversold": [RSI(period=7), BelowThresholdFilter(threshold=30.0, inclusive=True)], "uptrend": [trend_vs_200, AboveThresholdFilter(threshold=0.0)], }, MaskAnd(), Store("rsi_entry"), ], name="entry_setup"), ], "exit_setup": [RSI(period=7), AboveThresholdFilter(threshold=50.0), Store("rsi_exit")], }, PositionStateMachine(entry_slot="rsi_entry", exit_slot="rsi_exit"), EqualWeightSizer(target_leverage=1.0, max_weight=0.2),], name="rsi_crypto")Explore the settings
precomputed · updates instantlyAdjust a setting to see the exact backtested result — including the ones that lost money.
At $1,000, these settings' worst historical dip was about $96. You land in the editor with this exact setup. Free account, your own keys.
Compare all 6 settings
| Settings | Sharpe | Return | Worst DD | Trades |
|---|---|---|---|---|
| exit 55 · RSI 7 · Universe 15 | 0.89 | 28.9% | −12.9% | 160 |
| exit 55 · RSI 14 · Universe 15 | — | 0.0% | −0.0% | 0 |
| exit 50 · RSI 7 · Universe 15default | 1.05 | 29.4% | −9.6% | 107 |
| exit 65 · RSI 7 · Universe 15 | 0.17 | 2.5% | −26.1% | 265 |
| exit 55 · RSI 7 · Universe 25 | 0.46 | 15.9% | −19.8% | 294 |
| exit 45 · RSI 7 · Universe 15 | 1.15 | 25.0% | −7.3% | 80 |
The data
Monthly returns
| Month | Return |
|---|---|
| 2024-08 | 0.0% |
| 2024-09 | 0.0% |
| 2024-10 | 0.0% |
| 2024-11 | 0.0% |
| 2024-12 | 0.0% |
| 2025-01 | 0.0% |
| 2025-02 | 0.0% |
| 2025-03 | +0.0% |
| 2025-04 | +0.5% |
| 2025-05 | -0.7% |
| 2025-06 | +3.0% |
| 2025-07 | +0.6% |
| 2025-08 | +2.4% |
| 2025-09 | -0.9% |
| 2025-10 | +7.6% |
| 2025-11 | +1.5% |
| 2025-12 | 0.0% |
| 2026-01 | 0.0% |
| 2026-02 | 0.0% |
| 2026-03 | 0.0% |
| 2026-04 | 0.0% |
| 2026-05 | 0.0% |
| 2026-06 | +12.8% |
| 2026-07 | 0.0% |
Which assets it traded
| Avg allocation | Days held | % of time held | Asset |
|---|---|---|---|
| 0.1937 | 36 | 5.22 | BTC |
| 0.1918 | 32 | 4.64 | HYPE |
| 0.1916 | 31 | 4.5 | ETH |
| 0.1895 | 25 | 3.63 | XRP |
| 0.1881 | 22 | 3.19 | SOL |
| 0.1854 | 18 | 2.61 | LINK |
| 0.2 | 10 | 1.45 | ZEC |
| 0.2 | 9 | 1.31 | SUI |
| 0.2 | 9 | 1.31 | kPEPE |
| 0.1476 | 5 | 0.73 | DOGE |
| 0 | 0 | 0 | GRAM |
| 0 | 0 | 0 | LIT |
| 0 | 0 | 0 | PUMP |
| 0 | 0 | 0 | VVV |
| 0 | 0 | 0 | XPL |
What this is: a historical backtest on real Hyperliquid market data, net of fees, slippage, and funding. Its worst historical drawdown was 9.6% — expect drawdowns of that order or worse. Past performance does not predict future results, and this is not investment advice. Size your account so a full drawdown is survivable.