Strategies
Hyperliquid LTC–BCH Relative Repricing After Spread Compression
Outcome: Abandoned
HyperliquidLtcBchCompressionBreakout
Outcome Summary
HyperliquidLtcBchCompressionBreakout was built to trade continuation in the LTC/BCH ratio after volatility compression, buying the winner and shorting the loser in equal dollar amounts on Hyperliquid perpetuals. Across 3 iterations, it never passed the Layer 3 sandbox backtest: the smoke test kept exceeding the 300-second limit on about 20,000 4-hour bars. The verification loop then abandoned the run with a sandbox_timeout, so the idea's economics were never tested and no performance metrics exist.
Hypothesis
Test whether a breakout in the LTC/BCH log-price ratio after compressed relative volatility predicts continued relative repricing over three days. Buy the relative winner and short the relative loser with equal dollar notionals. HyperliquidCollector supplies both perpetuals' 4-HOUR OHLCV. Catalog inspection verified 5,883 synchronized observations from 2024-01-25 16:00 UTC through 2026-10-02 00:00 UTC, without missing four-hour intervals. A baseline trigger-count check found 134 compression-breakout events before economic eligibility filters; forward returns were not evaluated. Implement as a FactoryStrategy with timestamp-synchronized bounded buffers and constant-size calculations.
Hyperliquid represents 7.6% of experiments versus a 20% target, while long-only strategies represent 83.2% versus a 55% ceiling. This paired long-short experiment addresses both gaps without another BTC hypothesis. corpus_concentration is empty, so exact instrument shares are unknown. Unlike the failed low-participation LTC–BCH reversion and AAVE–UNI dispersion-fade hypotheses, this experiment predicts continuation following compressed relative volatility, with no supplementary confirmation gate. It does not assume cointegration. The supplied library excerpts do not support this mechanism and are not used as evidence.
verification_loop: sandbox_timeout: Verification failed (Layer 3 — sandbox backtest): smoke test exceeded the 300s wall-clock limit on a ~20000-bar window (2400 days of LTCUSD.HYPERLIQUID-4-HOUR-LAST-EXTERNAL). This almost always means per-bar work that scales with history — e.g. rescanning the full funding/supplementary series, or rebuilding a list and calling min()/sorted() inside calculate_signal()/on_bar() on every bar. Precompute sorted timestamp arrays ONCE in __init__ and use bisect, or cache lookups keyed by timestamp, so per-bar cost is O(log n) not O(n).
Implementation
LTC/BCH log-ratio continuation on Hyperliquid 4H bars. An entry needs two conditions. First, the 12-bar standard deviation of ratio changes must be at most compression_ratio times the 180-bar reference standard deviation; both windows exclude the trigger bar. Second, the ratio must break above its prior breakout_bars high or below its prior breakout_bars low. On entry the strategy buys the relative winner and shorts the loser at equal dollar notionals. Exits are a +1.5 sigma target, a -1.0 sigma ratio stop, the holding_bars time stop, or an 8% per-leg protective stop at the venue; when that stop fills, the other leg is closed too.
Iteration 3: Layer 1.5 rejected the config because parameters did not hold every fixed optimization_plan key with its exact value and type; leverage=1.0 was missing. Parameters now include all 12 fixed keys exactly as the plan states them (leverage 1.0 as a float; min_notional, cooldown_bars, reference_bars and compression_bars as ints). The three tunables sit at baselines inside their domains: holding_bars 18, breakout_bars 24, compression_ratio 0.7. No _param_bounds are declared because the code clamps no parameter. The only code change: leverage is read from parameters and multiplies the per-leg exposure cap, which changes nothing at 1.0. Signal, alignment and exit logic are unchanged. Gross pair notional is at most 2 x 0.2 x equity.
Verification Results
sandbox_timeout: Verification failed (Layer 3 — sandbox backtest): smoke test exceeded the 300s wall-clock limit on a ~20000-bar window (2400 days of LTCUSD.HYPERLIQUID-4-HOUR-LAST-EXTERNAL). This almost always means per-bar work that scales with history — e.g. rescanning the full funding/supplementary series, or rebuilding a list and calling min()/sorted() inside calculate_signal()/on_bar() on every bar. Precompute sorted timestamp arrays ONCE in __init__ and use bisect, or cache lookups keyed by timestamp, so per-bar cost is O(log n) not O(n).
Iteration History
Verification failed (Layer 1.5 — hypothesis/config consistency) [class=hypothesis_mismatch]: - optimization_plan fixes leverage at 1.0
Outcome Summary
Per-bar work in calculate_signal() needs to be measured against the 20,000-bar sandbox budget before submission. Here it copies the ratio deque into a list and runs np.std over the reference window on every bar. Rolling statistics should be updated incrementally, and the base-template warmup buffers should not be rescanned each bar.
It was abandoned after 3 iterations. Each time it failed verification at Layer 3: the sandbox smoke test ran past the 300-second limit on a roughly 20,000-bar window (2,400 days of LTCUSD.HYPERLIQUID 4-hour bars). Backtest review, optimization, analyst review and risk review never ran.
On Hyperliquid 4-hour bars, it bet that when the LTC/BCH log-price ratio breaks out after a period of low relative volatility, the ratio keeps moving the same way for about three days. It bought the winning coin and shorted the losing coin in equal dollar amounts.
No performance figures exist. The strategy never completed a backtest or optimization, so there is no return, Sharpe or trade count. The only number from research is 134 raw compression-breakout trigger events across 5,883 synchronized 4-hour observations, counted before any forward returns were checked.
Backtest and paper results are hypothetical. Trading involves risk of loss.