Stochastic Oversold-Reversal (Crypto)
Does a stochastic oscillator 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.3 — +67.1% total return with a 16.1% worst drawdown across 322 trades, net of fees, slippage, and funding.
2024-08-15 → 2026-07-05 · net of fees, slippage, and funding · price-only Sharpe 1.34 · these are the default settings, not a hand-picked best case.
At $1,000, this strategy’s worst historical dip was about $161. 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 slow stochastic oscillator (10-period %K) is deep in oversold territory — below 20 — and turning back up, while price still holds above its 200-day trend line. The oscillator times the entry, catching a short-term washout inside a healthy trend, and the 200-day gate keeps the setup pointed with the larger trend rather than trying to catch falling knives. Positions are equal-weight, and a coin is released as its oscillator climbs back through the overbought band at 80. Because entries only fire on genuine oversold turns, the book spends much of its time lightly invested.
When it works best
Choppy pullbacks inside broad uptrends — the conditions the oscillator was built for. When liquid majors are grinding higher but regularly dip and recover, each oversold turn is a repeatable, low-risk re-entry, and the trend gate keeps losers short.
When it struggles
Sustained downtrends: the 200-day gate keeps it out of most bear damage, but that also means long flat stretches with no trades and no participation in the first leg of a recovery. Sharp V-shaped bottoms can turn back up before the oscillator confirms. And with 322 trades over the window, the sample is moderate — treat the headline as indicative rather than a guarantee.
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": [Stochastic(k_period=10, d_period=3, slowk_period=3), BelowThresholdFilter(threshold=20.0, inclusive=True)], "uptrend": [trend_vs_200, AboveThresholdFilter(threshold=0.0)], }, MaskAnd(), Store("stoch_entry"), ], name="entry_setup"), ], "exit_setup": [Stochastic(k_period=10, d_period=3, slowk_period=3), AboveThresholdFilter(threshold=80.0), Store("stoch_exit")], }, PositionStateMachine(entry_slot="stoch_entry", exit_slot="stoch_exit"), EqualWeightSizer(target_leverage=1.0, max_weight=0.2),], name="stochastic_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 $162. You land in the editor with this exact setup. Free account, your own keys.
Compare all 6 settings
| Settings | Sharpe | Return | Worst DD | Trades |
|---|---|---|---|---|
| %K 14 · topn 15 · Oversold 20/80 | 0.64 | 28.0% | −16.3% | 338 |
| %K 10 · topn 15 · Oversold 20/80default | 1.30 | 67.1% | −16.2% | 322 |
| %K 14 · topn 15 · Oversold 25/75 | 1.09 | 55.8% | −15.0% | 338 |
| %K 14 · topn 25 · Oversold 20/80 | -0.25 | -27.8% | −47.1% | 622 |
| %K 8 · topn 15 · Oversold 20/80 | 1.50 | 95.2% | −15.5% | 356 |
| %K 12 · topn 15 · Oversold 20/80 | 0.83 | 39.4% | −16.5% | 335 |
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 | +1.5% |
| 2025-05 | -1.5% |
| 2025-06 | +3.6% |
| 2025-07 | +6.9% |
| 2025-08 | +0.7% |
| 2025-09 | +8.5% |
| 2025-10 | +2.6% |
| 2025-11 | -8.3% |
| 2025-12 | +2.6% |
| 2026-01 | 0.0% |
| 2026-02 | 0.0% |
| 2026-03 | +5.3% |
| 2026-04 | +7.1% |
| 2026-05 | +12.8% |
| 2026-06 | +8.3% |
| 2026-07 | +3.9% |
Which assets it traded
| Avg allocation | Days held | % of time held | Asset |
|---|---|---|---|
| 0.1879 | 95 | 13.79 | LINK |
| 0.1823 | 82 | 11.9 | XRP |
| 0.1846 | 81 | 11.76 | kPEPE |
| 0.1833 | 64 | 9.29 | HYPE |
| 0.1958 | 48 | 6.97 | ETH |
| 0.2 | 48 | 6.97 | VVV |
| 0.1686 | 45 | 6.53 | BTC |
| 0.1723 | 45 | 6.53 | SUI |
| 0.2 | 38 | 5.52 | ZEC |
| 0.1598 | 31 | 4.5 | DOGE |
| 0.168 | 18 | 2.61 | SOL |
| 0 | 0 | 0 | GRAM |
| 0 | 0 | 0 | LIT |
| 0 | 0 | 0 | PUMP |
| 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 16.1% — 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.