Skip to content

View translation

LtcFourHourMacdBullishMomentumContinuationLong

Hypotheses

LTC 4H MACD Bullish Momentum Continuation Long

Hypotheses

A long-only single-instrument MOMENTUM-CONTINUATION strategy on LTCUSDT perpetual futures (Binance USD-M) using the classic MACD (12, 26, 9) indicator on 4-hour bars. CRITICAL DESIGN CHOICES informed directly by the latest 4 failure waves: (a) ZERO supplementary data dependency — the system-wide supplementary feeds (funding, liquidations, open_interest, taker_ratio, premium_index) have ALL failed in the last 4 hypothesis cycles due to empty/unavailable feeds; this strategy uses ONLY OHLCV. (b) NOT mean reversion — VWAP-deviation mean reversion on alt perps (XRP) was explicitly falsified with negative Sharpe over 623 trades; this is a momentum-CONTINUATION design. (c) NOT a contrarian short — BTC funding-rate contrarian short was definitively falsified ('extreme funding is a continuation signal, not mean-reversion' in modern crypto microstructure); this strategy trades WITH momentum, long-only. (d) 4H + Binance USD-M — the proven verification combination (every Hyperliquid/daily-pattern strategy hit auditor failures). (e) NEW symbol — LTC is one of the longest-history liquid crypto perps (10+ years of spot price history), providing rich backtest coverage and is not represented in the current portfolio. (f) Uses MACD with FIXED canonical parameters (12/26/9) — these are universal defaults, NOT curve-fit, eliminating the overfitting concern flagged in failure feedback.

Hypotheses

Iteration 3 fixes only the reported Layer-2 failure: `_ema_series() takes 2 positional arguments but 3 were given`. Root cause is the verifier's `_Wrapper` cloning (strategy_verifier.py:118-132), which re-binds every callable attribute via `types.MethodType`, injecting a spurious first arg into any static/plain-function helper. The minimal, guaranteed fix is to remove the helper method entirely and compute the EMA with an identical LOCAL nested function (`ema_series`) inside `calculate_signal` — a closure is never copied or rebound by the harness, so the TypeError cannot recur. The EMA math, the MACD line/signal/histogram construction, the bull/bear-cross gating, the continuous non-frozen signal, and all should_enter/should_exit/position_size logic are byte-for-byte unchanged, so the previously-passing Layer-1 static checks and the entry/exit mechanism are preserved. Imports remain clean (numpy only). Leverage is genuinely consumed in sizing (equity*position_pct*leverage).

Hypotheses

Fundamentally losing strategy over a large, correctly-implemented 219-trade sample - not a code bug or small-sample artifact. Negative expectancy (-369/trade), profit_factor 0.907, Sharpe -0.23, Sortino -0.48, and an 83.6% max drawdown. The only profitable year was 2020 (+74%); every year since has lost money (2022 -11%, 2023 -30%, 2024 -13%, 2025 -76%, 2026 -16%), showing a decayed/absent edge. Canonical MACD(12/26/9) bullish-crossover continuation, long-only on a single alt perp, is a fully-arbitraged non-edge; optimization varies parameters within the mechanism and cannot create expectancy where a large sample shows consistent losses across 5 years. Not iterate (implementation is correct) and not worth 2 hours of optimization.

Implementation

Long-only MACD(12/26/9) momentum-continuation strategy on LTCUSDT.BINANCE USD-M perpetual futures, 4H bars, pure OHLCV (no supplementary data). Enters long on a bullish MACD-histogram crossover while the MACD line is above zero (trades WITH established bullish momentum); exits on a bearish crossover, a 4% stop-loss, or an 8% take-profit. Leverage 2.0, sizing at 0.60*2.0 = 1.2x equity notional, capital-relative.

Verification Results

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['fast_period', 'slow_period', 'min_notional', 'position_pct', 'signal_period', 'stop_loss_pct', 'take_profit_pct', 'require_above_zero'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: TypeError: LtcFourHourMacdBullishMomentumContinuationLong._ema_series() takes 2 positional arguments but 3 were given (bar timestamp: 1735691940000) - steady_downtrend: TypeError: LtcFourHourMacdBullishMomentumContinuationLong._ema_series() takes 2 positional arguments but 3 were given (bar timestamp: 1735691940000) - flat_ranging: TypeError: LtcFourHourMacdBullishMomentumContinuationLong._ema_series() takes 2 positional arguments but 3 were given (bar timestamp: 1735691940000) - volatility_spike: TypeError: LtcFourHourMacdBullishMomentumContinuationLong._ema_series() takes 2 positional arguments but 3 were given (bar timestamp: 1735691940000) - zero_volume: TypeError: LtcFourHourMacdBullishMomentumContinuationLong._ema_series() takes 2 positional arguments but 3 were given (bar timestamp: 1735691940000) - price_gap: TypeError: LtcFourHourMacdBullishMomentumContinuationLong._ema_series() takes 2 positional arguments but 3 were given (bar timestamp: 1735691940000)

Backtest Review

Clean implementation: 219 long-only MACD continuation entries fire as designed, pure OHLCV, adequate sample and 6.5-year coverage.

Backtest Review

One genuinely positive year (2020, +74%) shows the signal isn't inverted.

Backtest Review

Fundamentally losing over a large sample: total_return -37.3%, Sharpe -0.23, Sortino -0.48, profit_factor 0.907, expectancy -369/trade.

Backtest Review

Catastrophic risk: max_drawdown 83.6%, 1833-day drawdown duration, up to 12 consecutive losses.

Backtest Review

Edge exists only in 2020, then loses money 5 straight years (2022 -11%, 2023 -30%, 2024 -13%, 2025 -76%, 2026 -16%) - classic decayed/no-edge signal.

Backtest Review

Negative alpha (-0.031) and information_ratio (-0.35) vs LTC buy-hold; canonical MACD crossover is fully arbitraged with no residual edge to optimize toward.

Analysis

Do NOT optimize yet — the backtest is invalid due to a position-stacking leverage bug. SPECIFIC FIX: in should_enter(), return None if a position is already open (e.g. `if self.cache.positions_open(instrument_id=self.instrument_id): return None`) before checking self._armed. Currently every fresh bullish MACD crossover during an uptrend submits another 1.2x tranche on top of the existing long, compounding notional to ~6x equity (avg_position_pct 595.6%) and producing impossible >100% daily moves and sub -100% annual returns. After adding the flat-check, re-run and confirm avg_position_pct sits near the intended 120% and daily returns are bounded sanely. Optionally also confirm position_size() recomputes off current equity each entry (it does) so size scales down as equity falls. Once the sizing is correct, the true MACD-continuation edge can actually be judged — note the contaminated run already hints at a weak edge (PF 0.89, 30.6% win rate), so if the clean re-run is still net-negative this should be abandoned rather than optimized.

Outcome Summary

LtcFourHourMacdBullishMomentumContinuationLong was a deliberately simple, overfitting-resistant attempt to trade with momentum using the textbook MACD(12/26/9) crossover on LTC 4H bars, pure OHLCV to sidestep the prior waves of supplementary-data failures. The implementation was clean — 219 long entries across 6.5 years — but the edge existed only in 2020 (+74%) and then bled money every year through 2026, ending at -37.3% total return, Sharpe -0.23, and an 83.6% max drawdown. The analyst abandoned it at the backtest-review gate, reasoning that a fully-arbitraged canonical crossover with consistent five-year losses offered nothing for the optimizer to sharpen. Retired after 3 iterations without reaching optimization or analyst promotion review.

Outcome Summary

Canonical, universally-known indicators like MACD(12/26/9) crossover on a single major perp are effectively fully arbitraged — a signal that only worked in 2020 and decayed for five straight years has no edge for optimization to recover.

Outcome Summary

The analyst issued an 'abandon' verdict at the pre-optimization backtest-review gate: a correctly-implemented large-sample signal with negative expectancy and no residual edge to optimize, so optimization and later stages were never reached.

Outcome Summary

A long-only, pure-OHLCV momentum-continuation strategy on LTCUSDT 4H perps that entered on a canonical MACD(12/26/9) bullish histogram crossover while the MACD line was above zero, exiting on a bearish cross, stop-loss, or take-profit at 2x leverage.

Outcome Summary

Over ~6.5 years it fired 219 clean long entries but lost money: total return -37.3%, Sharpe -0.23, Sortino -0.48, profit factor 0.907, expectancy -$369/trade, 31% win rate, and an 83.6% max drawdown; only 2020 (+74%) was profitable, with every year 2022–2026 losing (2025 -76%).
Strategy report

Backtest and paper results are hypothetical. Trading involves risk of loss.