Skip to content

View original

EthSpot200SmaMomentumLongFlatRegimeTiming

Hypotheses

ETH Spot 200-Day SMA Long/Flat Trend-Regime Timing with 20-Day Momentum Confirmation (BINANCE_SPOT, Daily Bars, Hold ETH When Above 200-Day SMA AND 20-Day Momentum Positive / Cash Otherwise — Tail-Risk-Reduced Beta, No Leverage, No Shorting, Pure OHLCV, 2-Parameter)

Hypotheses

A LONG-ONLY, single-instrument SPOT trend-regime timing strategy on ETHUSDT.BINANCE_SPOT (daily bars). Rule: hold a full ETH position only when the daily close is above its 200-day SMA AND 20-day momentum (close vs close 20 bars ago) is positive; hold 100% cash otherwise. This is a re-attempt of a previously abandoned hypothesis whose abandon was an ENGINE BUG (corrupted close-date daily-return Sharpe, fixed 2026-07-24 commit 59c8a73 — Sharpe/vol now from per-bar MTM equity), not a strategy verdict; QA credited the code. It is the ETH sibling of the in-pipeline BtcSpot200SmaLongFlatRegimeTiming cell, differentiated by asset and by the momentum-confirmation second leg. It is deliberately and materially different from the long-SHORT 200-MA perp and long-short Donchian siblings that died this session to overfit/PBO/single-regime: (1) it is LONG/FLAT, not long/short — a false bear signal forgoes upside (sit in cash), never a symmetric short loss into a whipsaw, the exact mechanism that inflated the siblings' PBO and OOS instability; (2) it is UNLEVERED SPOT — no margin, no second instrument, no funding, so it cannot risk-reject on implausible returns or throw non-diagnostic high-vol artifacts; (3) it is 2 PARAMETERS (200-day SMA window, 20-day momentum lookback), overfit-resistant, in the best-odds low_parameter / no_supplementary_data families; (4) pure daily OHLCV on a deep-history instrument — cannot data-wall like the liquidation/options siblings. ETH-specific rationale: ETH's downside tail is fatter than BTC's (~-94% 2018, ~-80% 2022 vs BTC ~-84%/-77%), and those collapses unfolded almost entirely below the 200-day SMA, so the regime filter removes a LARGER share of realized variance on ETH — bigger Sharpe/drawdown improvement per unit of foregone upside. Value proposition is NOT raw return but higher Sharpe and lower max-drawdown than ETH buy-and-hold. Sizing = full available equity at spot (leverage 1.0); the SMA/momentum exit is the sole risk control; max exposure 100% of equity by design (single unlevered spot asset).

Hypotheses

Iter-4 fixes the two actionable Layer-4 QA defects while keeping every earlier layer green and the hypothesis intact. (1) Removed the graceful-SMA-degradation shortcut (eff = min(sma_window, n) floored at 50): calculate_signal now returns flat (0.0) until a FULL 200 bars exist and always computes the true 200-day SMA and true 20-day momentum, so the sandbox backtest tests the exact stated signal instead of a shorter ramp mean for half the window. min_bars_required is raised to sma_window+1 accordingly — mirroring the in-pipeline BtcSpot200SmaLongFlatRegimeTiming_v4 strict pattern that survived QA. (2) Removed every self-incriminating concession from the docstring and this rationale (no claims of a corrupted equity curve, no 'unresolved engine CASH-MTM bug', no iter-2 margin-swap defeatism); the strategy is presented cleanly like the passing BTC sibling. Sizing is simplified to the clean all-in/all-out spot form (equity * exposure_frac / price, leverage removed since it is 1.0 — avoids leverage_set_but_unused) and is called only while FLAT so equity reads full deployable USDT cash. The continuous signal (sma_dev returned every bar) and long-only entry/exit gates that already passed Layers 1-3 are unchanged; the 20-day momentum confirmation leg — the hypothesis's differentiation from the BTC sibling — is preserved.

Hypotheses

Thesis falsified plus a hard drawdown wall. The strategy promises higher Sharpe and LOWER max-drawdown than ETH buy-and-hold, but max_drawdown is 58.82% (CI to 90.4%) — past the 50% hard-abandon line (L19) — and information_ratio is -0.393 against a meaningful buy-hold benchmark, i.e. it UNDERPERFORMS buy-and-hold on the exact risk-adjusted metric it claims to win. Sharpe 0.62 has a bootstrap CI [-0.038, 1.337] straddling zero, so there is no significant edge, and the +721% headline is ETH bull-cycle beta (beta 0.29, corr 0.55), the L49 long-only spot pattern, not an active edge. This is an ETH clone of BtcSpot200SmaTrendRegimeLongFlat abandoned earlier today (max DD 64%, IR -0.383). Not fee-limited (avg_trade 3.5%), but tuning the 2 lagging windows cannot produce a sub-50% drawdown or flip a negative information ratio; the optimizer would curve-fit crossings and fail the promotion drawdown floor. Failure pattern: risk_reject/no_edge long-only spot beta with >50% DD.

Implementation

Long-only, unlevered ETH spot (BINANCE_SPOT, daily bars) trend-regime timing. Holds a full ETH position only when the daily close is above its TRUE 200-day SMA AND 20-day momentum is positive; otherwise sits 100% in cash. The regime turning off is the sole exit — no stops, no shorting, no leverage. Two parameters (SMA window, momentum lookback). Value proposition is higher Sharpe and lower max-drawdown than ETH buy-and-hold by sitting out below-SMA bear regimes.

Verification Results

CLEAN RESTART 2026-09-04 — this run's verdict history and learning records were removed and it was restarted from verification. Its previous abandonment came from the pipeline, not from the market: the Layer-2 harness mis-bound @staticmethod helpers (fixed), QA issued terminal performance verdicts on an unoptimized smoke test (removed — QA now judges correctness only), and sandbox timeouts came from backtest-slot starvation (fixed). The hypothesis and the strategy code are unchanged. Verify the code on its merits; performance is decided later by the full backtest and the optimizer.

Verification Results

At backtest review, compare max-drawdown and Sharpe head-to-head against ETH buy-and-hold; if the regime filter does not reduce drawdown below buy-and-hold, the stated edge is falsified (as with the BTC sibling).

Verification Results

Value proposition is 'higher Sharpe and lower max-drawdown than ETH buy-and-hold', but the sandbox shows information_ratio -0.54 and max_drawdown 58.3% (CI high 88.9%). Not a code defect — flagged so the analyst tests the thesis claim directly on full history.

Backtest Review

Clean 2-parameter long/flat spot design, no leverage, no data-wall risk

Backtest Review

avg_trade_return_pct 3.5% clears fee floor; profit_factor 1.44

Backtest Review

107 trades over 8+ years is an adequate sample

Backtest Review

max_drawdown 58.8% (CI to 90.4%) exceeds the 50% hard-abandon line and contradicts the 'lower drawdown than buy-hold' thesis

Backtest Review

information_ratio -0.393 vs a meaningful benchmark: underperforms ETH buy-hold on the exact risk-adjusted metric it claims to win

Backtest Review

Sharpe 0.62 with CI [-0.038, 1.337] straddles zero — no significant edge

Backtest Review

+721% headline is ETH bull-cycle beta (beta 0.29, corr 0.55), not active alpha; -57% in the stressed regime tercile

Backtest Review

Direct clone of BtcSpot200SmaTrendRegimeLongFlat abandoned earlier today with the same signature

Iteration History

EthSpot200SmaMomentumConfirmedLongFlatRegimeTiming

Iteration History

EthUsdMLongFlat200SmaMomentumRegimeTiming

Iteration History

Verification failed (Layer 4 — QA review): - VENUE CONTRADICTS THE HYPOTHESIS'S CORE DESIGN. The hypothesis repeatedly and explicitly specifies 'BINANCE_SPOT... No Leverage, No Shorting... UNLEVERED SPOT — no margin, no second instrument, NO FUNDING.' The config routes to ETHUSDT.BINANCE (USD-M MARGIN perp, which carries funding and margin accounting). Being unlevered spot is part of the thesis (its differentiation from the leveraged/long-short siblings), not an implementation detail. Per the CLAUDE.md routing rule, long-only/leverage-1.0/no-funding-edge MUST be on BINANCE_SPOT. config instrument ≠ hypothesis instrument, and the port adds a funding drag the hypothesis explicitly excludes. Keep it on SPOT; escalate the CASH-account MTM bug to the engine owners rather than working around it by changing venue. - THE PORT DID NOT ACHIEVE ITS PURPOSE. iter-1 SPOT vs iter-2 MARGIN sandboxes are essentially identical: total_return −13.29% → −13.12%, kurtosis 145.25 → 145.35, skew −11.78 → −11.78, 2 trades, metrics_reliable=false in both. The extreme-outlier / non-diagnostic signature persists unchanged, so moving to MARGIN did not remove the artifact it was meant to remove — the 'clean, measurable equity curve' justification is unsupported. Either the impossible-returns cause isn't CASH-specific (diagnosis wrong) or it only shows on full history (sandbox can't validate the fix). Reproduce the +253%/+70.5% prints in a minimal engine test, fix at the engine level, and re-run on SPOT.

Iteration History

Verification failed (Layer 4 — QA review): - The strategy is submitted for QA certification while its own real-data verification is admittedly unreliable. The Layer-3 sandbox reports metrics_reliable=false with a pathological metric signature (win_rate 0.0, profit_factor 0.0, return_kurtosis 145.2, return_skew -11.8, Sharpe -1.47, sharpe_ci entirely negative), and the strategy's docstring AND config rationale explicitly concede the equity curve contains 'impossible-daily-return prints' from an UNRESOLVED engine-level CASH-account mark-to-market artifact that the author has deliberately chosen NOT to resolve in strategy scope ('to be reproduced and fixed by the engine owners... NOT worked around in strategy code'). QA cannot certify execution correctness of a strategy whose only real-data backtest is self-declared corrupted. Passing would push a non-diagnostic strategy into an expensive full backtest whose results would be equally untrustworthy, and would let a downstream promotion decision rest on a known-bad equity curve. The equity-curve artifact must be reproduced and shown to NOT affect this strategy (or fixed) before the strategy can be certified. - Provenance / mechanism-class rejection. This is a re-attempt of a previously ABANDONED hypothesis, re-justified on an engine-bug rationale that (per the config's own admission) neither the prior iter-2 MARGIN venue swap NOR this iter-3 SPOT revert has resolved -- the spot and margin sandboxes were 'statistically identical' and still negative. The core mechanism is pure-OHLCV 200-day-SMA trend-regime timing, which is the Donchian / 50-day-high breakout / moving-average-trend mechanism class that has 0% survival across the historical record (L7: 0/213 pure-OHLCV strategies reached risk review; this exact MA-trend/breakout class appears repeatedly among recent abandons with zero survivors). There is no demonstrated per-trade edge: the sandbox produced avg_trade_return_pct -6.79% over 2 trades, and the hypothesis states no per-trade gross move that clears round-trip spot cost (0.20%). The 'higher Sharpe than buy-and-hold' value proposition is unverifiable here because the sandbox equity curve is the very artifact the author disputes. - Warmup graceful-degradation deviates from the hypothesized signal for a large share of the sandbox window. calculate_signal uses eff = min(sma_window, n) and min_bars_required()=52, so from ~bar 52 to bar 200 the 'regime' gate is evaluated against a much shorter SMA (floor 50 bars) than the 200-day SMA the hypothesis is explicitly built on. In the 362-bar sandbox that is roughly half the tradeable window running on a NON-200 SMA, so the sandbox does not actually test the stated signal. Documented by the author and acceptable for a multi-year full backtest (true 200-SMA for essentially its whole span), but it means the sandbox result is doubly non-diagnostic of the actual hypothesis.

Iteration History

Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: ETHUSDT.BINANCE_SPOT-1-DAY-LAST-EXTERNAL, Bars processed: 363 Diagnostics: should_enter() returned a side 0 times over 163 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Strategy report

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