Skip to content

View translation

TrendEfficiencyFilteredEqualWeightMajorsBasketLong

Hypotheses

Trend-Efficiency-Filtered Equal-Weight Majors Basket, Long-Only (BINANCE USD-M, 8 Mega-Caps, Hold Every Major in a CLEAN Uptrend by Kaufman Efficiency Ratio > 0.35, Skip Choppy Names, Weekly, BTC-Regime Cash-Out, Novel Signal = Path Efficiency NOT Relative Strength, Pure OHLCV, 3-Parameter)

Hypotheses

A LONG-ONLY, weekly-rebalanced EQUAL-WEIGHT basket over the 8 data-verified mega-cap USD-M majors (BTCUSDT, ETHUSDT, SOLUSDT, BNBUSDT, AVAXUSDT, LINKUSDT, ADAUSDT, XRPUSDT) whose selection signal is the Kaufman EFFICIENCY RATIO (ER) — a signal input NO promoted basket uses, satisfying lesson L24's explicit requirement. The deployed baskets key on relative-strength momentum (return RANK) and negative-funding carry; ER measures the QUALITY of a trend (net displacement ÷ total path length, from 0=pure noise to 1=perfect straight-line trend), which is orthogonal to return magnitude: two names with identical 30-day returns can have very different ER (one a smooth grind, one a violent chop that round-trips). It is used as a FILTER, not a top-K rank — hold EVERY major currently in a clean uptrend (ER above threshold AND positive drift), equal-weight — which structurally distinguishes it from the promoted top-3-by-relative-strength rotation. It is built to clear every documented trap: NOT options (L23), NOT a momentum/funding re-weighting (L24 — ER is a distinct signal), NOT intraday (fee-death), NOT ultra-low-turnover (weekly ER changes → dozens of trades/yr, avoiding the compute_daily_returns engine artifact that killed my spot-200SMA holds), NOT funding/liquidation/OI/HL/CM (dead families), NOT a two-leg perp (risk_reject). ER is a cheap rolling calculation (no full-history rescans → avoids the 300s smoke-test timeout that killed my put-writes). Equal-weight positions (no vol-sizing → avoids the artifact bug). Pure OHLCV, weekly (clean-diagnosable frequency), 3 parameters.

Hypotheses

Iteration 2 fixes only the reported Layer-2 failure: `_quantize_qty` was declared `@staticmethod` with signature `(qty, precision)` but was invoked with the instance bound, raising 'takes 2 positional arguments but 3 were given' across all synthetic scenarios. The minimal, unambiguous fix is to make it a normal instance method `def _quantize_qty(self, qty, precision)` so the call `self._quantize_qty(leg_notional / price, self.QTY_PRECISION.get(symbol, 3))` binds correctly (self + 2 args → self, qty, precision). No other logic, imports, parameters, signal computation, or config were changed — the Efficiency-Ratio filter, equal-weight sizing, BTC regime cash-out, rebalance scheduling, and long-only spot routing that already passed Layer 1 are all preserved intact.

Hypotheses

Overfit — two unwaivable hard-gate failures: walk-forward is_overfitted=TRUE (IS 7.29 / OOS -0.95) and out-of-sample Sharpe -0.954 <= 0, with OOS windows [2.87, -9.81, 4.08] where the middle window is catastrophically negative. deflated_sharpe 0.815 < 0.95 and the 'holdout passed' flag is degenerate (ratio 0 because WF OOS is negative), so it is not a real pass. The in-sample metrics are additionally inflated by the L17 compute_daily_returns annualization artifact (annualized_volatility 223%, single-day returns of +104% and +62%), so the Sharpe (3.08 raw / 5.07 optimized) is neither trustworthy nor generalizing. Stripped of the artifact and 2021 bull-market beta (2021 +622% vs -25.8%/-4.4%/-22.3% in other years, beta 0.23, benchmark_correlation 0.43), the strategy does not beat its own equal-weight-basket benchmark (information_ratio -0.49 raw / -0.61 optimized) and endures 19 consecutive losses. 225 trials found no robust region (OOS average negative), so optimization attempt 2 has nothing to tune toward. Per L10, abandon overfit rather than burning the remaining attempt. META-NOTE FOR RESEARCH LEAD: this is the SECOND long-only weekly equal-weight 8-majors basket with a BTC-regime cash-out to fail overfit in a row (the Low-Volatility Factor Rotation sibling, embedding similarity 0.736, was just abandoned with identical fingerprints — 2021-driven returns, annualization-artifact-inflated Sharpe, OOS collapse). The failure is STRUCTURAL to this template, not to the selection signal: swapping the ranking/filter input (relative-strength -> low-vol -> efficiency-ratio) does not change that a long-only daily-rebalanced majors basket rides 2021 beta and collapses out-of-sample. Stop re-skinning this basket with a new 'novel signal of the week'; if the low-vol/trend-quality anomaly is worth pursuing, express it market-neutrally (long-good / short-bad cross-section) so the result is not just filtered long beta.

Implementation

Long-only, spot, weekly equal-weight basket over 8 mega-cap majors (BTC, ETH, SOL, BNB, AVAX, LINK, ADA, XRP) selected by the Kaufman Efficiency Ratio (net displacement / total path length). It HOLDS every major currently in a clean uptrend (signed ER above threshold = efficient AND positive drift) equal-weight, rather than ranking a fixed top-K, so the selection signal is trend QUALITY (path efficiency) rather than relative-strength magnitude or funding. When BTC closes below its regime SMA the whole basket flattens to cash. Equal-weight sizing with the divisor floored at min_positions keeps a thin qualifying set diversified.

Verification Results

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['er_period', 'er_threshold', 'min_notional', 'min_positions', 'stop_loss_pct', 'gross_exposure', 'rebalance_days', 'btc_regime_period'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: TypeError: TrendEfficiencyFilteredEqualWeightMajorsBasketLong._quantize_qty() takes 2 positional arguments but 3 were given (bar timestamp: 1735690860000) - volatility_spike: TypeError: TrendEfficiencyFilteredEqualWeightMajorsBasketLong._quantize_qty() takes 2 positional arguments but 3 were given (bar timestamp: 1735690860000) - zero_volume: TypeError: TrendEfficiencyFilteredEqualWeightMajorsBasketLong._quantize_qty() takes 2 positional arguments but 3 were given (bar timestamp: 1735691340000) - price_gap: TypeError: TrendEfficiencyFilteredEqualWeightMajorsBasketLong._quantize_qty() takes 2 positional arguments but 3 were given (bar timestamp: 1735690860000)

Verification Results

Optional: reconstruct portfolio value as USDT cash + held-coin mark value (as the sibling strategies do) and re-equalize all target legs each rebalance.

Verification Results

Equal-weight sizing is computed off get_account_equity() (spot CASH = USDT balance only, which shrinks as coins are bought), not reconstructed total book value. Held legs are never re-equalized and new legs are sized off remaining cash, so a leg added later can be smaller than legs entered when the book was mostly cash — 'equal-weight' is approximate. Conservative (undersizes, never over-leverages) and mild in this backtest (avg_position_pct 17.97% ≈ 0.90/5 names), so not a blocker.

Verification Results

No code change needed; keep spot venue.

Verification Results

Hypothesis says 'BINANCE USD-M' but config routes to .BINANCE_SPOT. CORRECT per the factory venue rule (long-only, no leverage, price edge -> spot) and consistent with sibling baskets. Not a fail; spot 0.20% round-trip cleared by 8.85% avg_trade_return_pct.

Verification Results

Analyst should treat annualized Sharpe/vol cautiously and confirm on the full window; lean on annualization-independent metrics (max_drawdown 37.6%, per-trade return, profit_factor).

Verification Results

annualized_volatility 223% on the 102-day window likely carries some annualization inflation from ~10-day holds. Sharpe 3.08 is below the L17 |Sharpe|>5 defect threshold and internally coherent (PSR 0.9993, omega 2.53, tail_ratio 2.47, Sharpe CI [0.50,4.90] all positive) — a metric caveat, not a defect.

Backtest Review

Annualization-independent metrics acceptable: max_drawdown 37.6% (< 50% floor), profit_factor 1.45, avg_trade_return_pct 8.85% (far above spot fee floor)

Backtest Review

Real weekly turnover (281 trades, 10d avg hold) — no low-turnover engine-artifact block

Backtest Review

Genuine out-of-2021 edge: 2023 +42.5%, 2024 +55.6%

Backtest Review

Novel signal (Kaufman Efficiency Ratio / path quality) satisfies L24 — distinct from deployed momentum-rank and funding baskets

Backtest Review

Recent decay red flag: 2022 -25.8%, 2025 -4.4%, 2026 -22.3% (partial) — 3 of last 5 years negative; BTC-20-SMA cash-out does not protect in chop/bear; edge concentrated in trending bull years (largely trend-filtered crypto beta)

Backtest Review

sharpe_ci_low only 0.50 (barely positive) and information_ratio -0.49 — does NOT beat holding the equal-weight basket

Backtest Review

Sharpe 3.08 inflated ~2x by annualization artifact (annualized_volatility 223%, data_days 102) — real ~1.5

Backtest Review

Return heavily concentrated in 2021 (+622%)

Backtest Review

inflated ~2x; real ~1.5

Analysis

Novel, cheaply-computed signal (Kaufman Efficiency Ratio) faithfully implemented; sensitivity phase clean (0 cliffs)

Analysis

Real weekly turnover (281 trades, 10d avg hold) avoids the low-turnover engine artifact; PBO 0.35 is acceptable

Analysis

Walk-forward is_overfitted=TRUE: IS 7.29 vs OOS -0.95, with OOS windows [2.87, -9.81, 4.08] — one window catastrophically negative

Analysis

Out-of-sample Sharpe -0.954 <= 0 — loses risk-adjusted out-of-sample (hard gate)

Analysis

Headline metrics inflated by the L17 annualization artifact (annualized_volatility 223%, +104%/+62% single-day returns)

Analysis

Single-regime 2021 beta: annual_returns 2021 +622% vs 2022 -25.8%, 2025 -4.4%, 2026 -22.3%; information_ratio -0.49/-0.61 — does not beat its own benchmark

Analysis

deflated_sharpe 0.815 < 0.95; max_consecutive_losses 19; holdout 'pass' is degenerate (ratio 0 from negative OOS)

Analysis

Second member of this majors-basket family to fail overfit (Low-Vol Rotation sibling, similarity 0.736, same fingerprints)

Outcome Summary

TrendEfficiencyFilteredEqualWeightMajorsBasketLong satisfied L24's novel-signal requirement with the Kaufman Efficiency Ratio — trend path quality, orthogonal to return magnitude — using it as a clean-uptrend filter rather than a rank, and earned an optimize verdict on solid annualization-independent metrics and real 2023/2024 edge. But optimization exposed the same failure as its siblings: a collapse from IS Sharpe 7.29 to a negative OOS -0.95 with one catastrophic window, a deflated Sharpe below threshold, artifact-inflated headline Sharpes, and a +622% 2021-beta headline that didn't beat its own equal-weight basket while enduring 19 straight losses. The analyst abandoned it on two hard gates and, notably, escalated a structural verdict: this was the second consecutive long-only daily-rebalanced majors basket to die identically, so the Research Lead should stop swapping ranking signals into the same template and instead express trend-quality market-neutrally. The signal was faithfully implemented and cheap, but the basket structure itself rides 2021 beta and collapses out-of-sample.

Outcome Summary

This was the second long-only weekly equal-weight 8-majors basket with a BTC-regime cash-out to fail overfit in a row (after the low-vol-rotation sibling, embedding similarity 0.736, with identical fingerprints), so the failure is structural to the template, not the selection signal — re-skinning the basket with a new 'novel signal of the week' won't help; if a trend-quality or low-vol anomaly is worth pursuing it must be expressed market-neutrally (long-good/short-bad cross-section) so the result isn't just filtered long beta.

Outcome Summary

The analyst returned 'abandon' at the post-optimization ANALYZING stage on two unwaivable hard gates — is_overfitted TRUE and out-of-sample Sharpe -0.954 ≤ 0, with one catastrophically negative OOS window — plus metrics still inflated by the L17 annualization artifact and returns dominated by 2021 beta (+622%) that didn't beat the strategy's own benchmark; with no robust region across 225 trials, there was nothing for a second optimization attempt to tune toward.

Outcome Summary

A long-only, weekly-rebalanced equal-weight basket over 8 mega-cap Binance spot majors that used a novel signal — the Kaufman Efficiency Ratio (trend path quality, net displacement ÷ total path length) — as a filter to hold every major currently in a clean, efficient uptrend (rather than a top-K rank), equal-weight, with a BTC-regime cash-out; pure OHLCV, 3 parameters.

Outcome Summary

The base backtest earned an 'optimize' verdict on acceptable annualization-independent metrics (max drawdown 37.6%, profit factor 1.45, avg_trade_return_pct 8.85%, genuine out-of-2021 edge in 2023 +42.5% and 2024 +55.6%), though the reviewer flagged the Sharpe 3.08 as ~2x annualization-inflated and the information ratio -0.49 (doesn't beat the equal-weight basket). Optimization then failed decisively: is_overfitted TRUE (IS Sharpe 7.29 vs OOS -0.95, with OOS windows [2.87, -9.81, 4.08]), out-of-sample Sharpe ≤ 0, deflated Sharpe 0.815, information ratio -0.61, 19 consecutive losses, and a degenerate holdout 'pass' (ratio 0 from negative OOS).
Strategy report

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