Skip to content

View original

AvaxDailyDualEmaTrendRegimeFilteredLS

Hypotheses

AVAX USD-M Daily Dual-EMA Trend, Long-Short with Long-Term Regime Filter (Single-Instrument BINANCE Perp, Validated Daily-Trend Family Applied to a Decorrelated High-Beta L1 Major with Deep Multi-Year History, ATR-Stopped, Low-Parameter)

Hypotheses

A LONG-SHORT, SINGLE-INSTRUMENT, DAILY dual-EMA-crossover trend strategy on AVAXUSDT.BINANCE (USD-M perpetual). It extends the factory's ONE empirically-validated, promoted edge — DAILY time-series trend-following on high-beta majors that trend cleanly (the BTC/ETH/SOL TS-momentum siblings at paper_stage) — to a high-beta L1 major the long-short trend book does NOT yet cover and that adds a decorrelated return stream (AVAX is the closest behavioral analog to the validated SOL: a high-beta L1 that produced powerful sustained advances in 2021 and 2023-2024, with deep multi-year Binance history). It is built around every confirmed engine and edge landmine of this session: SINGLE-INSTRUMENT / SINGLE-VENUE / SINGLE-ACCOUNT (cannot trigger the multi-instrument equity/return aggregation artifact that corrupted the pairs / rotation / spot-sleeve / cash-carry runs); DEEP MULTI-YEAR HISTORY on Binance (directly avoiding the Hyperliquid ~155-day data wall that overfit-collapsed the HL funding-reversion run — walk-forward and holdout here span multiple real bull/bear regimes); DAILY bars (the validated cadence — NOT the intraday-bar breakout/vol-expansion/impulse variants that are chop/whipsaw-dominated and negative on majors); no options, no funding-carry, no cross-venue. It is engineered to PASS where LTC trend FAILED: the LTC lesson was that the trend edge is asset-selective and a naked trend-cross gets chopped on a range-bound laggard — AVAX is a high-beta trender (unlike laggard LTC), and a LONG-TERM REGIME FILTER (take longs only above a rising 200-day MA, shorts only below a falling one) keeps the book out of the directionless chop that produces the 16.8%-win-rate whipsaw. Low parameter count (~4 knobs) to resist overfitting; thresholds set so the strategy is in-market a healthy fraction of the time (ample trades, no Layer-3 no-trade failure).

Hypotheses

Iteration 3 fix: the Layer-2 synthetic scenarios failed with 'TypeError: _ema() takes 2 positional arguments but 3 were given' — the helper name `_ema` collided with a 2-arg method already bound in the verifier's execution context, shadowing our 3-arg definition. Minimal, non-regressing fix: renamed the private helper `_ema` -> `_calc_ema` at the definition and its two call sites in calculate_signal. No imports, class structure, signal logic, sizing, or parameters were changed, so Layer 1 (static) stays green and the previously-passing signal/entry/exit logic is untouched. The strategy still implements the hypothesis exactly: DAILY dual-EMA trend on high-beta AVAX with a long-term 200-MA regime filter, ATR-stopped, low-parameter, single-instrument BINANCE perp.

Hypotheses

failed deflated Sharpe: DSR=0.0001, expected-max=1.6676 over 225 trials — the selected optimized Sharpe (0.533) sits BELOW the best-of-N luck bar and is statistically indistinguishable from noise (is_significant=false, sharpe_ci_low=-0.249 straddling 0, PBO=0.6098>0.5; probabilistic_sharpe 0.966 vs DSR 0.0001 is the textbook selection-inflation trap). The walk-forward is is_overfitted=TRUE: avg IS 1.71 collapses to avg OOS 0.43 with OOS windows [1.29, 0.0, 0.0] — two of three OOS folds produced NO trades, so the average is carried by a single window. The holdout 'pass' (ratio 2.62) is spurious because it is measured against that degenerate 0.43 WF-OOS baseline. The strategy has a NEGATIVE information_ratio (base -0.518, optimized -0.474) with benchmark_meaningful=true — it loses to its own AVAX buy-hold risk-adjusted — and its edge is outlier-carried (base return_kurtosis 821 / skew 26; optimized kurtosis 308) across only ~20-23 trades in 5+ years, while the optimizer doubled avg_position_pct (9.9%->24%) and max_drawdown (14%->29%) to buy return from the tail. Not iterate (attempt 1 of 2): the binding failures are structural — a below-luck-bar Sharpe, an overfit walk-forward with empty OOS windows, PBO 0.61, a negative information ratio, and a ~20-trade sample — with the entire sensitivity grid sitting uniformly at ~0.4 Sharpe (well below the 1.67 luck bar), so there is no robust region to tune toward and a second best-of-225 sweep re-selects the same outlier-fit config. Not revise_hypothesis: per the overfit->abandon rule this is high-IS/near-empty-OOS overfitting, AVAX is a valid trending L1, and the daily TS-momentum siblings (BTC/ETH/SOL) are already at paper_stage — the mechanism is not stranded on a dead target, so porting the same single-asset daily dual-EMA expression onto another major just re-overfits. FAILURE PATTERN: transferring the validated daily TS-momentum family to single-asset AVAX via a dual-EMA cross + 200-day regime filter does NOT inherit promotability — it yields the single-name daily-trend deflation signature (DSR 0.0001, optimized Sharpe 0.533 below the 1.668 luck bar, PBO 0.61, is_overfitted with two empty OOS windows, negative information ratio vs buy-hold) on a ~20-trade outlier-carried sample. A mostly-clean sensitivity surface and a holdout ratio inflated by a degenerate WF-OOS baseline measure consistency, not significance or forward-generalization.

Implementation

Long-short daily dual-EMA trend-following on AVAXUSDT USD-M perpetual. Fast/slow EMA spread (as % of slow EMA) defines direction; a 200-day SMA level+slope regime filter permits longs only above a rising 200-MA and shorts only below a falling one, keeping the book out of range-bound chop. ATR-based risk sizing and ATR stop-loss, plus trend-reversal and regime-flip exits. Single-instrument, single-venue, single-account on deep multi-year Binance history.

Verification Results

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['fast_ema', 'slow_ema', 'regime_ma', 'risk_frac', 'atr_period', 'min_notional', 'atr_stop_mult', 'entry_threshold', 'regime_slope_lookback'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: TypeError: AvaxDailyDualEmaTrendRegimeFilteredLS._ema() takes 2 positional arguments but 3 were given (bar timestamp: 1735703040000) - steady_downtrend: TypeError: AvaxDailyDualEmaTrendRegimeFilteredLS._ema() takes 2 positional arguments but 3 were given (bar timestamp: 1735703040000) - flat_ranging: TypeError: AvaxDailyDualEmaTrendRegimeFilteredLS._ema() takes 2 positional arguments but 3 were given (bar timestamp: 1735703040000) - volatility_spike: TypeError: AvaxDailyDualEmaTrendRegimeFilteredLS._ema() takes 2 positional arguments but 3 were given (bar timestamp: 1735703040000) - zero_volume: TypeError: AvaxDailyDualEmaTrendRegimeFilteredLS._ema() takes 2 positional arguments but 3 were given (bar timestamp: 1735703040000) - price_gap: TypeError: AvaxDailyDualEmaTrendRegimeFilteredLS._ema() takes 2 positional arguments but 3 were given (bar timestamp: 1735703040000)

Backtest Review

Strategy functions cleanly: 20 signaled / 20 submitted, 0 dropped (no no-trade or size-zero failure)

Backtest Review

Trades match the hypothesis: balanced long-short (9 long / 11 short), ~62-day avg hold, regime-filtered daily trend as designed

Backtest Review

Positive expectancy: profit_factor 1.94, total_return +20.3%, max_drawdown 14.3%, recovery_factor 2.24

Backtest Review

Single-instrument / single-venue / single-account — structurally avoids the multi-leg aggregation artifacts; within the validated daily-trend family

Backtest Review

Only 20 trades over 5.75 years — thin for a 3-window walk-forward (~6-7 trades/window); optimizer risks fitting noise

Backtest Review

Edge is outlier-concentrated: one trade (2022-01-10, +19.5% day) carries the entire result; return_kurtosis 821, skew 26, largest_win $18,999 vs avg_win $3,819

Backtest Review

sharpe_ratio 0.39 with sharpe_ci_low -0.77 (CI straddles 0); information_ratio -0.52 (loses to buy-hold, benchmark_meaningful=true)

Analysis

Single-instrument/single-venue/single-account construction avoids the multi-leg aggregation artifacts that corrupted the pairs/rotation/carry runs

Analysis

Deep multi-year Binance history (1261+ days) spans real bull/bear regimes; sensitivity surface has only 1 cliff (regime_ma)

Analysis

Regime filter kept trade count sane with no Layer-3 no-trade failure at base

Analysis

Failed deflated Sharpe decisively: DSR=0.0001, optimized Sharpe 0.533 BELOW the 225-trial expected-max luck bar of 1.668, is_significant=false, sharpe_ci_low=-0.249 straddling 0, PBO=0.6098 (>0.5)

Analysis

Walk-forward is_overfitted=TRUE: avg IS 1.71 -> avg OOS 0.43 with OOS windows [1.29, 0.0, 0.0] — two of three OOS folds produced NO trades

Analysis

Holdout 'pass' (ratio 2.62) is spurious — measured against a degenerate 0.43 WF-OOS baseline that is itself two-thirds empty

Analysis

NEGATIVE information_ratio (base -0.518, optimized -0.474) with benchmark_meaningful=true — loses to its own AVAX buy-hold risk-adjusted

Analysis

Outlier-carried edge: base return_kurtosis 821 / skew 26; optimized kurtosis 308 / skew 15.2 — headline driven by a few outlier days

Analysis

Tiny sample (20 base / 23 optimized trades over 5+ years) — insufficient for meaningful parameter fitting; optimizer doubled avg_position_pct (9.9%->24%) and max_drawdown (14%->29%) to buy return via the tail

Analysis

Not ready to optimize — two fixable blockers. (1) Trade count too thin: 20 trades gives ~6-7 per walk-forward window and 1-3 per OOS slice, so optimization will fit noise / produce zero-trade OOS windows. Speed up the crossover (fast_ema 20->10, slow_ema 50->30) to raise the population toward ~50-80 trades WITHOUT loosening the 200-day regime filter (keep it — loosening re-creates the naked-cross whipsaw the hypothesis avoids). Optionally allow re-entry in the same direction after an ATR/trend-reversal exit so continuation trends yield multiple trades. (2) Edge is 2022-only: +18.4% of the ~20.3% total return comes from 2022 and one +19.5% day (kurtosis 821); the long side loses 78% (long_win_rate 0.22). Investigate why longs whipsaw (likely buying exhausted up-legs) and confirm the strategy earns across more than one regime before re-submitting. Bar to earn an 'optimize' next round: >=~50 trades spread across multiple years, positive contribution from more than one regime (result must not collapse when the single biggest day/year is removed), and long_win_rate meaningfully above ~0.35. Full detail written to workspace/discussions/fd22ab92-4e05-46fc-98bb-d9ed993567fb/iteration_1_feedback.md.

Outcome Summary

This strategy applied the factory's proven daily dual-EMA trend edge to a single AVAXUSDT perpetual, adding a 200-day regime filter to avoid the chop that had sunk earlier laggard-asset trend attempts. It passed the pre-optimization backtest-review gate (20 clean trades, +20.3% return, 1.94 profit factor) and was sent to optimization. But the 3-phase optimization exposed the weakness: the walk-forward was overfit (IS 1.71 → OOS 0.43, two empty OOS folds), the deflated Sharpe was 0.0001 with the selected Sharpe of 0.533 sitting below the 1.668 best-of-N luck bar, PBO was 0.61, and the information ratio was negative against AVAX buy-hold. On its third iteration the analyst judged these failures structural — a below-luck-bar Sharpe on an outlier-carried ~20-trade sample with no robust region to tune toward — and abandoned it rather than iterate or re-port the same expression onto another major.

Outcome Summary

A validated strategy family does not automatically transfer to a new single asset — a ~20-trade, outlier-carried sample (kurtosis 821, skew 26) cannot support a best-of-225 optimization sweep and yields the single-name daily-trend deflation signature rather than a real edge.

Outcome Summary

The analyst abandoned it at the post-optimization ANALYZING stage: it failed the deflated Sharpe test (DSR 0.0001, optimized Sharpe 0.533 below the 225-trial luck bar of 1.668), was flagged is_overfitted (avg IS 1.71 collapsing to OOS 0.43 with two of three OOS windows producing zero trades), had PBO 0.61 and a negative information ratio (-0.47) versus its own AVAX buy-hold.

Outcome Summary

It ported the factory's one validated edge — daily dual-EMA trend-following on high-beta majors — to a single-instrument AVAXUSDT BINANCE perpetual, long-short with a rising/falling 200-day regime filter and ATR-based stops to stay out of range-bound chop.

Outcome Summary

The base backtest returned +20.3% over ~5.75 years across only 20 trades with a 0.39 Sharpe (CI low -0.77), 1.94 profit factor and 14.3% max drawdown; optimization lifted return to +66.8% and Sharpe to 0.53 (23 trades) but doubled avg position size (9.9%→24%) and max drawdown (14%→29%).
Strategy report

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