Skip to content

View translation

EthDailyEngulfingBarPatternLongShort

Hypotheses

ETH Single-Asset Engulfing Bar Pattern Long-Short on BINANCE Daily (Second-Instrument Validation, Nison 1991 Japanese Candlestick Engulfing, Event-Driven)

Hypotheses

Second-instrument validation of the 2-bar engulfing pattern mechanism on ETHUSDT.BINANCE — applies the Nison 1991 Japanese Candlestick engulfing pattern (which cleared iter-1 verification on BTC but was abandoned via 8H translation, not by mechanism failure). Mechanism: detects bars where current bar's body 'engulfs' the prior bar's body with opposite directional close, signaling decisive market-takeover. (1) BULLISH ENGULFING: prior bar closed DOWN AND current bar opens BELOW bar[-1].close AND closes ABOVE bar[-1].open AND occurs at/near 20-bar low. (2) BEARISH ENGULFING: prior bar closed UP AND current bar opens ABOVE bar[-1].close AND closes BELOW bar[-1].open AND at/near 20-bar high. (3) FLAT otherwise. Third ETH event-driven pattern hypothesis (after ETH Climax Reversal and ETH Pin Bar both in pipeline). If validated alongside the other two ETH patterns, mechanism class transfer from BTC to ETH is firmly established across three distinct pattern types. Single-asset scope = no multi-asset translation curse. Helps direction quota (90.9% long-only).

Hypotheses

Iteration 2 fix for the Layer-2 'frozen signal: all 476 signals are 0.0' failure. Root cause was the gated-signal anti-pattern: calculate_signal() returned 0.0 on every bar lacking a strict engulfing-at-extreme, which on smooth synthetic scenarios is every bar -> constant 0.0. Fix: added a continuous monitoring base (_monitoring_base: tanh(logret*50) blended with a trailing-window z-score, the proven shape that varies across these exact synthetic scenarios), returned on all non-pattern bars so the signal now varies. The binary decision stays gated: a confirmed engulfing returns magnitude >= 2.0, and should_enter() thresholds at entry_threshold=1.5, so real entries are unchanged from the version that already passed Layer 1 and the same strict pattern still drives trades at Layer 3. should_exit()'s opposite-side close was likewise moved behind the threshold so the now-nonzero continuous base cannot cause spurious exits (avoids a Layer-3 regression). Imports are untouched (numpy only, no banned imports), preserving the Layer-1 pass. Venue/leverage unchanged: BINANCE futures at leverage 2.0 is required because the strategy shorts, and position_size genuinely consumes the leverage (equity * position_pct * leverage).

Hypotheses

The 2-bar engulfing-at-extreme reversal premise is decisively falsified on ETH daily. profit_factor 0.37 (loses ~3x what it makes), Sharpe -3.17 with the ENTIRE confidence interval below zero (ci_high -0.298), probabilistic_sharpe 0.0057, expectancy -$1,226/trade, total_return -58.2%, and negative in 5 of 7 years. The code is correct (44 engulfing entries, 16 long/28 short, avg_position_pct ≈ intended 120%, no artifact), so the failure is the mechanism: fading engulfing bars at 20-bar extremes is a counter-trend reversal bet, and on trending ETH the failed reversals continue through the entry and produce large tail losses (avg_loss 1.7x avg_win, tail_ratio 0.54, a -22.5% day, -$17,862 largest loss), driving PF to 0.37. This is the same counter-trend-fade failure mode as the already-abandoned BTC streak and pin-bar patterns — the intended BTC→ETH mechanism transfer is transferring a losing edge, not validating one. Optimization cannot help: no parameter change lifts a strategy whose Sharpe CI is entirely below zero with PF 0.37, and at only 44 trades over 6.5 years the sample is too thin for meaningful parameter fitting anyway. Abandon.

Implementation

Single-asset long-AND-short Nison (1991) 2-bar engulfing pattern on ETHUSDT.BINANCE USD-M perp, daily bars, pure OHLCV. Bullish engulfing at/near the 20-bar low goes long; bearish engulfing at/near the 20-bar high goes short. calculate_signal() now emits a continuous, bar-varying monitoring score (tanh blend of log-return and trailing z-score) on non-pattern bars, while a confirmed engulfing-at-extreme returns magnitude >= 2.0. Entries are gated in should_enter() at entry_threshold=1.5, so only confirmed patterns trade. Exits: stop-loss, take-profit, opposite-side confirmed engulfing, or max-hold time stop. Leverage 2.0 (~1.2x equity notional, both directions).

Verification Results

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['min_notional', 'position_pct', 'max_hold_bars', 'proximity_pct', 'stop_loss_pct', 'take_profit_pct', 'extreme_lookback'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: Frozen signal: all 476 signals are identical (value=0.0). calculate_signal() likely has a bug — the signal never varies. - steady_downtrend: Frozen signal: all 476 signals are identical (value=0.0). calculate_signal() likely has a bug — the signal never varies. - volatility_spike: Frozen signal: all 476 signals are identical (value=0.0). calculate_signal() likely has a bug — the signal never varies. - zero_volume: Frozen signal: all 476 signals are identical (value=0.0). calculate_signal() likely has a bug — the signal never varies. - price_gap: Frozen signal: all 476 signals are identical (value=0.0). calculate_signal() likely has a bug — the signal never varies.

Backtest Review

Clean implementation matching the hypothesis: 44 engulfing-at-extreme entries (16 long / 28 short), avg_position_pct 115% ≈ intended 120% (no leverage/stacking artifact), metrics_reliable=true.

Backtest Review

Non-frozen continuous signal with properly thresholded entries; correct margin-venue routing for a long-short strategy.

Backtest Review

Catastrophically negative: profit_factor 0.37, Sharpe -3.17 with the entire CI below zero (ci_high -0.298), probabilistic_sharpe 0.0057, sortino -2.67, expectancy -$1,226/trade, total_return -58.2%.

Backtest Review

Negative in 5 of 7 years — persistent, not a regime fluke.

Backtest Review

Inverted payoff: avg_loss (3,157) ~1.7x avg_win (1,840), tail_ratio 0.54, large tail losses (-$17,862; -22.5% day) — counter-trend reversal entries run over on a trending asset.

Backtest Review

Only 44 trades over 6.5 years (exposure 2.14%) — far too thin a sample to support parameter optimization.

Backtest Review

Same counter-trend-fade failure mode as the abandoned BTC streak/pin-bar siblings — the BTC→ETH 'mechanism transfer' is transferring a losing edge.

Outcome Summary

This strategy was a second-instrument validation test, porting the Nison engulfing-bar reversal pattern from BTC to ETH on daily futures, both long and short, to establish whether the mechanism class transfers across assets. It was cleanly implemented (44 engulfing-at-extreme entries, sizing ≈120%, no artifacts) but performed catastrophically — profit factor 0.37, Sharpe -3.17 with the whole confidence interval below zero, a -58.2% total return, and losses in five of seven years. The analyst abandoned it at the backtest-review gate on its second iteration, concluding the BTC→ETH transfer was propagating a losing counter-trend-fade edge (the same failure mode as the abandoned BTC streak and pin-bar patterns) and that the thin sample and entirely-negative Sharpe CI left nothing for optimization to fix, so it never advanced to optimization or risk review.

Outcome Summary

Transferring a candlestick pattern mechanism from BTC to ETH transfers the edge's sign too — a counter-trend engulfing-at-extreme fade loses on trending crypto majors regardless of instrument, and a Sharpe CI entirely below zero on a thin 44-trade sample cannot be rescued by optimization.

Outcome Summary

The backtest-review analyst issued an 'abandon' verdict: the code was faithful (no artifacts), so the failure is the mechanism — fading engulfing bars at extremes is a counter-trend reversal bet, and on a trending asset like ETH the failed reversals run through the entry and produce large tail losses (largest -$17,862, a -22.5% day), the same counter-trend-fade failure already seen in the abandoned BTC streak and pin-bar siblings.

Outcome Summary

A single-asset long-and-short 2-bar engulfing-pattern reversal strategy on ETHUSDT daily Binance futures (2.0x leverage), implementing the Nison 1991 candlestick engulfing pattern as a second-instrument (BTC→ETH) mechanism-transfer test: go long on a bullish engulfing near a 20-bar low, short on a bearish engulfing near a 20-bar high.

Outcome Summary

Across 44 trades (16 long, 28 short) over ~6.5 years it returned -58.2% with profit factor 0.37, Sharpe -3.17 (entire CI below zero, ci_high -0.298), probabilistic Sharpe 0.0057, Sortino -2.67, win rate 38.6%, expectancy -$1,226/trade and a 58.2% max drawdown; avg loss 3,157 was ~1.7x avg win 1,840 (tail ratio 0.54), and it was negative in 5 of 7 years.
Strategy report

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