Skip to content

View translation

SmoothMomentumInformationDiscretenessRotationEightMajorPerpsLong

Hypotheses

Information-Discreteness (Smooth-Momentum) Cross-Sectional Rotation, Long-Only Perps (8 Liquid BINANCE USD-M Majors — Among Names in Their Own Uptrend, Hold the Top-3 by TREND SMOOTHNESS (Fraction of Up-Days, Not Raw Return Magnitude); Favor Persistent, Non-Outlier-Driven Advances That Generalize Out-of-Sample; Weekly Rebalance, Equal-Weight, 3-Parameter)

Hypotheses

A LONG-ONLY, MULTI-INSTRUMENT cross-sectional rotation on 8 liquid BINANCE USD-M major perps (BTCUSDT, ETHUSDT, SOLUSDT, BNBUSDT, XRPUSDT, ADAUSDT, AVAXUSDT, LINKUSDT — all SAME venue). It sits in the ONE construction with demonstrated robust survival in this factory — long-only cross-sectional momentum rotation on majors perps (the deployed Sharpe-2.6 strategy) — but replaces the ranking signal with a genuinely novel, documented one that directly attacks that family's recurring death cause. The recurring reject reason across the log is OUTLIER-CONCENTRATED returns ('the entire record is a handful of outlier days'): raw-return momentum tends to select names whose advance was driven by a few jump days, and those jumpy trends mean-revert and fail to generalize out-of-sample (overfit / holdout failure). The academic 'information discreteness' / frog-in-the-pan effect (Da, Gurun & Warachka 2014) shows that momentum delivered SMOOTHLY (many small up-days, continuous information) continues far more reliably than momentum delivered in JUMPS — because gradual information is underreacted to, while jumpy moves are already fully priced. So this strategy ranks names not by how MUCH they rose but by how SMOOTHLY/consistently they rose: among names in their own uptrend, hold the top-3 by the fraction of up-days over the lookback. This favors persistent, participation-broad trends over outlier-driven spikes — precisely the robustness property that outlier-concentrated strategies lack. It is DISTINCT from the deployed champion and my pending raw-relative-strength variant: the selection SIGNAL is trend smoothness (a path/consistency statistic), not return magnitude — a materially different, documented mechanism, not a re-parameterization. Multi-instrument makes it measurable (weekly rotation across 8 names → hundreds of trades, clearing the ~100-trade floor that killed my single-instrument ideas); perps keep the fee at 0.10% (not the spot 0.20% that killed the spot rotation); long-only matches the proven form; equal-weight avoids the risk-parity weighting that died. Explicitly guarded against the L36 compounding artifact: no leverage stacking, exposure normalized to equity, each holding capped at 33% of equity. Pure OHLCV. 3 parameters. Instruments: ["BTCUSDT.BINANCE","ETHUSDT.BINANCE","SOLUSDT.BINANCE","BNBUSDT.BINANCE","XRPUSDT.BINANCE","ADAUSDT.BINANCE","AVAXUSDT.BINANCE","LINKUSDT.BINANCE"]. venue_type: futures. data_requirements: ["ohlcv"].

Hypotheses

Iteration 2 makes two changes and touches nothing the QA verified as clean. (1) ALIGNMENT BARRIER RESTORED — the leading shared-shell defect, now fixed. The `on_bar` override is gone. The base template's `on_bar`/`_maybe_process_primary` routes bars and defers primary processing until every same-timeframe extra leg has a bar at the primary timestamp, so the id_score ranking, the eligibility gate and the entry sizing all read contemporaneous closes for all 8 names instead of BTC-at-T vs peers-at-T-1. The rotation is driven from `calculate_signal`, which the base calls exactly at that aligned point, and closes are now keyed by `ts_event` (with `ts_init` fallback) to match the key the barrier itself compares. This also restores the base's `_in_warmup` and staleness guards that the wholesale override had bypassed. Note on the `_submit_entry_instrument(iid, BUY, qty, bar)` concern: the base ignores the `bar` argument entirely for pricing — it submits a market order and the engine fills at that instrument's own market — so passing the primary's bar was never a mis-referenced fill, only a cosmetic argument; with the barrier in place the timestamps now agree anyway. (2) THE SHARED DRIVER IS THE SHARED RISK GATE, NOT ONLY THE SHELL. The QA's strongest evidence is that two different ranking signals produced near-identical ~-47% blow-ups. That is right, but the two strategies shared more than the execution shell: both gated eligibility on `trailing_total_return > 0` and then held for a full rebalance period with no downside exit. That gate is near-vacuous through a top — a 60-day total return stays positive for weeks after price has rolled over — so in both strategies every entry in the 2025-26 sandbox was a name that was already declining, and neither had any way out before the next grid point. Identical gate + identical no-stop hold = identical outcome, regardless of which name the ranking picked. The fix adds the missing downtrend test: close above its own trailing 60-day mean, which turns negative early in a rollover. It is applied both as an eligibility leg and as a per-bar exit on holdings, so a position can no longer ride a -13.5% move to the next weekly rebalance. It reuses `lookback_days`, so the 3-parameter surface (lookback_days, top_k, rebalance_days) is unchanged — no new tunable was introduced, and the exit is exit-only so it cannot reduce the trade count or regress the Layer-3 'must produce >=1 trade' check that already passed. Untouched and still as verified: the id_score = (up-down)/n smoothness statistic and its flat-day handling, tie-breaking by trailing return, calendar-anchored weekly period from the bar timestamp, per-instrument timestamp-keyed close dicts with trimming, guarded divisions, equal-weight capital-relative sizing via `get_account_equity()` capped at 33%/leg and 90% gross, leverage 1.0 never referenced in sizing, the perps-over-spot venue justification, and the same clean import set (no banned imports added). The signal remains continuous every bar (primary id_score minus peer-mean id_score).

Hypotheses

L45/L36/L19 cross-sectional majors-momentum basket — not worth 2 hours of optimization. It carries every abandon signature at once: max_drawdown 67.4% (CI to 85%), above the 50% hard-abandon line (L19), with 2022 -67% and china-ban -53%; the L36 compounding/leverage-artifact signature (avg_trade_return_pct 10.3% — many multiples of a major's move — plus exposure_pct 160%/avg_position 55% exceeding the stated 90% gross, return_kurtosis 229, skew 9.5); and despite the anti-outlier 'information-discreteness' premise the record is entirely outlier/bull-beta driven — 2021 +451% carries the whole 907% return via single days (+112%, +52%), and the headline is mostly open-position unrealized (end_unrealized_pct 376). It is not statistically significant (Sharpe 0.666, bootstrap CI [-0.075, 1.30] straddling zero) and adds NO risk-adjusted value over its own benchmark (information_ratio -0.24 vs the equal-weight basket, beta 0.42) — it is long-crypto beta, not a smoothness edge. This is the L45 cross-sectional momentum majors family (0/84 survivors); optimization would curve-fit the smoothness sort to the 2021 bull regime. Failure pattern: no_edge/risk_reject/overfit cross-sectional majors momentum, beta-carried, >50% DD + compounding artifact, negative IR vs benchmark (L45/L36/L19).

Implementation

Long-only cross-sectional rotation over 8 liquid BINANCE USD-M major perps (BTC, ETH, SOL, BNB, XRP, ADA, AVAX, LINK) on daily bars, pure OHLCV, ranked by TREND SMOOTHNESS rather than return magnitude. Every 7 calendar days each name is scored by information discreteness, id_score = (#up_days - #down_days) / #days over the trailing 60 daily returns, and the top 3 ELIGIBLE names are held equal-weight long (ties broken by trailing total return). Eligibility is a two-leg absolute-momentum gate: the name's own 60-day total return must be positive AND its close must be above its own trailing 60-day mean; names failing either sit out and the slot goes to cash. Each leg is min(33%, 90%/3) = 30% of current equity notional at leverage 1.0, so gross exposure is ~90% long and never exceeds equity. Exits are (a) rotation-driven on the weekly grid when a holding leaves the eligible top-3, and (b) a downtrend-break exit evaluated every aligned bar when a holding's close falls below its own 60-day mean.

Verification Results

CLEAN RESTART 2026-09-04 — this run's verdict history and learning records were removed and it was restarted from verification. Its previous abandonment came from the pipeline, not from the market: the Layer-2 harness mis-bound @staticmethod helpers (fixed), QA issued terminal performance verdicts on an unoptimized smoke test (removed — QA now judges correctness only), and sandbox timeouts came from backtest-slot starvation (fixed). The hypothesis and the strategy code are unchanged. Verify the code on its merits; performance is decided later by the full backtest and the optimizer.

Backtest Review

Sits in a family with a deployed survivor (long-only cross-sectional majors momentum); adequate trade count (202); genuinely differentiated smoothness ranking

Backtest Review

Clean multi-leg alignment and calendar-anchored rebalance; pure OHLCV, no data walls

Backtest Review

max_drawdown 67.4% (CI to 85%) — above the 50% hard-abandon line (L19); 2022 annual -67%, china-ban window -53%, yen-carry -17%

Backtest Review

L36 compounding/leverage-artifact signature: avg_trade_return_pct 10.3% (many multiples of a major's move), exposure_pct 160% and avg_position_pct 55% exceeding the stated 90% gross, return_kurtosis 229, skew 9.5

Backtest Review

Despite the anti-outlier premise, the record IS outlier-driven: 2021 +451% carries everything (single days 2021-10-18 +112%, 2021-05-19 +52%), and headline is mostly unrealized (end_unrealized_pct 376)

Backtest Review

Not significant and no alpha over its own benchmark: Sharpe 0.666 with CI [-0.075, 1.30] straddling zero, information_ratio -0.24 vs the equal-weight basket

Backtest Review

L45 cross-sectional momentum majors-basket family (0/84 survivors), carried by bull-year crypto beta (beta 0.42, benchmark_correlation 0.54)

Iteration History

Verification failed (Layer 4 — QA review): - L17 DEFECT SIGNATURE + CROSS-STRATEGY EVIDENCE OF A SHARED-SHELL BUG. The sandbox is near-catastrophic: win_rate 0.143 (2/14), profit_factor 0.044, avg_trade -13.5%, Sharpe -1.85, -47.2%. This is the SECOND strategy on this IDENTICAL rotation shell to blow up ~-47% with a near-zero win rate in the 2025-26 sandbox — the 10-major raw-relative-strength sibling produced -46.5%, 0/14, PF 0.0. The two use fundamentally DIFFERENT ranking signals (raw 60-day return vs up-day-fraction smoothness) yet give near-identical outcomes, which means the ranking is NOT the driver and the shared execution shell is the prime suspect. I verified ranking polarity is correct (sorts by id_score descending, buys top-3, positive-momentum gate) and sizing is unamplified (30%/leg, no leverage; -13.5%/trade are real moves), so the catastrophe isn't ranking or sizing polarity — it points at the shell. - OVERRIDDEN on_bar BYPASSES THE BASE TEMPLATE'S CROSS-LEG ALIGNMENT BARRIER — leading candidate for the shared-shell defect. The base on_bar gates primary processing through _maybe_process_primary until every same-timeframe leg has a bar at the current timestamp, so ranking/trading use contemporaneous closes. This shell replaces on_bar wholesale and fires the weekly rebalance the instant the BTC bar arrives, so the other 7 names can still hold the prior day's close at ranking/entry, and entries are submitted via _submit_entry_instrument(iid, BUY, qty, bar) passing the PRIMARY's bar. For a cross-sectional book, ranking/filling on stale or mis-referenced bars is a systematic defect and a plausible mechanism for the identical blow-ups across both shell variants. - Static divisions guarded (past, _NS_PER_DAY, price). Other aspects verified clean and faithful: id_score=(up-down)/n computed correctly, absolute-momentum uptrend gate correct, ties broken by trailing return, calendar-anchored rebalance from ts_init (avoids L26 counter trap), capital-relative equal-weight sizing via get_account_equity() capped 33%/leg 90% gross, leverage 1.0 unamplified, perps venue correctly justified vs the spot sibling's fee_edge. The smooth-momentum ranking is a legitimately novel, documented mechanism. The block is the near-zero-win-rate shared-shell suspicion, not the signal or general code quality.
Strategy report

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