Strategies
BTC-ETH Daily Relative-Strength Rotation Long-Only with Trend Gate
Outcome: Abandoned
BtcTakerAggressionFlowReversalZScore1H
BTC-ETH Daily Relative-Strength Rotation Long-Only with Trend Gate
Hypothesis
verification_loop: Verification failed (Layer 4 — QA review) [class=hypothesis_mismatch]: - WHOLE-STRATEGY SWAP: the submitted code implements a completely different strategy than the hypothesis, on every dimension. Hypothesis = 'BTC-ETH Daily Relative-Strength Rotation Long-Only with Trend Gate': multi-instrument (BTCUSDT + ETHUSDT), DAILY bars, LONG-ONLY, cross-asset relative-strength rotation (compare 20-day returns, hold the stronger, hysteresis switch) gated by a 50-day SMA, pure OHLCV. Submitted code = class BtcTakerAggressionFlowReversalZScore1H: SINGLE-instrument (BTCUSDT.BINANCE only, no extra_instruments), 1-HOUR bars, LONG-SHORT, a taker_ratio z-score MEAN-REVERSION fade of taker aggression extremes driven by the taker_ratio SUPPLEMENTARY stream. Mismatched on instrument set, timeframe, direction, core edge (the rotation/relative-strength mechanism is entirely absent), and data source. The code/config/name/description are all internally consistent with the taker-flow strategy, so the wrong artifact is linked to this hypothesis.
Implementation
Long-short mean reversion on BTCUSDT.BINANCE USD-M perp 1H bars, driven only by the taker_ratio supplementary stream. Each bar reads the latest taker buy/sell observation at or before the bar timestamp, converts it to a log buy/sell imbalance and z-scores the 4-hour smoothed reading against its trailing ~30-day distribution. A z at or above +entry_z means aggressive buying has exhausted, so the strategy fades it SHORT; a z at or below -entry_z means panic selling has exhausted, so it goes LONG. Exits are reversion of the imbalance back inside +/- exit_z, a 3% stop, a 4% take-profit, or a 24-bar time stop. Sizing is 15% of equity capped by 1.5% equity risk over the stop distance. With no usable taker data the book stays flat -- there is no price-only fallback edge.
Verification Results
Verification failed (Layer 4 — QA review) [class=hypothesis_mismatch]: - WHOLE-STRATEGY SWAP: the submitted code implements a completely different strategy than the hypothesis, on every dimension. Hypothesis = 'BTC-ETH Daily Relative-Strength Rotation Long-Only with Trend Gate': multi-instrument (BTCUSDT + ETHUSDT), DAILY bars, LONG-ONLY, cross-asset relative-strength rotation (compare 20-day returns, hold the stronger, hysteresis switch) gated by a 50-day SMA, pure OHLCV. Submitted code = class BtcTakerAggressionFlowReversalZScore1H: SINGLE-instrument (BTCUSDT.BINANCE only, no extra_instruments), 1-HOUR bars, LONG-SHORT, a taker_ratio z-score MEAN-REVERSION fade of taker aggression extremes driven by the taker_ratio SUPPLEMENTARY stream. Mismatched on instrument set, timeframe, direction, core edge (the rotation/relative-strength mechanism is entirely absent), and data source. The code/config/name/description are all internally consistent with the taker-flow strategy, so the wrong artifact is linked to this hypothesis.
Iteration History
Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['z_min', 'exit_z', 'tp_pct', 'entry_z', 'risk_pct', 'stop_pct', 'smooth_bars', 'window_bars', 'min_notional', 'notional_pct', 'max_hold_bars', 'taker_tolerance_s'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: TypeError: FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735689840000) - steady_downtrend: TypeError: FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735689840000) - flat_ranging: TypeError: FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735689840000) - volatility_spike: TypeError: FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735689840000) - zero_volume: TypeError: FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735689840000) - price_gap: TypeError: FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735689840000)
Verification failed (Layer 1 — static analysis): - Look-ahead: a supplementary observation is selected by ABSOLUTE distance to the bar timestamp, which returns the NEXT observation when it is closer than the previous one. Use self.supp_as_of(key) (latest at or before the bar) or an explicit `ts <= bar.ts_init` filter — never abs(). (line None)
Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: BTCUSDT.BINANCE-1-HOUR-LAST-EXTERNAL, Bars processed: 56856 Diagnostics: should_enter() returned a side 0 times over 56852 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Verification failed (leverage_set_but_unused): config sets leverage=3.0 but the strategy never references leverage in sizing. Size positions on it — notional = equity * fraction * leverage / price (read self.config.leverage) — or set leverage=1.0. As written the leverage is inert and the backtest is identical to 1x.
Abandon Reason
verification_loop: Verification failed (Layer 4 — QA review) [class=hypothesis_mismatch]: - WHOLE-STRATEGY SWAP: the submitted code implements a completely different strategy than the hypothesis, on every dimension. Hypothesis = 'BTC-ETH Daily Relative-Strength Rotation Long-Only with Trend Gate': multi-instrument (BTCUSDT + ETHUSDT), DAILY bars, LONG-ONLY, cross-asset relative-strength rotation (compare 20-day returns, hold the stronger, hysteresis switch) gated by a 50-day SMA, pure OHLCV. Submitted code = class BtcTakerAggressionFlowReversalZScore1H: SINGLE-instrument (BTCUSDT.BINANCE only, no extra_instruments), 1-HOUR bars, LONG-SHORT, a taker_ratio z-score MEAN-REVERSION fade of taker aggression extremes driven by the taker_ratio SUPPLEMENTARY stream. Mismatched on instrument set, timeframe, direction, core edge (the rotation/relative-strength mechanism is entirely absent), and data source. The code/config/name/description are all internally consistent with the taker-flow strategy, so the wrong artifact is linked to this hypothesis.
Backtest and paper results are hypothetical. Trading involves risk of loss.