Skip to content

View original

SolDailyMultiWeekTrendContinuationLong

Hypotheses

SOL Daily Multi-Week Trend Continuation Long with 200-SMA Regime Filter (30/80 EMA + 20-Day Momentum + 5-Day Continuation Trigger)

Hypotheses

A long-only single-instrument trend-continuation strategy on SOLUSDT perpetual futures using daily bars and OHLCV-only data. This proposal applies the LINK 1D Multi-Week Trend Continuation architecture (Sharpe 2.55, promoting) to SOL. Asset selection is justified by SOL-SPECIFIC empirical evidence — NOT a theoretical fractal-edge argument: SOL Daily 21/55-EMA Trend Continuation produced Sharpe 3.81 (paper_stage), which is direct empirical proof that SOL responds to daily EMA-based trend-following constructions. The 21/55 EMA success establishes that SOL has clean intermediate-trend persistence at daily timeframe; the Multi-Week Trend Continuation uses 30/80 EMA + 20-day momentum + 5-day continuation trigger which is a DIFFERENT signal profile than 21/55 EMA + breakout — capturing a different segment of SOL's trend dynamics. Importantly, this proposal explicitly addresses the recently-documented architecture-mirror failures (4 abandonments this session: BNB Golden Cross, ETH Spot Drawdown, SOL Spot Drawdown, LINK 4H Volume Breakout) by: (a) NOT mirroring an architecture that has been tested + failed on this exact asset (SOL Spot Drawdown failed, but for fixed-trail-too-tight-for-vol reasons; this proposal uses ATR-volatility-adjusted trail), (b) justifying asset selection on EMPIRICAL evidence (SOL daily trend works empirically via 21/55 EMA), (c) requiring sensitivity_passed=true with cliff_count=0 as HARD GATE before optimization, (d) NO bait-and-switch — strictly SOLUSDT.BINANCE perp throughout. Existing SOL strategies in pipeline use different mechanisms: SolDailyEmaTrendContinuationLong uses 21/55 EMA + vol-floor (event-on-cross), this proposes 30/80 EMA stack + 20-day positive return + 5-day high (state-based with continuation trigger). SolFourHourVolumeBreakoutLong uses 4H + volume — different timeframe entirely. Mechanism-diverse from existing SOL exposure. Single-dominant-filter design (200-day SMA regime + 30/80 EMA stack + 20-day momentum), explicitly NOT a multi-condition AND-gate. Calibrated for ~6-15 entries/year — well above the sparsity-failure threshold.

Hypotheses

Iteration-3 fix for the Layer-2 crash 'SolDailyMultiWeekTrendContinuationLong._ema() takes 2 positional arguments but 3 were given'. Root cause: the Layer-2 _StrategyProxy rebinds every callable instance/class attribute through types.MethodType against a plain wrapper, which can mangle the argument binding of the strategy's own helper methods. The smallest robust fix is to move the three stateless numeric helpers (_ema/_sma/_compute_atr) out of the class into module-level functions (_calc_ema/_calc_sma/_calc_atr). Module-level functions are never enumerated by the proxy's attribute-rebinding loop, so their signatures can't be altered. The signal math, entry/exit logic, sizing, parameters, and instrument are byte-for-byte identical to the previous iteration — only the helper call form changed (e.g. self._ema(closes, self.ema_fast) -> _calc_ema(closes, self.ema_fast)). Verified locally: Layer 1 static PASS and all 6 Layer-2 synthetic scenarios PASS. No imports were added (Layer 1 stays clean); no signal-generation logic that already passed earlier layers was altered.

Hypotheses

Failed deflated Sharpe and every forward gate on optimization attempt 1. DSR=0.0 (vs 0.95 bar) with the optimized Sharpe 2.24 FAR below the 225-trial expected-max luck bar of 7.092 (is_significant=false, PBO 0.6151 >0.5) — after multiple-testing correction the selected config is statistically indistinguishable from best-of-N noise; probabilistic_sharpe 1.0 vs DSR 0.0 is the textbook selection-inflation trap. The walk-forward is is_overfitted=TRUE with avg IS Sharpe 3.94 collapsing to avg OOS Sharpe 0.0 across all three windows [0.0, 0.0, 0.0] — the OOS folds are EMPTY, and the holdout FAILED (ratio 0, holdout_sharpe 0.0 against a 0.0 WF-OOS baseline). Root cause is event sparsity that directly contradicts the hypothesis's central promise of '6-15 entries/year well above the sparsity threshold': the strategy produced only 19 trades over ~5.7 years (~3.3/yr), too few to populate a 3-window walk-forward, so every OOS window has zero trades. The base edge is outlier-carried (kurtosis 284, skew 16.1, tail_ratio 0.018) — a couple of days (2024-01-07 +35%, 2021-09-20 +19%) drive the entire result. Not iterate: the clean 0-cliff sensitivity grid measures consistency not significance, and no parameter change manufactures trades in empty OOS windows or lifts a Sharpe from below a 7.09 luck bar to significance — loosening thresholds to force more trades would merely curve-fit the same tiny sample (this is the overfit case: high IS, zero OOS, PBO 0.62 -> overfit implies abandon). Not revise_hypothesis: single-asset SOL daily long-only trend continuation is not a proven mechanism stranded on a dead target (SOL is fine; the cited SOL 21/55-EMA 'paper_stage' sibling is a different, unpromoted construction), so there is nothing validated to re-target. FAILURE PATTERN: porting the LINK 1D Multi-Week Trend Continuation architecture to SOL does NOT inherit promotability — the 30/80-EMA + momentum + 5-day-high continuation trigger fires only ~3.3x/year on SOL daily (vs the promised 6-15), leaving all walk-forward OOS windows empty (0.0), failing the holdout, and producing a best-of-225 Sharpe (2.24) far below the 7.09 luck bar with DSR 0.0. A clean 0-cliff sensitivity surface and PSR 1.0 do not rescue a sparse, outlier-carried single-asset daily trend edge that fails deflation and forward validation simultaneously.

Implementation

Long-only daily trend-continuation on SOLUSDT.BINANCE perpetual futures. Enters when a 200-day SMA regime filter, a 30/80 EMA trend stack, and a positive 20-day momentum all hold AND price closes at a new 5-day high (continuation trigger). Exits on an ATR(14) chandelier trail (3x), a trend break below the 80-EMA, or a regime break below the 200-SMA. Position sizing is capital-relative via ATR-based risk (2% equity risked per ATR-multiple stop).

Verification Results

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['atr_mult', 'ema_fast', 'ema_slow', 'risk_pct', 'atr_period', 'mom_period', 'sma_period', 'min_notional', 'size_precision', 'breakout_period', 'max_notional_frac'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: TypeError: SolDailyMultiWeekTrendContinuationLong._ema() takes 2 positional arguments but 3 were given (bar timestamp: 1735701840000) - steady_downtrend: TypeError: SolDailyMultiWeekTrendContinuationLong._ema() takes 2 positional arguments but 3 were given (bar timestamp: 1735701840000) - flat_ranging: TypeError: SolDailyMultiWeekTrendContinuationLong._ema() takes 2 positional arguments but 3 were given (bar timestamp: 1735701840000) - volatility_spike: TypeError: SolDailyMultiWeekTrendContinuationLong._ema() takes 2 positional arguments but 3 were given (bar timestamp: 1735701840000) - zero_volume: TypeError: SolDailyMultiWeekTrendContinuationLong._ema() takes 2 positional arguments but 3 were given (bar timestamp: 1735701840000) - price_gap: TypeError: SolDailyMultiWeekTrendContinuationLong._ema() takes 2 positional arguments but 3 were given (bar timestamp: 1735701840000)

Backtest Review

Strategy functions cleanly: 19 entries signaled/submitted, 0 dropped (size/cash/notional)

Backtest Review

Trades match the hypothesis — long-only trend continuation, ~25-day holds, entries in confirmed uptrends

Backtest Review

Coherent, plausible metrics for a daily trend-follower: Sharpe 1.05, +74% total return, 10.5% max DD, profit_factor 6.45, exposure 30%

Backtest Review

Not an artifact — return magnitude and drawdown profile are realistic

Backtest Review

Outlier-carried: kurtosis 284, skew 16.1, tail_ratio 0.0179 — two days (2024-01-07 +35.3%, 2021-09-20 +18.8%) drive most of the return; 2023/2025 flat-to-negative

Backtest Review

Trade frequency ~3.3/year vs the hypothesis's claimed 6-15/year — the 4-filter entry is effectively an AND-gate, giving a thin 19-trade base for parameter fitting

Backtest Review

sharpe_ci_low -0.299 straddles 0 — significance is unproven and will be the decisive post-optimization test

Analysis

Clean sensitivity surface: cliff_count=0, all 11 parameters stable across +/-20% (Sharpe ~1.0-1.1 everywhere) — the sensitivity HARD GATE the hypothesis set was met

Analysis

Faithful implementation: strictly long-only SOLUSDT.BINANCE perp, no bait-and-switch, trades match the stated 30/80-EMA + momentum + 5-day-high continuation mechanism

Analysis

Low drawdown (base 10.5%, optimized 2.9%) and no liquidation

Analysis

Deflated Sharpe = 0.0 (vs 0.95 bar); optimized Sharpe 2.24 far below the 225-trial expected-max luck bar of 7.09; is_significant=false; PBO 0.6151 (>0.5)

Analysis

Walk-forward is_overfitted=true: avg IS Sharpe 3.94 collapses to avg OOS Sharpe 0.0 with all three OOS windows exactly [0.0, 0.0, 0.0] — empty out-of-sample folds

Analysis

Holdout FAILED: passed=false, holdout_sharpe 0.0 against a 0.0 WF-OOS baseline (spurious ratio)

Analysis

Event sparsity contradicts the core hypothesis claim: 19 trades over ~5.7 years (~3.3/yr) vs the promised 6-15/yr — too few to populate the walk-forward

Analysis

Edge is outlier-carried: kurtosis 284, skew 16.1, tail_ratio 0.018; base return dominated by a few days (2024-01-07 +35%, 2021-09-20 +19%)

Analysis

probabilistic_sharpe 1.0 vs deflated_sharpe 0.0 is the classic best-of-N selection-inflation trap

Analysis

Do NOT optimize yet — the entry over-filters to 19 trades (~3/yr) vs the intended 6-15/yr, and the entire edge rests on 2 outlier days, so the optimizer would just fit those 2 days. Root cause: entry requires FOUR conjoined conditions (regime_ok AND stack_ok AND mom_ok AND trigger), contradicting the stated 'single-dominant-filter' design. The 5-day-high continuation trigger is the main throttle — it only fires when an already-confirmed uptrend (200-SMA + 30/80 EMA stack + 20-day positive momentum) ALSO prints a new 5-day high simultaneously, which is rare. Concrete fixes to raise trade count toward the claimed 6-15/yr BEFORE re-submitting: (1) Remove the 5-day-high trigger entirely and enter on the state condition (regime + stack + momentum) with a re-entry debounce, OR replace it with a much looser pullback-entry; (2) alternatively, drop ONE of the redundant trend confirmations — the 200-SMA regime, the 30/80 stack, and the 20-day momentum are highly collinear (all just say 'uptrend'), so keep the 200-SMA regime + 30/80 stack and drop the separate 20-day momentum gate; (3) verify the resulting trade count is >=40 over the full history and that the edge survives when the top 2 winning days are excluded (compute Sharpe ex-outliers). Re-submit once the strategy hits its own stated frequency and the per-trade edge is not concentrated in 2 days.

Outcome Summary

SolDailyMultiWeekTrendContinuationLong took the LINK Multi-Week Trend Continuation architecture and pointed it at SOL daily bars, justifying the asset choice on SOL's empirically-shown daily EMA-trend persistence. Its initial backtest was clean and attractive — Sharpe 1.05, +74% return, 10.5% drawdown, profit factor 6.45 — earning an 'optimize' verdict, and it cleared the sensitivity hard gate with zero cliffs. But optimization revealed the edge was an illusion: a best-of-225 Sharpe of 2.24 against a 7.09 luck bar, deflated Sharpe 0.0, PBO 0.62, an overfitted walk-forward whose in-sample 3.94 collapsed to 0.0 out-of-sample, and a failed holdout. The root cause was event sparsity — only ~3.3 trades per year versus the promised 6-15 — which emptied every out-of-sample window and left an outlier-carried result (kurtosis 284) that could not survive deflation, so the analyst abandoned it rather than curve-fit a tiny sample.

Outcome Summary

Porting a promotable architecture onto a new asset does not inherit its promotability; a sparse (~3.3 trades/yr), outlier-carried edge leaves walk-forward OOS windows empty and fails deflation and forward validation simultaneously, and a clean zero-cliff sensitivity surface measures consistency, not statistical significance.

Outcome Summary

At the post-optimization analyst gate the strategy failed every forward-validation criterion — deflated Sharpe 0.0 (vs 0.95 bar), is_significant=false, holdout failed (sharpe 0.0), and an overfitted walk-forward — so it was abandoned rather than iterated, with only 19 trades over ~5.7 years (~3.3/yr) leaving the out-of-sample folds empty.

Outcome Summary

A long-only daily trend-continuation strategy on SOLUSDT perpetual futures that ported the LINK 1D Multi-Week Trend Continuation architecture — a 30/80 EMA stack plus 20-day momentum and a 5-day-high continuation trigger, gated by a 200-day SMA regime filter with an ATR chandelier trail.

Outcome Summary

The initial backtest looked strong — Sharpe 1.05, +74.3% total return, 10.5% max drawdown, profit factor 6.45 over 19 trades (52.6% win rate) — and passed the sensitivity gate with cliff_count=0, but optimization exposed it: optimized Sharpe 2.24 sat far below the 225-trial expected-max luck bar of 7.09, with deflated Sharpe 0.0, PBO 0.6151, and walk-forward IS Sharpe 3.94 collapsing to OOS 0.0 across all three windows.
Strategy report

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