ADX Trend-Strength Strategy (Crypto)
Does an ADX trend-strength filter work on crypto perps? Backtested on real Hyperliquid perps from 2024-08-15 to 2026-07-05, the default settings earned a Sharpe of 0.76 — +56.5% total return with a 39.7% worst drawdown across 1,143 trades, net of fees, slippage, and funding.
2024-08-15 → 2026-07-05 · net of fees, slippage, and funding · price-only Sharpe 0.85 · these are the default settings, not a hand-picked best case.
At $1,000, this strategy’s worst historical dip was about $397. Free account, your own Hyperliquid keys — Keel only trades.
How it works
How it works
ADX measures how strong a trend is, regardless of its direction. This strategy only takes a position in a coin when its 14-period ADX is above 25 — the level that certifies a genuine trend with follow-through is running — and then goes long if the 10-period EMA is above the 30-period, cash otherwise. It runs every 4 hours across the top-15 Hyperliquid perpetuals, equal-weighted at 1x gross. The strength gate is the point: below it, crypto's constant chop turns any direction signal into noise, so the strategy simply stands aside.
When it works best
It profits during clean, sustained trends — stretches where a coin is genuinely moving and the EMA cross rides the leg. Filtering entries through the strength gate keeps the strategy out of the low-conviction ranges where fast crossovers would churn.
When it struggles
Whipsaws hurt most: when ADX flickers around the 25 line, entries and exits cluster and each round-trip costs. It is long/flat only, so it captures none of the downside — in a prolonged bear it holds cash rather than profiting. Over the window it drew down 39.6% at its worst across 1,155 trades, placing it in the medium-high risk band.
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="4h")Universe(mode="top_volume", top_n=15, market="perp", resolved=["BTC", "DOGE", "ETH", "GRAM", "HYPE", "LINK", "LIT", "PUMP", "SOL", "SUI", "VVV", "XPL", "XRP", "ZEC", "kPEPE"], resolved_at="2026-07-06T19:27:48.092960+00:00")Execution( rebalance="buffered", buffer_threshold=0.2, buffer_mode="relative", rebalance_method="to_edge",)ema_cross = Pipeline([ { "fast": [EWMA(window=10)], "slow": [EWMA(window=30)], }, Crossover(fast_key="fast", slow_key="slow"),], name="ema_cross")Pipeline([ PriceDataLoader(timeframe="15min"), TargetTimeframeResampler(), { "trend_strong": [ADX(period=14), AboveThresholdFilter(threshold=25.0)], "trend_up": [ema_cross, AboveThresholdFilter(threshold=0.0)], }, MaskAnd(), EqualWeightSizer(target_leverage=1.0, max_weight=0.2),], name="adx_trend_crypto")Explore the settings
precomputed · updates instantlyAdjust a setting to see the exact backtested result — including the ones that lost money.
Complete 16-cell public cross-product on explicit resolved universes.
Heads up: weaker risk-adjusted return.
At $1,000, these settings' worst historical dip was about $397. You land in the editor with this exact setup. Free account, your own keys.
Compare all 16 settings
| Settings | Sharpe | Return | Worst DD | Trades |
|---|---|---|---|---|
| ADX 15 · EMA 10/30 · Signal 4h | 0.84 | 79.2% | −50.0% | 2,450 |
| ADX 15 · EMA 10/30 · Signal 1d | 0.91 | 89.3% | −40.7% | 420 |
| ADX 15 · EMA 20/50 · Signal 4h | 0.95 | 103.3% | −37.8% | 1,867 |
| ADX 15 · EMA 20/50 · Signal 1d | 1.15 | 140.3% | −40.5% | 271 |
| ADX 20 · EMA 10/30 · Signal 4h | 0.62 | 41.5% | −50.8% | 1,757 |
| ADX 20 · EMA 10/30 · Signal 1d | 0.79 | 64.9% | −40.4% | 272 |
| ADX 20 · EMA 20/50 · Signal 4h | 1.05 | 114.1% | −37.3% | 1,515 |
| ADX 20 · EMA 20/50 · Signal 1d | 1.27 | 153.2% | −29.0% | 219 |
| ADX 25 · EMA 10/30 · Signal 4hdefault | 0.76 | 56.5% | −39.7% | 1,143 |
| ADX 25 · EMA 10/30 · Signal 1d | 0.73 | 51.3% | −39.2% | 191 |
| ADX 25 · EMA 20/50 · Signal 4h | 0.97 | 86.0% | −29.4% | 1,041 |
| ADX 25 · EMA 20/50 · Signal 1d | 0.78 | 56.8% | −42.2% | 159 |
| ADX 30 · EMA 10/30 · Signal 4h | 1.36 | 130.9% | −25.3% | 835 |
| ADX 30 · EMA 10/30 · Signal 1d | 1.13 | 96.1% | −31.5% | 146 |
| ADX 30 · EMA 20/50 · Signal 4h | 1.48 | 150.5% | −22.9% | 791 |
| ADX 30 · EMA 20/50 · Signal 1d | 1.05 | 80.1% | −33.4% | 132 |
The data
Monthly returns
| Month | Return |
|---|---|
| 2024-08 | 0.0% |
| 2024-09 | +5.4% |
| 2024-10 | -7.8% |
| 2024-11 | +66.6% |
| 2024-12 | -3.6% |
| 2025-01 | -0.7% |
| 2025-02 | -5.6% |
| 2025-03 | -22.0% |
| 2025-04 | +11.1% |
| 2025-05 | +11.2% |
| 2025-06 | -9.6% |
| 2025-07 | +7.0% |
| 2025-08 | +4.0% |
| 2025-09 | +1.7% |
| 2025-10 | +12.7% |
| 2025-11 | -14.0% |
| 2025-12 | -0.4% |
| 2026-01 | +14.4% |
| 2026-02 | -4.0% |
| 2026-03 | -1.0% |
| 2026-04 | -3.9% |
| 2026-05 | +15.2% |
| 2026-06 | -7.3% |
| 2026-07 | +7.6% |
Which assets it traded
| Avg allocation | Days held | % of time held | Asset |
|---|---|---|---|
| 0.1552 | 966 | 23.37 | BTC |
| 0.152 | 915 | 22.13 | SOL |
| 0.1532 | 888 | 21.48 | SUI |
| 0.1575 | 858 | 20.75 | XRP |
| 0.1683 | 849 | 20.54 | VVV |
| 0.151 | 843 | 20.39 | ETH |
| 0.1539 | 841 | 20.34 | LINK |
| 0.1486 | 815 | 19.71 | DOGE |
| 0.1472 | 802 | 19.4 | kPEPE |
| 0.1653 | 786 | 19.01 | HYPE |
| 0.1532 | 535 | 12.94 | PUMP |
| 0.1689 | 521 | 12.6 | ZEC |
| 0.1656 | 480 | 11.61 | XPL |
| 0.1543 | 260 | 6.29 | LIT |
| 0 | 0 | 0 | GRAM |
What this is: a historical backtest on real Hyperliquid market data, net of fees, slippage, and funding. Its worst historical drawdown was 39.7% — 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.