Multi-Indicator Confluence (Crypto)
Does a multi-indicator confluence 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.65 — +153.6% total return with a 25.9% worst drawdown across 3,070 trades, net of fees, slippage, and funding.
2024-08-15 → 2026-07-05 · net of fees, slippage, and funding · price-only Sharpe 1.78 · these are the default settings, not a hand-picked best case.
At $1,000, this strategy’s worst historical dip was about $259. Free account, your own Hyperliquid keys — Keel only trades.
How it works
How it works
This is a three-filter trend strategy on the top-15 Hyperliquid perpetuals, four- hour bars. It goes long a coin only when all three agree: its EMA-50 is above its EMA-200 (an uptrend), its MACD histogram is positive (momentum), and its RSI sits in a healthy 45-70 zone (not overbought, not collapsing). If any filter disagrees, it holds cash. Positions are equal-weight, 1x gross, long-or-flat.
When it works best
Clean, established uptrends where trend, momentum, and strength all line up — the three filters keep it in the strongest names and out of anything ambiguous. Over 2024-08-15 to 2026-07-05 the default three-filter settings returned +153.6% with a Sharpe of 1.65 and a maximum drawdown of −25.9%, net of fees, slippage, and funding.
When it struggles
Choppy or reversing markets, where the filters flip in and out and entries get whipsawed. There is also an honest finding worth flagging: stacking more indicators is not free. Dropping the RSI filter — running just trend and momentum — actually scored a little higher in the test window, because the three measures overlap, so the third one screens out some good trades along with the noise. The default keeps all three because the full three-filter setup is the one people ask about, but the leaner two-filter version was the stronger performer.
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=[], resolved_at="")Execution(rebalance="every_bar")ema_gate = Pipeline([ { "fast": [EWMA(window=50)], "slow": [EWMA(window=200)], }, Crossover(fast_key="fast", slow_key="slow"),], name="ema_gate")px_vs_50 = Pipeline([ { "px": [EWMA(window=2)], "e50": [EWMA(window=50)], }, Crossover(fast_key="px", slow_key="e50"),], name="px_vs_50")Pipeline([ PriceDataLoader(timeframe="15min"), TargetTimeframeResampler(), { "entries": [ Pipeline([ { "const": [ConstantForecast(value=1.0)], "setup": [ Pipeline([ { "regime_up": [ema_gate, AboveThresholdFilter(threshold=0.0)], "momentum_on": [MACD(fast_period=12, slow_period=26, signal_period=9), AboveThresholdFilter(threshold=0.0)], "not_exhausted": [RSI(period=14), RangeSelector(low_threshold=45, high_threshold=70)], }, MaskAnd(), ], name="setup"), ], }, ApplyMask(score_signal="const", filter_signal="setup"), Store("conf_entry"), ], name="entries"), ], "exits": [ Pipeline([ { "const": [ConstantForecast(value=1.0)], "bail": [ Pipeline([ { "macd_flip": [MACD(fast_period=12, slow_period=26, signal_period=9), BelowThresholdFilter(threshold=0.0)], "below_50": [px_vs_50, BelowThresholdFilter(threshold=0.0)], }, MaskOr(), ], name="bail"), ], }, ApplyMask(score_signal="const", filter_signal="bail"), Store("conf_exit"), ], name="exits"), ], }, PositionStateMachine(entry_slot="conf_entry", exit_slot="conf_exit"), EqualWeightSizer(target_leverage=1.0, max_weight=0.2),], name="confluence_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 $258. You land in the editor with this exact setup. Free account, your own keys.
Compare all 4 settings
| Settings | Sharpe | Return | Worst DD | Trades |
|---|---|---|---|---|
| RSI 45-70 · tf 4h · Universe 15default | 1.65 | 153.6% | −25.8% | 3,070 |
| RSI off · tf 4h · Universe 15 | 1.80 | 184.7% | −27.1% | 2,984 |
| RSI 45-70 · tf 4h · Universe 25 | 1.40 | 166.9% | −31.5% | 5,484 |
| RSI 45-70 · tf 1d · Universe 15 | -0.35 | -17.7% | −29.5% | 268 |
The data
Monthly returns
| Month | Return |
|---|---|
| 2024-08 | 0.0% |
| 2024-09 | +9.7% |
| 2024-10 | +9.3% |
| 2024-11 | +27.3% |
| 2024-12 | +0.4% |
| 2025-01 | -13.6% |
| 2025-02 | -1.8% |
| 2025-03 | 0.0% |
| 2025-04 | +2.9% |
| 2025-05 | +2.5% |
| 2025-06 | +2.7% |
| 2025-07 | +12.4% |
| 2025-08 | -8.1% |
| 2025-09 | +25.8% |
| 2025-10 | -2.6% |
| 2025-11 | +0.2% |
| 2025-12 | +4.7% |
| 2026-01 | +8.3% |
| 2026-02 | +3.9% |
| 2026-03 | +3.8% |
| 2026-04 | -4.0% |
| 2026-05 | +25.1% |
| 2026-06 | -6.5% |
| 2026-07 | +3.2% |
Which assets it traded
| Avg allocation | Days held | % of time held | Asset |
|---|---|---|---|
| 0.1928 | 563 | 13.62 | HYPE |
| 0.1894 | 552 | 13.35 | BTC |
| 0.1932 | 476 | 11.51 | VVV |
| 0.1854 | 471 | 11.39 | LINK |
| 0.1887 | 460 | 11.13 | SOL |
| 0.1867 | 455 | 11.01 | DOGE |
| 0.188 | 425 | 10.28 | ETH |
| 0.1858 | 424 | 10.26 | XRP |
| 0.1877 | 403 | 9.75 | SUI |
| 0.1851 | 344 | 8.32 | kPEPE |
| 0.1966 | 214 | 5.18 | ZEC |
| 0.1847 | 132 | 3.19 | PUMP |
| 0.1973 | 110 | 2.66 | XPL |
| 0.1987 | 90 | 2.18 | 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 25.9% — 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.