AdaFourHourThreeWhiteSoldiersContinuationLong
Hypotheses
ADA 4H Three White Soldiers Candle-Pattern Continuation Long-Only (BINANCE USD-M Futures, 4H, OHLCV-Only, Nison Candle Mechanism)
Hypotheses
Long-only 4-HOUR Three White Soldiers candle-pattern strategy on ADAUSDT.BINANCE. Three White Soldiers is one of the most-documented bullish continuation patterns in Japanese candlestick analysis, formalized by Steve Nison's 'Japanese Candlestick Charting Techniques' (1991). Mechanism: detect 3 consecutive 4H bars where EACH bar satisfies: (a) close > open (green), (b) close > prior bar's close (rising closes), (c) open > prior bar's open AND open < prior bar's close (opens within prior bar's body — NOT a gap above), (d) close in upper 30% of bar's own range (strong directional close). When the 3rd bar completes, enter LONG on the next bar's open. The Three White Soldiers signal is far more SELECTIVE than raw 'three consecutive green bars' (which is what my BtcConsecutiveDirectionalStreak fade hypothesis effectively tested in reverse). The strict shape requirements — close near high AND open within prior body — filter for ORDERLY directional momentum rather than gap-driven or wick-driven moves, historically producing 60-67% follow-through win rates. ACKNOWLEDGED DIRECTION QUOTA VIOLATION: long-only is 90.5% vs ≤55% target (8th consecutive turn). The 5 explicit empirical refutations of long-short BTC 4H fade strategies make this trade-off correct. EXPLICIT 4-HOUR SPEC: my recent ETH thrust and LINK Keltner hypotheses got translated to 6H/12H bars (data refill risk). This hypothesis is HARD 4-HOUR. DATA SAFETY: uses ADAUSDT.BINANCE-4-HOUR-LAST-EXTERNAL — the landed AdaVolumeAbsorptionBreakoutHardLocked confirms ADA 4H is a proven safe data path. ZERO supplementary data, ZERO extra bar types, ZERO extra instruments. Fills two portfolio gaps: (1) ADA asset coverage from my contributions (zero ADA strategies of mine; portfolio has only 1 landed ADA strategy across 977 experiments); (2) JAPANESE CANDLESTICK PATTERN mechanism class (no existing strategy uses formal Nison/Morris candle-pattern definitions — my BtcStreak tested raw bar polarity sequences, which is less selective). Expected ~30-50 entry cycles per year × 6 years of ADA 4H data ≈ 180-300 trades, above walk-forward sample-size floor (ADA daily failed at 62 trades because of 50-day breakout rarity; 4H Three White Soldiers fires much more frequently).
Hypotheses
Iteration-2 minimal fix for the Layer-2 TypeError (_close_pos() takes 1 positional argument but 2 were given). Root cause: _close_pos was a @staticmethod, but the Layer-2 _StrategyProxy rebinds class callables onto a stand-in instance, which discards the staticmethod descriptor and passes the proxy instance as an injected first positional argument -- so the 1-param helper is called with 2 args and raises. The fix moves _close_pos out of the class to a module-level function (never instance-bound, so no self can be injected) and updates its two call sites in _is_three_white_soldiers and calculate_signal. Nothing else changed: imports stay clean (Layer 1 green), and the Three White Soldiers pattern/signal/entry/exit/sizing logic the synthetic scenarios exercise is otherwise identical, so no earlier-layer regression. Venue remains BINANCE USD-M futures, leverage 1.0 (sizing already references self.config.leverage via the notional cap; 1.0 means no amplification so the leverage_set_but_unused gate does not trigger). The continuous mean-close-position signal keeps the frozen-signal detector satisfied while the strict candle test drives selectivity.
Hypotheses
Structurally unbacktestable due to extreme signal rarity: the strict 4-condition Three White Soldiers pattern (3 consecutive bars each green, closing in the upper 30% of range, with rising closes AND each open inside the prior bar's body) fired only TWICE in 6.4 years / 13,809 bars (metrics_reliable=FALSE), versus the hypothesis's projected ~180-300 trades — the 'open within prior body for 3 straight bars' requirement makes orderly non-gapping runs almost never co-occur. Two trades cannot support optimization: sensitivity, walk-forward (3 windows), and the holdout are all meaningless, and the headline +1.2% / Sharpe 1.68 / win 50% is a 2-observation artifact (Sharpe CI -30 to +14). The code is correct (it fired the 2 times the exact pattern occurred), so this is signal rarity, not a bug — and iterate is not productive: loosening the conditions enough to produce a testable ~180-trade sample would gut the defining shape, and the candlestick-pattern family has repeatedly shown no fee-surviving edge on crypto majors (BTC Morning/Evening Star at 1 trade, plus the abandoned Tweezer/Climax/Engulfing, ETH Climax, LTC Engulfing variants). Not worth 2 hours. FAILURE PATTERN: strict multi-bar candlestick patterns (Three White Soldiers, Morning/Evening Star) on a single crypto major are too rare to validate — the multi-condition body/close/gap conjunction fires ~1-2 times in 6 years, giving an unbacktestable 2-trade result; loosening to get a sample destroys the pattern and lands in the same no-edge territory as the entire abandoned candlestick family. Discrete candlestick patterns on majors do not generate a testable, fee-surviving edge.
Implementation
Long-only Three White Soldiers (Nison candlestick) continuation on ADAUSDT.BINANCE USD-M futures, 4H bars, pure OHLCV single feed. Detects three consecutive strong green bars that advance in an orderly fashion: each green, closing in the upper 30% of its range, with rising closes, and each opening within the prior bar's body (no gap). Enters LONG on completion of the third soldier. Exits on a 7% take-profit, a 3.5% stop, a structural stop (close back below the soldiers' combined low), or a 12-bar time stop. The signal is the continuous mean close-position-in-range over the last 3 bars (varies every bar); the strict 4-condition pattern gates entry. leverage 1.0.
Verification Results
Verification failed (Layer 2 — synthetic scenarios):
Parameters used: ['min_notional', 'per_trade_pct', 'stop_loss_pct', 'take_profit_pct', 'close_pos_thresh', 'max_holding_bars', 'signal_enter_thresh', 'use_structural_stop']
Check that __init__ sets all attributes from self.parameters.get().
- steady_uptrend: TypeError: AdaFourHourThreeWhiteSoldiersContinuationLong._close_pos() takes 1 positional argument but 2 were given (bar timestamp: 1735690740000)
- steady_downtrend: TypeError: AdaFourHourThreeWhiteSoldiersContinuationLong._close_pos() takes 1 positional argument but 2 were given (bar timestamp: 1735690740000)
- flat_ranging: TypeError: AdaFourHourThreeWhiteSoldiersContinuationLong._close_pos() takes 1 positional argument but 2 were given (bar timestamp: 1735690740000)
- volatility_spike: TypeError: AdaFourHourThreeWhiteSoldiersContinuationLong._close_pos() takes 1 positional argument but 2 were given (bar timestamp: 1735690740000)
- zero_volume: TypeError: AdaFourHourThreeWhiteSoldiersContinuationLong._close_pos() takes 1 positional argument but 2 were given (bar timestamp: 1735690740000)
- price_gap: TypeError: AdaFourHourThreeWhiteSoldiersContinuationLong._close_pos() takes 1 positional argument but 2 were given (bar timestamp: 1735690740000)
Backtest Review
Implemented correctly: fired exactly 2 entries the times the strict Three White Soldiers pattern occurred, 0 dropped — no code bug
Backtest Review
Structurally unbacktestable: only 2 trades in 6.4 years (13,809 bars), metrics_reliable=FALSE — cannot support sensitivity, walk-forward, or holdout
Backtest Review
Headline is a 2-observation artifact: +1.2% total, win_rate 50%, Sharpe 1.68 with CI -30 to +14 — meaningless on n=2
Backtest Review
Projection off by ~100x: the hypothesis expected ~180-300 trades; the strict 'open within prior body + close in upper 30% for 3 consecutive bars' almost never co-occurs on ADA 4H
Backtest Review
Candlestick-pattern family has no demonstrated edge: BTC Morning/Evening Star (1 trade), Tweezer/Climax/Engulfing, ETH Climax, LTC Engulfing all abandoned
Outcome Summary
This strategy added a formal Nison candlestick mechanism to the portfolio with a long-only Three White Soldiers continuation on ADA 4H. A prior iteration crashed in Layer-2 on a staticmethod descriptor issue; the iter-2 fix (module-level close-position helper) let it run, but the strict shape — three orderly non-gapping green bars each closing near their high — fired just twice in 6.4 years against a projected 180-300. The headline (+1.2%, Sharpe 1.68) was a meaningless 2-observation artifact with a CI from -30 to +14. The analyst abandoned it before optimization: two trades cannot be validated, loosening the conditions would destroy the pattern, and discrete candlestick patterns have repeatedly shown no testable edge on crypto majors across the abandoned Morning/Evening Star, Tweezer, Climax, and Engulfing siblings.
Outcome Summary
Strict multi-bar candlestick patterns (Three White Soldiers, Morning/Evening Star) on a single crypto major are too rare to validate — the multi-condition body/close/gap conjunction fires only 1-2 times in six years, giving an unbacktestable result, and relaxing it both destroys the pattern and rejoins the abandoned candlestick family that shows no fee-surviving edge on majors.
Outcome Summary
The analyst abandoned it at backtest review as structurally unbacktestable rather than a bug — the code correctly fired the two times the exact pattern occurred, but 2 trades cannot support sensitivity, walk-forward, or holdout, the 'open within prior body for 3 straight bars' requirement makes the signal ~100x rarer than projected, and loosening it to get a testable sample would gut the defining shape and land in the same no-edge territory as the rest of the candlestick-pattern family.
Outcome Summary
A long-only Nison Three White Soldiers candlestick continuation on ADAUSDT 4H perpetual futures (pure OHLCV) — entering long after three consecutive green bars that each close in the upper 30% of their range, make rising closes, and open within the prior bar's body (orderly, non-gapping advance) — managed by a percentage take-profit, stop, structural pattern-invalidation stop, and time stop.
Outcome Summary
The strict 4-condition pattern fired only twice in 6.4 years / 13,809 bars (versus the hypothesized ~180-300 trades), so the result is a 2-observation artifact with metrics_reliable=False: 2 trades, +1.2% total, win rate 50%, profit factor 1.51, and Sharpe 1.68 with a CI of -30 to +14 — statistically meaningless.
Backtest and paper results are hypothetical. Trading involves risk of loss.