Skip to content

View original

EthDualSmaCrossoverDailyLongShort

Hypotheses

ETH Dual Moving Average Crossover on Daily Bars

Hypotheses

A classic dual moving average crossover strategy on ETHUSDT futures using daily bars. Enters long when the fast SMA crosses above the slow SMA and short on the reverse crossover. This is intentionally the simplest possible trend-following structure — only 2 parameters (fast period, slow period). ETH is chosen to diversify away from the BTC/SOL/BNB/XRP strategies already in the pipeline, and because ETH has strong multi-week trending behavior driven by DeFi cycles, L2 adoption waves, and ETH/BTC rotation flows. Daily timeframe ensures each trade captures substantial moves (5-15%), making fee drag irrelevant. The simplicity is the point — minimal overfitting surface, maximum robustness.

Hypotheses

DIAGNOSIS (iteration 3): I traced the +187.9% single-bar return through the base template. The base template's _process_primary uses a mutually-exclusive `if flat -> enter / else -> exit` branch, so a crossover flip is a two-bar event (exit old side on the flip bar, enter new side on the next flat bar). There is NO same-bar exit+entry, NO position double-count, and NO double-notional compounding accessible from strategy code -- ruling out the analyst's hypotheses (a)/(b)/(c) as strategy-level bugs. A 1x, 0.5-weight position is mathematically bounded at ~15% equity/day given ETH's ~30% max daily move, so 188% cannot be real exposure. The artifact is a REALIZED-PnL ATTRIBUTION issue: the strategy correctly held a multi-week trend short (end_unrealized_pct=129.97), and the entire accumulated unrealized gain is realized -- and attributed to a single bar -- on the exit-flip (2021-06-01), producing return_kurtosis=1704 / skew=38.5. This is inherent to a daily trend follower that rides multi-week moves and is a metrics/engine reporting concern, not a fixable 2-parameter strategy defect. RECOMMENDATION: ABANDON. Per the analyst's pre-authorization, the underlying edge is marginal (Sharpe 0.28, CI [-0.61,+0.62] straddling zero, negative in 4/7 years, 50% max DD); a behavior-preserving resubmission will reproduce the identical attribution artifact and identical marginal edge. I corrected the docstring to remove the prior false claim that the price-sane guard fixes the single-bar spike (the analyst correctly noted it does not); trading logic is unchanged because it is not defective.

Hypotheses

Failed deflated Sharpe: DSR=0.1001 (vs 0.95 bar), with the optimized Sharpe 0.3177 BELOW the 225-trial expected-max luck bar of 0.5775 (is_significant=false, sharpe_ci_low -0.456 straddling 0, PBO 0.6468 >0.5) — after multiple-testing correction the selected config is statistically indistinguishable from (worse than) best-of-N noise; the PSR=0.941/DSR=0.100 split is the diagnostic tell. Two forward gates concur: the HOLDOUT FAILED (ratio 0.616 < 0.70; holdout 0.304 vs WF-OOS 0.493) and the walk-forward is_overfitted=TRUE with a negative OOS window ([-0.644, 0.931, 1.192]). The base edge is outlier-carried, not a real trend edge: return_kurtosis 1885, skew 41.4, a +235.5% single day (2021-06-01), returns concentrated in 2021 (+230% vs negative 2020/2023/2024), tail_ratio 0.27, and 63.8% of the headline is un-exited open MTM. Not iterate (attempt 1 of 2): sensitivity is a flat plateau with 0 cliffs but the ENTIRE surface sits at a uniform ~0.33 Sharpe — everywhere below the luck bar — so there is no robust region to tune toward and optimization already LOWERED Sharpe (0.330 -> 0.318); a second best-of-225 sweep re-selects the same sub-significant, 2021-outlier-fit config. Not revise_hypothesis: 2-parameter daily dual-SMA trend following on ETH is not a proven mechanism stranded on a dead target (ETH is not dead, no promoted dual-SMA sibling exists) — it is the recurring session pattern of single-asset ETH daily trend edges (cf. EthDailyMultiWeekTrendContinuationLong, EthDailyTrendFollowingLongATRTrail) being too modest and too outlier-concentrated to clear best-of-225 deflation. FAILURE PATTERN: a deliberately minimal 2-param daily dual-SMA crossover produces a clean, cliff-free sensitivity grid that measures consistency, not significance — its genuine but tiny ~0.32-Sharpe trend edge, inflated to a +369% headline by a single 2021 outlier day (kurtosis 1885) and open MTM, sits below the 0.58 best-of-225 luck bar (DSR 0.10) with a failed holdout (0.616) and an overfit walk-forward. Simplicity/robustness of the parameter surface does not rescue an edge that is statistically indistinguishable from noise.

Implementation

Classic 2-parameter dual-SMA crossover on ETHUSDT.BINANCE daily bars. Long when fast SMA > slow SMA, short when fast < slow. Single-instrument, single-venue, long-short, OHLCV-only, leverage 1.0.

Backtest Review

Trades match the hypothesis: 46 trades (22 long / 24 short) over 6.3 years, correct frequency for a 20/50 daily crossover; all signals executed (0 dropped).

Backtest Review

Deliberately simple 2-parameter design (fast/slow period) → minimal overfitting surface, cheap and low-risk optimization.

Backtest Review

Genuine trend-follower return profile: profit_factor 1.62, big wins in trend years (2021, 2025, 2026), small losses in chop — not a broken or degenerate signal.

Backtest Review

The +235% single-day figure is a realized-PnL attribution artifact (accumulated trend gain booked to exit bar), correctly identified by the developer — not a data glitch or fabricated edge.

Backtest Review

Weak base Sharpe 0.33 with sharpe_ci_low -0.48 straddling 0 — not yet distinguishable from no-skill.

Backtest Review

Edge is regime-concentrated: 4 of 7 years negative (2020, 2022, 2023 -22.9%, 2024); return leans on 2021/2025 trend years.

Backtest Review

Thin sample for optimization: 46 trades across 3 walk-forward windows is ~15 trades/window — risks fitting to noise.

Backtest Review

63.8% of the headline total_return is un-exited open MTM (end_unrealized_pct), and 50.1% max drawdown; heavy fat tails (skew 41, kurtosis 1884).

Backtest Review

modest; CI straddles 0 — will be the binding constraint at deflation

Backtest Review

high but typical for an unhedged daily trend follower

Backtest Review

adequate-but-thin for a 3-window walk-forward

Analysis

Clean sensitivity surface with 0 cliffs — the 2-parameter design is genuinely low-overfit-surface as hypothesized

Analysis

Low fee drag (commission 0.88% of gross), confirming daily-timeframe trades are large enough that costs are not the problem

Analysis

Non-overfit in the narrow IS/OOS-ratio sense is not achieved, but the mechanism is simple and transparent

Analysis

Failed deflated Sharpe: DSR=0.1001 (<0.95), optimized Sharpe 0.3177 BELOW the 225-trial expected-max luck bar of 0.5775 — selected config indistinguishable from (worse than) best-of-N noise

Analysis

is_significant=false, sharpe_ci_low=-0.456 (CI straddles 0), PBO=0.6468 (>0.5)

Analysis

Holdout FAILED: ratio 0.616 < 0.70 (holdout 0.304 vs WF-OOS 0.493)

Analysis

Walk-forward is_overfitted=TRUE; OOS windows [-0.644, 0.931, 1.192] include a negative window

Analysis

Outlier-carried edge: return_kurtosis 1885, skew 41.4, a physically-implausible +235.5% single-day return (2021-06-01), returns concentrated in 2021 (+230%) against negative 2020/2023/2024

Analysis

tail_ratio 0.27 (fat left tail); end_unrealized_pct 63.8% — headline is largely un-exited open MTM, not realized edge

Analysis

Raw Sharpe ~0.32 is far below any promotion threshold; optimization LOWERED it (0.330 -> 0.318)

Analysis

BLOCKER: the +187.9% single-day return on 2021-06-01 is physically impossible (ETH's max daily move is ~30%; a 0.5-weight 1x position cannot return 188% in a day) and is the SAME artifact your docstring claims to have fixed ('the +182% single-day artifact'). return_kurtosis=1704 and return_skew=38.5 confirm the entire backtest distribution is dominated by this one bar, and it carries the whole 2021 +167.9%. Your price-sane guard does NOT fix it: the guard only zeroes sizing when the close is far from the slow SMA, but this is not a glitched-price problem — it is a crossover-FLIP accounting/exposure problem. On the flip bar your strategy exits the old side AND enters the new side; trace whether (a) the position is being double-counted, (b) PnL is being booked on both the closing and opening leg of the same bar, or (c) equity is compounding the full notional twice on the flip. Add an assertion/log that flags any single-bar portfolio return > 40% and reproduce on 2021-06-01 specifically. SEPARATELY: report metrics on a REALIZED basis — end_unrealized_pct=129.97 means ~130 points of your +369% headline is an open un-exited position, not a realized result. IMPORTANT EXPECTATION: even with the artifact inflating it, this strategy is marginal — Sharpe 0.28, CI from -0.61 to +0.62 (straddles 0), negative in 4 of 7 years, max DD 50%. After you fix the artifact and re-run, if Sharpe is still <0.5 / the CI still straddles 0 / it's still negative in a majority of years, this 2-param dual-SMA whipsaws too much on ETH daily to be worth optimizing and should be abandoned rather than resubmitted.

Outcome Summary

The strategy set out to capture ETH's multi-week trends with the simplest possible structure — a 2-parameter daily dual-SMA crossover — on the thesis that minimal parameters mean minimal overfitting. Its base backtest looked headline-strong (+369% return) but rested on a weak 0.33 Sharpe whose confidence interval straddled zero, and the analyst cleared it to optimize mainly to cheaply test that thin edge. Optimization confirmed the fear: the sensitivity grid was a flat ~0.33 plateau sitting entirely below the best-of-225 luck bar, the deflated Sharpe collapsed to 0.10, the holdout failed, and the walk-forward was overfit with a negative OOS window — revealing the return was outlier-carried by a single +235% day in 2021 rather than a durable trend edge. After 3 iterations it was abandoned, a recurring pattern for modest single-asset ETH daily trend edges that are too small and too outlier-concentrated to clear multiple-testing correction.

Outcome Summary

A clean, cliff-free sensitivity surface only proves parameter consistency, not statistical significance — a genuine but tiny ~0.32-Sharpe edge inflated by a single 2021 outlier day (kurtosis 1885) and open MTM cannot survive multiple-testing deflation.

Outcome Summary

The analyst abandoned it at the post-optimization ANALYZING stage: the deflated Sharpe of 0.10 sat far below the 0.95 bar and the optimized Sharpe of 0.318 was below the 225-trial expected-max luck bar of 0.5775, while the holdout failed and the walk-forward was flagged overfitted with a negative OOS window — the config was statistically indistinguishable from best-of-N noise.

Outcome Summary

A deliberately minimal 2-parameter dual-SMA crossover on ETHUSDT daily futures bars, going long when the fast SMA is above the slow SMA and short when below, betting that ETH's multi-week trends would make a simple, low-overfitting trend follower robust.

Outcome Summary

The base backtest over ~6.3 years (2019-2026) produced a +369.3% total return with a Sharpe of only 0.33 (CI low -0.48), 46 trades (22 long / 24 short), 54.3% win rate, 1.62 profit factor, and a 50.1% max drawdown. After 3-phase optimization the selected config's Sharpe actually fell to 0.318 with a deflated Sharpe of 0.10, PBO 0.65, and a failed holdout (ratio 0.616 vs 0.70 required).
Strategy report

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