Skip to content

View original

EthDailyTrendFollowingLongATRTrail

Hypotheses

ETH Daily Trend-Following Long with ATR Trailing Stop

Hypotheses

A long-only single-instrument trend-following strategy on ETHUSDT perpetual futures using daily (1D) bars and ONLY OHLCV data. The hypothesis exploits the well-documented time-series momentum effect (Moskowitz-Ooi-Pedersen 2012) which has shown persistent risk-adjusted returns across asset classes, decades, and regimes. ETH at the daily timeframe exhibits strong trending behavior driven by adoption cycles, narrative-driven inflows, and macro liquidity regimes that play out over weeks-to-months. The strategy enters on a confirmed uptrend (price above a slow trend filter that itself is sloping up) and rides the trend until either the trend filter rolls over or a volatility-scaled trailing stop is hit. Holding period is intentionally weeks-to-months so per-trade returns dwarf the ~0.10% round-trip fee. Long-only on futures (not shorting trends — historically asymmetric in crypto where trends-up persist longer than trends-down). Maximally simple: 3 parameters, no supplementary data, no pairs, no multi-timeframe — designed to NOT get stuck in coding and to NOT overfit during walk-forward validation.

Hypotheses

This is a near-promote that passed every economic gate (Sharpe 5.37 vs the 3.79 luck bar, sharpe_ci_low 2.51, holdout pass ratio 19.3, positive every full year, 12.9% max DD) and failed only the two overfitting statistics: DSR 0.893 < 0.95 and PBO 0.62 > 0.5. The analyst's root-cause diagnosis is that the optimizer over-tuned an aggressive corner (trend_period 27 vs default 50, atr_period 8 vs 14) giving IS Sharpe 8.56 but OOS 0.222 (is_overfitted=true), whereas the sensitivity grid proved the conservative region (trend_period 45-55, atr_trail_mult 2.7-3.3) is equally strong (Sharpe 4.0-4.9) and the default already scored 3.9. The prescribed next pass is to narrow the search to the robust region; the developer's lever for that, per the project's documented hard-clamp technique (AbsoluteMomentumLSBasketDaily), is to clamp the tunables in __init__ so neither the optimizer's IS-maximizing search nor the sensitivity perturbation can resolve to the overfit cliff corner. I therefore tightened exactly the five clamps the analyst specified -- trend_period [40,60], atr_period [12,18], atr_trail_mult [2.7,3.6], entry_atr_dist [0.45,0.6], slope_lookback [9,12] -- and left the flat-sensitivity knobs (risk_pct, max_alloc, slope_min, slope_exit) at their existing wider defaults per the guidance. A slower trend_period floor (>=40 vs the overfit 27) directly targets the single -2.42 OOS window by trading less on in-sample-only noise. No signal, entry, exit, sizing, or venue logic changed -- the spot venue produced the clean passing metrics, so per the never-regress-a-passing-check rule it is left untouched -- so Layers 1-3 and the economic profile are preserved; only the admissible parameter set narrowed, which is the change needed to push DSR >= 0.95 and PBO <= 0.5 toward promotion. Defaults already sit inside the plateau so the starting config is unchanged. Leverage stays 1.0 (spot CASH).

Hypotheses

Failed deflated Sharpe across BOTH attempts: DSR=0.7832 (vs 0.95 bar), is_significant=FALSE, PBO=0.5674 (>0.5), and walk_forward is_overfitted=TRUE (avg IS 7.34 -> avg OOS 0.84, an 8.7x collapse) with OOS windows [-1.43, 0.0, 3.95] — one losing, one zero-trade, only one window carrying the result. This is the closest-to-promotable trend-follower of the session and the gates it PASSES are real: the optimized Sharpe 5.04 is above the expected-max luck bar 3.99 (unlike the abandoned breakout siblings), sharpe_ci_low 2.09 is solidly positive, the holdout passed strongly (3.34, ratio 3.98), sensitivity is clean with 0 cliffs, and tail_ratio 5.23 with positive skew is a healthy trend right-tail rather than a left-tail artifact. But the framework treats DSR/PBO/is_overfitted as hard multiple-testing gates that a single passing holdout and a single-config positive CI do not override — DSR 0.78 leaves ~22% probability the selected Sharpe is best-of-225 noise, PBO 0.57 says overfitting is more likely than not, and the honest forward read (avg OOS 0.84, propped by one window with another negative and another zero-trade) confirms weak generalization. Decisively, the iter-2 robust-region clamp was explicitly designed to lift DSR from iter-1's 0.893 toward 0.95, but it BACKFIRED — DSR FELL to 0.7832 and PBO barely moved (0.62 -> 0.57) — proving no parameter clamp rescues the significance. This is attempt 2 of 2, so iterate is exhausted; revise_hypothesis does not apply because ETH is not a dead target and the time-series-momentum mechanism is already validated on a promoted LINK 1D sibling. FAILURE PATTERN: even a well-constructed, defensively-clamped single-asset daily trend-follower with a passing holdout, positive CI lower bound, 0 sensitivity cliffs, and a Sharpe above the luck bar can still fail the deflated-Sharpe gate (DSR 0.78, PBO 0.57, is_overfitted=TRUE) when its walk-forward OOS is weak and variable (avg 0.84, one negative + one zero-trade window) — the headline Sharpe 5 is a best-of-225 inflation of a genuine but modest ~0.8-Sharpe edge, and a robust-region clamp that LOWERS DSR rather than raising it is conclusive evidence that no further tuning clears the multiple-testing penalty.

Implementation

Long-only daily time-series-momentum trend-following on ETHUSDT.BINANCE_SPOT, OHLCV-only. It enters long when price is more than entry_atr_dist ATRs above a slow SMA trend filter that is itself sloping up, and rides the trend via an ATR chandelier trailing stop (ratchets up only), exiting on the trailing stop, a trend-slope rollover, or a regime break below the SMA. Risk-based sizing capped at deployable cash. Iteration 2 hard-clamps the five non-flat tunables into the analyst-validated robust plateau (trend_period [40,60], atr_period [12,18], atr_trail_mult [2.7,3.6], entry_atr_dist [0.45,0.6], slope_lookback [9,12]) so the walk-forward optimizer cannot re-select the overfit aggressive corner (trend_period 27 / atr_period 8) that caused DSR 0.893 and PBO 0.62, while keeping the flat-sensitivity knobs (risk_pct, max_alloc, slope_min/exit) at their wider defaults.

Backtest Review

Significant base: Sharpe 3.92 with sharpe_ci_low 1.17 (CI well above 0), PF 3.35, max_DD 11.1%, ~6:1 win/loss, positive in 7 of 9 years; deep capacity ($8B), negligible fees

Backtest Review

Documented mechanism (time-series momentum); clean trend-following convexity (skew +4.66), not a degenerate artifact

Backtest Review

Robust-region clamps directly remediate the prior overfit (DSR 0.893 -> target >0.95, PBO 0.62 -> target <0.5) AND bound the trade count so re-optimization can't over-thin to zero

Backtest Review

Sparse: 54 trades over 9 years (~6/yr) with weeks-to-months holds — the fixed 15-day holdout may capture 0-1 trades (structural horizon mismatch that could fail the holdout regardless of edge)

Backtest Review

Outlier/2021 concentration: return_kurtosis 28.2, 2021 +45.9% carries much of the edge (2021-02-25 +37.5% single day) — deflated Sharpe must clear 0.95 (was 0.893)

Backtest Review

Sharpe 3.92 is high (artifact-zone); high annualized_volatility 92.7%

Analysis

Closest-to-promotable trend-follower of the session: optimized Sharpe 5.04 is ABOVE the expected-max luck bar 3.99 (unique vs the breakout family that fell below their bars)

Analysis

sharpe_ci_low 2.0865 solidly positive (CI does not straddle 0); holdout PASSED strongly (holdout_sharpe 3.34, ratio 3.977 — beat the WF-OOS)

Analysis

Sensitivity PASSED with 0 cliffs on a genuinely smooth grid (Sharpe 3.6-4.9 across all variations); tail_ratio 5.23 with positive skew = healthy trend-following right-tail, not a left-tail outlier artifact

Analysis

Annual returns positive 6/9 years with small negatives (2018 -1.1%, 2022 -2.8%, 2026 -2.3%), non-decaying (2023 +10.2%, 2024 +11.4%, 2025 +6.0%); max_DD 14.6%, capacity $5.1B, fee drag 1.9% of gross

Analysis

Failed deflated Sharpe: DSR 0.7832 < 0.95, is_significant=FALSE; PBO 0.5674 > 0.5 (overfitting more likely than not)

Analysis

Walk-forward is_overfitted=TRUE: avg IS 7.34 collapses to avg OOS 0.84 (8.7x degradation), OOS windows [-1.43, 0.0, 3.95] — one losing, one zero-trade, only one carrying the result

Analysis

The iter-2 robust-region clamp BACKFIRED: it was designed to push DSR up from 0.893 but DSR FELL to 0.7832; PBO only moved 0.62 -> 0.57 (still >0.5) — across both attempts the strategy never cleared is_significant

Analysis

Optimized Sharpe partly rests on a few big days (kurtosis 12.7: 2021-02-23 +32.4%, 2020-09-03 +18.4%, 2024-03-16 +13.7%); Sharpe only 1.26x above the luck bar (not 'well above')

Analysis

Strong near-promote that narrowly misses the two hard statistical gates (DSR 0.893 < 0.95, PBO 0.62 > 0.5) while passing everything economic (Sharpe 5.37 exceeds the 3.79 luck bar, sharpe_ci_low 2.51, genuine holdout pass ratio 19.3, clean sensitivity, positive every full year, 12.9% max DD). Root cause: the optimizer over-tuned an aggressive corner (trend_period 27 vs default 50, atr_period 8 vs 14), giving IS Sharpe 8.56 but OOS 0.222 (is_overfitted=true) and PBO 0.62. The sensitivity grid proves the conservative region is equally strong (trend_period 45-55, atr_trail_mult 2.7-3.3 hold Sharpe 4.0-4.9) and the default config already scored 3.9. NEXT PASS: narrow the search to the robust region — trend_period ~40-60, atr_period ~12-18, atr_trail_mult ~2.7-3.6, entry_atr_dist ~0.45-0.6, slope_lookback ~9-12 — to push DSR >= 0.95 and PBO <= 0.5 while preserving the positive holdout and all-years-positive profile. Leave the flat-sensitivity knobs (risk_pct, max_alloc, slope_min/exit) at defaults. Confirm all OOS windows >= 0 after re-tuning (the single -2.42 window is the main residual concern; a slower trend filter should remove the in-sample-only fit). Detailed feedback written to workspace/discussions/e4d19922-e580-44bb-8e8d-456e40ad354e/iteration_1_feedback.md. If the second pass clears DSR >= 0.95 and PBO <= 0.5, this is a promote.

Outcome Summary

EthDailyTrendFollowingLongATRTrail was the closest-to-promotable strategy of the session — a maximally simple daily ETH time-series-momentum trend-follower with an ATR trailing stop, re-run on its second iteration with parameters hard-clamped into a robust plateau specifically to remediate the prior attempt's overfitting (DSR 0.893, PBO 0.62). Its profile was genuinely attractive: a significant base (Sharpe 3.92, CI above zero, profit factor 3.35), an optimized Sharpe of 5.04 that uniquely cleared its luck bar, a strongly passing holdout, a smooth zero-cliff sensitivity grid, and healthy positive-skew trend convexity that was non-decaying across recent years. But it failed the deflated-Sharpe gate again: DSR fell to 0.7832, PBO stayed above 0.5, and the walk-forward was overfit with an 8.7x IS-to-OOS collapse carried by a single window. The analyst abandoned it as the second and final iteration, concluding that the robust-region clamp backfiring (lowering DSR instead of raising it) was proof that no further tuning could clear the multiple-testing penalty on what is a real but modest ~0.8-Sharpe edge, while noting the time-series-momentum mechanism itself remains validated on a promoted LINK daily sibling.

Outcome Summary

Even a well-constructed, defensively-clamped single-asset daily trend-follower with a passing holdout, positive CI lower bound, zero sensitivity cliffs, and a Sharpe above the luck bar can still fail deflated Sharpe when its walk-forward OOS is weak and variable (avg 0.84, propped by one window with another negative and another zero-trade); a headline Sharpe of 5 is best-of-225 inflation of a genuine but modest ~0.8-Sharpe edge, and a robustness clamp that lowers DSR rather than raising it is conclusive evidence that tuning cannot rescue significance.

Outcome Summary

On its second and final iteration the analyst issued an 'abandon' verdict at the post-optimization ANALYZING stage: it failed the deflated-Sharpe multiple-testing gate (DSR 0.7832 < 0.95, is_significant=FALSE) with PBO 0.5674 (>0.5) and overfit walk-forward, and decisively the iter-2 robust-region clamp meant to lift DSR from 0.893 toward 0.95 backfired — DSR FELL to 0.7832 — proving no further tuning could clear the significance penalty.

Outcome Summary

A long-only, single-instrument daily trend-following strategy on ETH (routed to BINANCE_SPOT, OHLCV-only) implementing time-series momentum: enter long when price is meaningfully above a rising slow SMA trend filter (measured in ATR units), then ride the trend for weeks-to-months until an ATR chandelier trailing stop, a rolled-over trend slope, or a close back below the SMA exits — with iter-2 parameter clamps into an analyst-validated robust plateau to fix prior overfitting.

Outcome Summary

The base backtest was strong: Sharpe 3.92 with sharpe_ci_low 1.17 (CI well above zero), profit factor 3.35, ~6:1 win/loss, 11.1% max drawdown, positive in 7 of 9 years, deep capacity, but sparse (54 trades over 9 years, ~6/yr) with 2021/outlier concentration (kurtosis 28.2); optimization passed several gates — optimized Sharpe 5.04 above the expected-max luck bar 3.99, sharpe_ci_low 2.09, holdout PASSED strongly (Sharpe 3.34, ratio 3.98), 0 sensitivity cliffs — but walk-forward was is_overfitted=TRUE (avg IS 7.34 collapsing to avg OOS 0.84, windows [-1.43, 0.0, 3.95]).
Strategy report

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