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-09-29, the default settings earned a Sharpe of 0.85 — +81.6% total return with a 39.7% worst drawdown across 1,403 trades in 638 positions, net of fees, slippage, and funding.
2024-08-15 → 2026-09-29 · net of fees, slippage, and funding · price-only Sharpe 0.95 · 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 entry and exit pays fees. 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.7% at its worst across 1,403 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(), { "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.
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 | 1.17 | 186.3% | −50.0% | 2,874 |
| ADX 15 · EMA 10/30 · Signal 1d | 1.20 | 190.0% | −40.9% | 525 |
| ADX 15 · EMA 20/50 · Signal 4h | 1.30 | 235.0% | −37.8% | 2,250 |
| ADX 15 · EMA 20/50 · Signal 1d | 1.45 | 283.3% | −40.5% | 367 |
| ADX 20 · EMA 10/30 · Signal 4h | 0.87 | 93.8% | −50.8% | 2,103 |
| ADX 20 · EMA 10/30 · Signal 1d | 1.12 | 146.9% | −40.4% | 362 |
| ADX 20 · EMA 20/50 · Signal 4h | 1.26 | 197.6% | −37.3% | 1,835 |
| ADX 20 · EMA 20/50 · Signal 1d | 1.47 | 257.7% | −30.4% | 307 |
| ADX 25 · EMA 10/30 · Signal 4hdefault | 0.85 | 81.6% | −39.7% | 1,403 |
| ADX 25 · EMA 10/30 · Signal 1d | 1.17 | 140.4% | −39.3% | 260 |
| ADX 25 · EMA 20/50 · Signal 4h | 1.04 | 116.7% | −29.3% | 1,284 |
| ADX 25 · EMA 20/50 · Signal 1d | 1.22 | 149.9% | −42.5% | 226 |
| ADX 30 · EMA 10/30 · Signal 4h | 1.40 | 166.9% | −25.3% | 999 |
| ADX 30 · EMA 10/30 · Signal 1d | 1.43 | 178.4% | −30.9% | 204 |
| ADX 30 · EMA 20/50 · Signal 4h | 1.51 | 189.7% | −23.2% | 958 |
| ADX 30 · EMA 20/50 · Signal 1d | 1.35 | 150.9% | −32.9% | 193 |
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.2% |
| 2025-05 | +11.2% |
| 2025-06 | -9.8% |
| 2025-07 | +6.9% |
| 2025-08 | +4.1% |
| 2025-09 | +1.7% |
| 2025-10 | +12.8% |
| 2025-11 | -14.1% |
| 2025-12 | -0.4% |
| 2026-01 | +14.4% |
| 2026-02 | -3.9% |
| 2026-03 | -1.6% |
| 2026-04 | +0.0% |
| 2026-05 | +16.3% |
| 2026-06 | -8.8% |
| 2026-07 | -8.2% |
| 2026-08 | +24.9% |
| 2026-09 | +6.2% |
Which assets it traded
| Avg allocation | Days held | % of time held | Asset |
|---|---|---|---|
| 0.1489 | 1116 | 24 | BTC |
| 0.1455 | 1094 | 23.53 | SOL |
| 0.1499 | 1056 | 22.71 | LINK |
| 0.1627 | 1043 | 22.43 | VVV |
| 0.1466 | 1034 | 22.24 | SUI |
| 0.1452 | 1007 | 21.66 | ETH |
| 0.1495 | 1007 | 21.66 | XRP |
| 0.1434 | 983 | 21.14 | DOGE |
| 0.1398 | 958 | 20.6 | kPEPE |
| 0.1576 | 937 | 20.15 | HYPE |
| 0.1608 | 793 | 17.05 | ZEC |
| 0.152 | 753 | 16.19 | PUMP |
| 0.1525 | 580 | 12.47 | XPL |
| 0.1506 | 429 | 9.23 | LIT |
| 0.1062 | 99 | 2.13 | 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.