Skip to content

View translation

MidCapPerpBasketTsMomChandelierLS

Hypotheses

Mid-Cap Binance USD-M Perp BASKET Time-Series Momentum, Long-Short, Daily Bars — ONE Shared Parameter Set Across 8 Never-Traded Alt Perps (breadth instead of single-name best-of-N; sign of the 56-day return, inverse-vol sizing, ATR-chandelier stop, 3-parameter)

Hypotheses

A LONG-SHORT, MULTI-INSTRUMENT, daily-bar time-series-momentum (TSMOM) BASKET on eight Binance USD-M perpetuals this factory has never traded: RUNE, NEAR, FIL, AAVE, AVAX, GALA, DYDX, INJ (all verified present in the catalog as *.BINANCE-1-DAY-LAST-EXTERNAL with 4-6 years of history). It keeps the ONE mechanism that has survived here (directional daily momentum, long-short, Binance USD-M, ATR-trailing exit) and changes the thing that keeps killing this factory: SINGLE-NAME SELECTION. The 393 'overfit' deaths read near-verbatim — DSR 0.0, PBO > 0.5, 3-9 trade holdouts, 'best-of-N artifact' — which is a sample-size/selection disease, not a mechanism disease. Every leg runs the IDENTICAL rule with IDENTICAL parameter values, so one (lookback, stop, risk) triple must work simultaneously on eight independent series; trades multiply ~8x (~320 closed trades, ~60-70 in holdout). Not a ranking, pairing, dollar-neutral or hedged construction (L95/L96) — each leg is traded outright and directionally.

Hypotheses

Implements the hypothesis exactly: ONE shared 3-parameter set (mom_lookback=56, atr_mult=4.0, gross_exposure=1.0) applied simultaneously to eight never-traded mid-cap USD-M perps, so the edge must survive on eight independent series rather than being selected on one -- which is the selection/sample-size disease behind this factory's overfit deaths. Breadth also multiplies the trade count ~8x (targeting the hypothesis's 250+ closed trades and a populated holdout). Signal is the sign of the 56-day return per leg (calculate_signal returns the continuous cross-sectional MEAN of those returns, which varies every bar); sizing is inverse-vol risk-parity; exit is the ATR chandelier trail plus a momentum-sign flip. All eight legs are managed through one identical code path inside calculate_signal (the single-instrument should_enter/should_exit/position_size hooks cannot express an 8-leg book and are inert), with leg bars read from the base template's own synchronised buffers so every leg's metrics are computed from contemporaneous bars (the base's cross-leg alignment barrier defers the bar group until all eight same-timeframe legs have delivered the same timestamp). Futures venue is required because the strategy goes short; leverage stays at 1.0 and gross is hard-capped at 100% of equity (with a 30% per-leg weight cap), so the basket cannot compound into a leveraged blow-up. No parameter is silently clamped to a narrower range than the optimizer would search, so no _param_bounds declaration is needed.

Hypotheses

premise_falsified on an adequate sample. The hypothesis's central claim is that one shared (lookback, stop, risk) triple works simultaneously on eight independent mid-cap alt perps, so breadth replaces single-name selection. The 605-trade, 1485-day backtest measures that claim directly and it does not hold: per-leg realized PnL splits 5 winners / 3 losers with INJ +40.9k against DYDX -39.2k and AAVE -18.6k, and removing the single newest leg (INJ) turns the whole book's realized PnL from +32.3k to -8.7k. The aggregate is therefore one-leg dependent — the same concentration the breadth construction was designed to eliminate. On the full book the edge is not distinguishable from zero on its own sample (Sharpe 0.356 with bootstrap CI -0.42 to +1.16, PSR 0.76, profit factor 1.0597 with modeled impact already 12% of gross), and what edge exists is confined to the stressed vol tercile (+125.3%) while calm (-7.7%) and normal (-28.6%) lose money, i.e. it is net-directional alt crisis-trend beta rather than a cross-sectionally shared TSMOM premium. Risk is 63.9% max drawdown with 746 days underwater and 27 consecutive losses at gross 1.0x; reducing gross scales return and drawdown together and leaves Sharpe unchanged, so there is no sizing-side iteration path, and the developer can only change parameters — it cannot make four dead legs share an edge. This is a measurement on the sample in hand, not a prediction of how deflation would go.

Implementation

Long-short daily time-series-momentum BASKET on eight mid-cap Binance USD-M perpetuals (RUNE, NEAR, FIL, AAVE, AVAX, GALA, DYDX, INJ), every leg running the IDENTICAL rule with the IDENTICAL parameter values. Each leg is held LONG when its own 56-day return is positive and SHORT when it is negative -- traded outright, no ranking, pairing or hedging, so the book is net-directional. Legs are sized inverse-volatility (weight proportional to 1/stdev of daily returns, capped at 30% of gross and renormalised) so the basket's gross notional is always ~100% of equity at leverage 1.0. A position is closed when its ATR(20) chandelier trailing stop (extreme since entry -/+ 4 x ATR) is breached on a daily close, or when the leg's momentum sign flips. After a chandelier stop-out, re-entry in the same direction is blocked until the momentum sign flips or 10 calendar days have passed (anchored on the exit bar's timestamp). Pure OHLCV, no supplementary data.

Verification Results

Drop INJ (common start moves to 2021-09) or pin the backtest/optimization start to 2022-08-18 so all three WF windows contain live trading. Do not remove the alignment barrier.

Verification Results

INJUSDT 1-DAY data starts 2022-08-18 while RUNE (primary) starts 2020-09-05. The base template's cross-leg alignment barrier defers the primary bar until every same-timeframe extra leg has a bar at that timestamp, so NO bar is evaluated before INJ's first bar. Sandbox confirms exactly: data_days 2196, effective_daily_obs 1484 (712 dead days). Not a look-ahead or wrong-trade bug, but full-window Sharpe/CAGR/DD are diluted by a third of the span being flat, and walk-forward window 1 over full history will contain zero/near-zero trades — distorting the IS/OOS verdict this hypothesis exists to improve.

Verification Results

Cap iteratively (renormalise, re-cap, redistribute excess, repeat) or assert max(weights) <= max_leg_weight after normalisation.

Verification Results

max_leg_weight is not actually enforced: weights are capped (line 149) then renormalised by the capped sum (line 153), so a capped leg ends up ABOVE the cap (e.g. raw {0.55,0.15,0.10,0.20} with cap 0.30 → capped leg ends at 0.40). Rarely binds with 8 inverse-vol legs, but the stated 30% concentration guard does not hold in the tail case it exists for.

Verification Results

Declare `_param_bounds` covering only mom_lookback / atr_mult / gross_exposure; fix the rest.

Verification Results

The hypothesis's anti-overfit premise is a 3-parameter set, but the config exposes EIGHT numeric parameters with no `_param_bounds`. The optimizer derives its search space from numeric keys in `parameters`, so all eight get searched over 75 trials × 3 windows — a materially larger best-of-N surface than pre-registered, re-opening the DSR/PBO inflation channel this hypothesis was written to close.

Verification Results

Guard _close_leg and the _extreme/_blocked mutations with an `_in_warmup` early return.

Verification Results

Live/paper-only: _close_leg → _submit_exit_position → close_position is not gated by `_in_warmup` (unlike _submit_entry_instrument), while calculate_signal IS invoked on warmup-replay bars. A paper node replaying history with carried positions could emit a real close order during warmup. Backtest unaffected (closes fill in-event).

Verification Results

Sandbox (unoptimized, single draw) is weak and regime-concentrated: Sharpe 0.354, PF 1.096, win rate 35.4%, max drawdown 63.9% with a 746-day underwater stretch and 27 consecutive losses. Calm -7.6% (Sharpe 0.14) and normal -28.7% (Sharpe -0.06) vs stressed +125.2% (Sharpe 1.36) — essentially all P&L comes from the high-vol tercile, and the book is net-directional by construction, so much of the return may be levered alt beta / crisis-trend rather than a robust TSMOM premium. Also rate_shock_2022 -18.7%, svb_march_2023 -15.0%. Not a fee problem (avg_trade_return_pct 1.55% vs a 0.15% floor; 605 trades; impact 7.9% of gross, capacity $16.2M) — the question is whether the Sharpe survives deflation given the ~64% drawdown and single-regime concentration.

Backtest Review

The methodological idea is right: ONE shared parameter triple across 8 legs, no ranking/pairing, is the correct fix for the best-of-N selection disease, and it delivered the promised sample (605 closed trades, 1485 effective daily observations, ~16d average hold).

Backtest Review

Not a fee problem: avg_trade_return_pct 1.55% is ~10x the 0.15% BINANCE USD-M floor, commissions are only 1.71% of gross, modeled impact 12% with $6.9M capacity.

Backtest Review

Trades match the stated mechanism: 300 long / 305 short, outright directional per leg, inverse-vol sizing (avg_position_pct 14.2% across 8 legs ~ gross 1.0x), ATR-chandelier exits.

Backtest Review

The breadth premise is falsified on its own evidence, not predicted: the eight legs do NOT share an edge. Per-leg realized PnL is INJ +40.9k, GALA +27.1k, RUNE +23.7k, AVAX +2.8k, NEAR +0.9k vs FIL -5.3k, AAVE -18.6k, DYDX -39.2k. Total realized is +32.3k, but excluding the single newest leg (INJ, listed 2022-08) it is -8.7k. The aggregate is a near-cancellation carried by one series, which is exactly the single-name dependence the hypothesis set out to remove.

Backtest Review

The measured edge on this adequate sample is not distinguishable from zero: Sharpe 0.356 with bootstrap CI [-0.42, +1.16] (straddles 0) and probabilistic_sharpe 0.76. Profit factor 1.0597 means gross wins exceed gross losses by ~6% — impact alone is already 12% of gross.

Backtest Review

Regime attribution shows this is levered alt crisis-trend beta, not a TSMOM premium: calm -7.7% (Sharpe 0.14), normal -28.6% (Sharpe -0.06), stressed +125.3% (Sharpe 1.36). The book is net-directional by construction, so essentially all P&L comes from one vol tercile. QA's edge concern is borne out by the per-leg decomposition, not merely restated.

Backtest Review

Risk is far outside any deployable envelope and is not a sizing bug: max drawdown 63.9% at gross 1.0x, 746 days underwater, 27 consecutive losses, calendar years 2022 -31.2% and 2025 -30.8%. Cutting gross scales return and drawdown together and leaves Sharpe 0.36 unchanged, so there is no size-side fix.

Backtest Review

39% of the headline (+52.8% total return, end_unrealized_pct 20.6) is open-position mark-to-market at the last bar, so even the thin realized track record overstates what was actually banked.

Backtest Review

CI straddles zero; PSR 0.76

Backtest Review

profitable only in stressed tercile

Backtest Review

5 of 8; result flips negative ex-INJ

Outcome Summary

MidCapPerpBasketTsMomChandelierLS-49e3d379d9

Outcome Summary

MidCapPerpBasketTsMomChandelierLS attacked the factory's recurring best-of-N overfitting problem by running one identical momentum rule across eight never-traded mid-cap alt perps, and it did deliver the promised sample: 605 trades over six years with per-trade returns ten times the fee floor. But the aggregate Sharpe of 0.356 had a confidence interval straddling zero, profit factor was 1.06 against impact costs of 12% of gross, and drawdown reached 63.9% with 746 days underwater. Decomposition showed the book was carried by a single leg — dropping INJ turned realized PnL negative — and all the profit sat in the stressed volatility tercile, making it net-directional alt crisis-trend beta rather than a shared TSMOM premium. The analyst abandoned it at backtest review before optimization; it never reached the optimizer, risk officer, or paper stage.

Outcome Summary

Adding legs only cures selection bias if the legs actually share the edge — verify per-leg PnL dispersion and leg-drop sensitivity before treating an aggregate as breadth rather than one lucky series.

Outcome Summary

The analyst abandoned it at backtest review (pre-optimization) as premise_falsified: per-leg realized PnL split 5 winners / 3 losers (INJ +40.9k vs DYDX -39.2k, AAVE -18.6k) and removing INJ alone flipped the book from +32.3k to -8.7k, so the 'shared edge across eight legs' claim failed on its own adequate sample. Regime attribution showed profits confined to the stressed vol tercile (+125.3%) while calm (-7.7%) and normal (-28.6%) lost money, and cutting gross scales return and drawdown together, leaving no sizing-side iteration path.

Outcome Summary

A long-short daily time-series-momentum basket running ONE shared parameter set (56-day return sign, inverse-vol sizing, ATR-chandelier stop) outright on eight mid-cap Binance USD-M perps (RUNE, NEAR, FIL, AAVE, AVAX, GALA, DYDX, INJ), betting that breadth across legs would replace the single-name best-of-N selection that had killed prior candidates.

Outcome Summary

Over 2,196 days it produced 605 closed trades (300 long / 305 short), +52.8% total return, CAGR 7.13%, Sharpe 0.356 with a bootstrap CI of [-0.42, +1.16], profit factor 1.06, win rate 34.9%, and 63.9% max drawdown with 746 days underwater. Costs were not the problem — avg_trade_return_pct 1.55% vs the 0.15% floor, commissions 1.71% of gross — but modeled impact was 12% of gross and 20.6% of the equity was still open mark-to-market at the last bar.
Strategy report

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