Skip to content

View original

RiskParityDollarNeutralMomentumLS

Hypotheses

Risk-Parity Dollar-Neutral Cross-Sectional Momentum, Long-Short Market-Neutral (BINANCE USD-M, 8 Majors, MONTHLY Long Above-Median / Short Below-Median by Relative Strength, Each Leg Sized INVERSE-VOLATILITY So No Single High-Vol Name Dominates the Spread's Drawdown — Dollar-Neutral (Net Beta≈0) So Max-DD Is Bounded, Risk-Parity Legs Stabilize It Further, 2-Parameter)

Hypotheses

A REAL, codeable strategy in the one structurally-correct family for the binding constraint proven this session: EVERY long-only momentum reuse (crowding/dispersion/mid-cap) died on the >50% drawdown floor from crypto beta, so the fix is DOLLAR-NEUTRALITY (net beta≈0 → max-DD bounded by the momentum spread, not the market). My pending dollar-neutral spread (discrete top-2/bottom-2) and rank-weighted versions establish the family; this adds the standard institutional refinement neither uses — INVERSE-VOLATILITY (risk-parity) leg sizing — which directly targets drawdown STABILITY: in an equal- or rank-weighted crypto momentum spread a single high-volatility name (e.g. a laggard alt squeezing) dominates the spread's variance and drives its worst drawdowns; sizing each name inverse to its own realized volatility equalizes each name's risk contribution, so no single leg can blow out the spread. It longs the above-median-momentum names and shorts the below-median names of the 8 majors, dollar-neutral, MONTHLY (low turnover to clear the L12 fee bar). Reuses the proven relative-strength signal (no L30 new-indicator risk). Genuinely market-neutral (fills the under-represented long-short bucket). NOT long-only (fixes the DD floor), NOT the equal-weight discrete or rank-weighted dollar-neutral versions (this is inverse-vol risk-parity sizing — a different, DD-stability-focused weighting), NOT funding/options/order-flow. Long-short, monthly, USD-M. 2 core parameters (momentum lookback, volatility lookback for the inverse-vol weights).

Hypotheses

In the one structurally-correct family for this session's binding constraint: every long-only momentum reuse (crowding 63% / dispersion 67% / mid-cap 74% DD) died on the >50% floor from crypto beta, so the fix is DOLLAR-NEUTRALITY (net beta ~0 -> max-DD bounded by the momentum SPREAD, not the market). This adds the institutional refinement the equal-weight discrete and rank-weighted siblings lack: INVERSE-VOLATILITY (risk-parity) leg sizing, which targets drawdown STABILITY — in an equal/rank-weighted crypto spread a single high-vol name (a squeezing laggard) dominates the variance and worst drawdowns; sizing notional inverse to each name's realized vol equalizes risk contributions (verified: notional_i x vol_i is constant across names), so no single leg can blow out the spread. Mechanism in _rebalance: rank by momentum, split at the median (above -> long, below -> short), compute 1/vol weights per side, and give each side an equal dollar budget (gross_budget/2 x equity) so the book is dollar-neutral; then reconcile each instrument to its signed target via _set_target (flips = explicit close-then-open-from-flat to avoid netting-OMS ambiguity; same-side changes = single delta order). Reuses the proven relative-strength signal (no L30 new-indicator risk) and is distinct from the pending equal-weight discrete and rank-weighted dollar-neutral versions (this is inverse-vol risk-parity, a DD-stability-focused weighting). Fee discipline per L12: MONTHLY cadence keeps fills low; a monthly winners-minus-losers majors spread (~3-8%) clears the ~0.4-0.8%/month fee comfortably. VENUE: USD-M futures required (the strategy SHORTS the below-median names), matching the deployed momentum family. SIZING/LEVERAGE: gross_budget 0.90 of equity split equally long/short -> gross ~0.90, net ~0, so leverage stays 1.0 and is genuinely unused (no leverage-unused gate; a market-neutral book cannot suffer the -100% beta blowups). Purely price-driven (no supp/tick data) so it avoids cross-instrument-supp and tick-timeout pitfalls and is timeout-safe (bounded per-bar work: 8 momentum + 8 vol O(window) reads; rebalance monthly). All trading happens in _rebalance via _submit_entry_instrument/close_position; the default primary entry path is neutralized (should_enter None, should_exit False, position_size 0) so the base never double-trades BTC. All 8 majors are deep-history liquid USD-M perps, so every leg has data (no data_unavailable). 2 core parameters (momentum_lookback, vol_lookback) shared across names — not per-name tuned — to resist overfit.

Hypotheses

Redundant duplicate of an already-failing family, abandoned to avoid iteration-burn. The backtest crashed on the exact same bug as the rank-weighted dollar-neutral sibling reviewed minutes ago — round(qty, 3) in _submit truncates small BTC-priced quantities to 0.000, producing a zero-quantity order that aborts the run ('init.quantity not a positive real, was 0.0') — so it produced zero performance data. Normally a crashed-but-fixable backtest warrants iterate, but this is the THIRD member of the dollar-neutral cross-sectional momentum family, and the family already has a decisive verdict: the discrete top-2/bottom-2 version blew up -96% (max_drawdown 97.6%) from unbounded short-squeeze losses on crypto momentum-losers, and the near-twin rank-weighted version (same signal, same crash) is ALREADY in the iterate queue with the identical bug-fix and a hard 'abandon if it reproduces the -96% blowup' bar. Inverse-vol risk-parity sizing is a genuine refinement — it down-weights the high-vol names most prone to squeezing — but it dilutes rather than removes the structural flaw that shorting crypto momentum-losers carries unbounded upside squeeze risk. Fixing the same bug a second time and re-running this near-duplicate in parallel is redundant negative-EV compute, exactly the iteration-burn the Research Lead's escalation warns against (this is ~the 8th momentum variant this session). Recommendation for the orchestrator/PM: consolidate the dollar-neutral momentum family to ONE representative in the fix queue — either apply this inverse-vol sizing to the rank-weighted variant already being fixed, or keep only one — rather than running both. If the single fixed representative reproduces the family's >50%-DD / short-squeeze blowup, abandon the family. Abandoning this crashed duplicate rather than iterating it a third time.

Implementation

Risk-parity dollar-neutral cross-sectional momentum, long-short market-neutral on 8 BINANCE USD-M majors (BTC/ETH/SOL/BNB/XRP/ADA/AVAX/LINK, 1-DAY bars). MONTHLY it ranks the 8 by trailing relative strength, LONGS the above-median half and SHORTS the below-median half, and sizes each leg INVERSE to its realized volatility (risk parity) so every name contributes equal risk and no single high-vol name dominates the spread's drawdown. Each side gets equal dollar budget (dollar-neutral, net beta ~0), so max drawdown is bounded by the momentum spread (~20-30%) rather than crypto beta, and the risk-parity legs stabilize it further. Pure-price, no supp data, no ticks. 2 core parameters: momentum_lookback, vol_lookback.

Verification Results

Skip the orders_open guard for the reopen half of a flip (close is reduce-only), or defer the opposite leg to the next rebalance.

Verification Results

Flip reconciliation in _set_target close-then-reopens on the same bar; _submit's `if cache.orders_open(iid): return` guard can see the just-submitted reduce-only close and skip the reopen half, leaving that name flat until next month and briefly tilting off dollar-neutral. Empirically not biting — sandbox shows balanced 22L/22S, beta 0.0035. Latent risk only; direct above↔below-median flips are rare monthly.

Verification Results

Analyst: judge on full multi-year backtest (incl. 2022); weigh the tighter ~$472k capacity.

Verification Results

Flat/inconclusive one-year sandbox: total_return +0.86%, PF 1.004, Sharpe 0.089 (CI [-1.54, 1.76] straddles zero), 44 trades. Not an L17 code-defect signature. Negative avg_trade_return_pct alongside positive total/pnl is the multi-leg per-trade-pct artifact. Notable capacity constraint: capacity_usd ~$472k, impact 46% folded — inverse-vol concentrates in low-vol names, tighter than the rank-weighted sibling (~$2.1M).

Backtest Review

Inverse-vol (risk-parity) sizing is a legitimate, arguably-better squeeze mitigation than rank-weighting (it directly down-weights the high-vol names most prone to squeezing)

Backtest Review

BACKTEST CRASHED: 'init.quantity not a positive real, was 0.0' — same round(qty,3) zero-quantity-order bug as the rank-weighted sibling; 0 bars, 0 trades, no data

Backtest Review

Third variant of the dollar-neutral momentum family whose discrete member already blew up -96% (97.6% DD) from unbounded short-crypto-loser squeeze risk — inverse-vol sizing dilutes but does not remove that flaw

Backtest Review

The identical bug-fix is already in flight on the near-twin rank-weighted variant (just sent to iterate); fixing/re-running this in parallel is redundant negative-EV compute

Backtest Review

~8th momentum variant this session; Research Lead has escalated to halt momentum generation

Outcome Summary

RiskParityDollarNeutralMomentumLS was roughly the eighth momentum variant of the session and the third in the dollar-neutral long-short family, adding inverse-volatility risk-parity leg sizing on top of the market-neutral construction to stabilize drawdown. It never yielded metrics: the backtest crashed on the same round(qty,3) zero-quantity-order bug as its rank-weighted twin, producing zero bars and zero trades. Although the crash was fixable, the analyst declined to iterate because the family already had a decisive verdict — the discrete top-2/bottom-2 version blew up -96% with a 97.6% drawdown from unbounded short-squeeze losses, and inverse-vol sizing only dilutes that flaw — and the identical fix was already in flight on the near-twin rank-weighted variant. It was abandoned as a redundant duplicate, with a recommendation to consolidate the dollar-neutral momentum family to a single representative fix rather than burn compute re-running near-duplicates.

Outcome Summary

Inverse-volatility sizing down-weights the names most prone to squeezing but only dilutes rather than removes the structural flaw that shorting crypto momentum-losers carries unbounded upside squeeze risk; a confirmed family blowup should be consolidated to a single representative fix rather than re-run across near-duplicate variants.

Outcome Summary

It was abandoned at backtest-review (verdict: abandon) as a redundant crashed duplicate rather than iterated: it is the third member of the dollar-neutral momentum family whose discrete version already blew up -96% (97.6% drawdown) from unbounded short-squeeze risk, the identical bug-fix was already in flight on the near-twin rank-weighted variant, and re-running this near-duplicate would be negative-EV iteration burn against the Research Lead's escalation to halt momentum generation.

Outcome Summary

It applied the proven cross-sectional relative-strength momentum signal in a dollar-neutral long-short form (monthly long above-median / short below-median of the 8 majors) with each leg sized inverse to its realized volatility (risk parity), on the thesis that net-zero beta plus risk-parity sizing would keep any single high-vol name from dominating the spread's drawdown.

Outcome Summary

It produced no performance data — the backtest crashed with 'init.quantity not a positive real, was 0.0' (0 bars, 0 trades), the same round(qty,3) zero-quantity-order bug as its rank-weighted sibling.
Strategy report

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