EthTsmomVolTargetedLS
Hypotheses
ETH USD-M Volatility-Targeted Time-Series Momentum, Long-Short (Single Instrument ETHUSDT.BINANCE Perp, Daily Bars, Directional Sign from 90-Day Trend with a Deadband, Position SIZE Scaled Inversely to Realized Volatility, Always-in Long or Short or Flat, 3-Parameter)
Hypotheses
A LONG-SHORT, single-instrument time-series (absolute) momentum strategy on ETHUSDT.BINANCE (USD-M perp, DAILY bars) with VOLATILITY-TARGETED position sizing — the canonical Moskowitz-Ooi-Pedersen TSMOM construction, which is a distinct family from everything pending/deployed. It is NOT cross-sectional/relative-strength ROTATION (L32 exhausted — no basket, no ranking, single name), NOT a fade/mean-reversion (my OI-divergence and the VWAP siblings died fee_edge/no_edge fading deviations — this trades WITH the trend), NOT a channel-breakout trend-ride (the pending SOL long-only spot breakout is regime-gated-long-only and event-triggered; this is always-in long/short/flat, signed by trend, and sized by inverse volatility), NOT funding-carry (L33), NOT options (L23), and — critically given my BNB taker-flow strategy died on a 300s smoke-test TIMEOUT — it uses ONLY pure OHLCV with O(1) incremental rolling statistics (no supplementary feed, no per-bar rescans of any full series). The two structural premia harvested: (1) MOMENTUM PERSISTENCE — crypto trends autocorrelate at the multi-week horizon, so the sign of trailing return predicts forward return better than chance; (2) VOLATILITY TIMING — realized vol is persistent and high-vol regimes deliver worse risk-adjusted returns, so scaling size inversely to recent vol raises Sharpe and prevents the high-vol blowups that wreck fixed-size trend systems. Only 3 parameters to resist overfitting.
Hypotheses
QA rejected iter-1 at Layer 4 solely on measurability: a 90-day trailing-return sign with a zero-cross exit flips only ~3x/yr on a single name (~76-day avg hold), extrapolating to ~15-30 trades over the full window -- below the ~100-trade floor, with metrics_reliable=FALSE. Canonical MOP TSMOM derives its statistical power from a large cross-instrument basket; on one instrument the only lever for measurability is a shorter momentum horizon that flips direction more often. The smallest fix that keeps the entire TSMOM construction intact is to shorten the horizon: trend_lookback 90 -> 20 (a 1-month momentum, still a canonical MOP horizon since MOP tested 1-12 months and 1-month is the shortest standard TSMOM lookback), which ~4x's the direction-flip frequency toward ~100+ trades over the multi-year window; plus vol_lookback 30 -> 20 and deadband 0.05 -> 0.02 to shrink the warmup (min_bars 125 -> 45, so far more of the sandbox is evaluated) and let entries trigger more readily. Only default parameter values changed (in __init__ and the config) -- the signed trailing-return signal, deadband entry gate, zero-cross exit hysteresis, and inverse-volatility (vol-target/realized-vol, leverage-capped) sizing are byte-for-byte unchanged, so Layers 1-3 stay green and the leverage field remains genuinely wired into position_size (satisfying the leverage-used gate). Imports are unchanged and clean. This directly raises the trade count to a measurable sample while preserving the vol-targeted TSMOM edge the hypothesis harvests; the optimizer can later explore the horizon, and if a longer trend is desired it can widen trend_lookback within the now-measurable regime.
Hypotheses
Negative-expectancy net loser masquerading as a winner: profit_factor 0.9965 (<1.0), avg_trade_pnl_usd -31.45, and the +100.6% headline is 105.6% open-position UNREALIZED mark-to-market (realized return is negative; annual realized path 2022 -27% / 2023 -38% / 2024 -121%). max_drawdown 87.99% (CI low 54.7%) breaches the >50% hard-abandon floor and directly falsifies the vol-targeting 'caps blowups' premise. Compounding red flags: suspected artifacts (single-day returns +812%/+328%/+180%), impact_cost_pct 224% exceeding gross PnL, capacity_usd only $19,930, and Sharpe CI [-0.19, 1.03] straddling zero. Pure-OHLCV single-name trend/momentum class (L9/L10) with ~0/213 survival; already at iteration 2 with measurability fixed, so the bad result is now confirmed rather than a sampling artifact. Optimizing the 3 params cannot flip negative expectancy or create drawdown protection the mechanism structurally lacks — it would only overfit the two or three explosive up-days that carry the unrealized headline. No plausible reframe of a single-name TSMOM premise that would clear costs and the DD floor, so abandon rather than revise_hypothesis.
Implementation
Long-short time-series (absolute) momentum on ETHUSDT.BINANCE (USD-M perp), daily bars, pure OHLCV. Direction is the sign of the trailing 20-day return with a deadband (trend > +deadband -> long, < -deadband -> short, otherwise no new entry); a held position exits at the trend zero-cross, leaving [0, deadband] as a flat hysteresis band that damps whipsaw. Position size is scaled inversely to realized volatility: leverage = min(vol_target / annualized_realized_vol, config.leverage), target notional = equity x leverage, so calm regimes size up to the 3x cap and volatile regimes size down. 3 tuned params (trend_lookback, deadband, vol_target).
Verification Results
Verification failed (Layer 4 — QA review):
- Structurally unmeasurable trade count. The sandbox produced only 3 closed trades over 362 days (~3/yr) and the engine flagged metrics_reliable=FALSE. A single-instrument, daily, 90-day TSMOM signal with a zero-cross exit flips direction only a few times per year (~76-day avg hold confirms it). Over the full multi-year window this yields ~15-30 trades — decisively below the ~100-trade floor needed to distinguish edge from noise. Canonical MOP TSMOM gets its statistical power from a LARGE cross-instrument basket; on one name that diversification is gone. Optimizing 3 params on ~3 trades is meaningless, and metrics_reliable=FALSE says the result cannot be trusted. Reject at Layer 4 rather than burn a backtest/optimization cycle.
Verification Results
Analyst: confirm full-window total_trades is comfortably ≥100 before trusting Sharpe/PF; if materially below 100, treat as still under-powered.
Verification Results
Trade-count is now measurable but only borderline in the sandbox: 26 closed trades over 362 days (~26/yr) with metrics_reliable=TRUE (up from iter-1's 3 trades / metrics_reliable=FALSE). Extrapolated over the full ~4.5yr window this is ~117 trades, just above the ~100-trade floor. The horizon shortening (trend_lookback 90→20) did ~4x the flip frequency as intended and cleared the prior blocking objection, but the sample remains modest.
Verification Results
Analyst/optimizer: verify the return isn't a single-trend artifact (per-window stability), confirm vol-targeting contributes vs fixed-size, and watch fee/slippage sensitivity given the thin PF.
Verification Results
In-sample edge is thin and inconclusive: Sharpe 0.32 with CI [-1.52, +1.91] straddling zero, PF 1.10, win_rate 0.27. Canonical trend-follower profile — few large winners carry it (avg_win 12764 vs avg_loss 4264, largest_win 37389), so the +8.4% return is dependent on catching the occasional big ETH trend. An edge/robustness question for the analyst and walk-forward, not a code defect.
Backtest Review
Measurability fixed vs iter-1: 158 trades over 2399 days is a well-sampled, statistically meaningful count.
Backtest Review
Clean pure-OHLCV implementation with no smoke-test timeout risk; trades match the always-in long/short TSMOM mechanism (74 long / 84 short).
Backtest Review
max_drawdown 87.99% (CI low 54.7%) — hard-abandon threshold (>50%) breached even optimistically; a vol-targeting overlay that produces 88% DD falsifies its own 'caps high-vol blowups' premise.
Backtest Review
profit_factor 0.9965 (<1.0) and expectancy/avg_trade_pnl_usd = -31.45 (NEGATIVE) — net realized loser; 32.9% win rate with avg_win only ~2x avg_loss nets below zero.
Backtest Review
The +100.6% total_return is entirely open-position unrealized (end_unrealized_pct 105.56 > total_return 100.59 => realized is negative); realized annual path is 2022 -27%, 2023 -38%, 2024 -121%.
Backtest Review
Suspected artifacts / no capacity: single-day returns of +812%, +328%, +180%; impact_cost_pct 223.997% (impact exceeds gross PnL); capacity_usd only $19,930; avg_position_pct 215% (leveraged).
Backtest Review
Sharpe 0.416 with CI [-0.19, 1.03] straddles zero; information_ratio -0.42 (negative active value vs its meaningful benchmark).
Outcome Summary
EthTsmomVolTargetedLS applied textbook time-series momentum with inverse-volatility sizing to a single ETH perp, and after iteration 1's measurability problem was fixed by shortening the trend horizon from 90 to 20 days, iteration 2 produced a well-sampled 158-trade backtest. That larger sample only confirmed the strategy was a negative-expectancy net loser — profit factor 0.9965, -$31.45 per trade, and a +100.6% headline return that was entirely unrealized mark-to-market masking a deeply negative realized path. An 88% max drawdown breached the hard-abandon floor and directly contradicted the vol-targeting thesis, while suspected artifacts (single-day returns of +812%/+328%/+180%), 224% impact cost, and ~$19,930 capacity removed any doubt. The analyst abandoned it at the pre-optimization gate, judging that tuning three parameters could not flip negative expectancy or add structural drawdown protection, so optimization, risk review, and later stages were never reached.
Outcome Summary
A single-name TSMOM/vol-targeting overlay cannot manufacture the drawdown protection or positive expectancy the cross-instrument version relies on, and a headline return dominated by open-position unrealized marks hides a negative realized path — check profit factor, expectancy, and realized-vs-unrealized split before trusting total return.
Outcome Summary
The backtest-review analyst issued an abandon verdict before optimization: negative expectancy and sub-1.0 profit factor made it a confirmed net loser, the 88% drawdown breached the 50% hard-abandon floor and falsified its own 'caps high-vol blowups' premise, and the headline return was unrealized mark-to-market masking a negative realized path (2022 -27%, 2023 -38%, 2024 -121%).
Outcome Summary
A long-short, single-instrument time-series (absolute) momentum strategy on ETHUSDT.BINANCE daily perp bars — the canonical Moskowitz-Ooi-Pedersen TSMOM construction — signing direction from a 20-day trailing return with a deadband and scaling position size inversely to realized volatility to harvest momentum persistence and volatility timing.
Outcome Summary
Over 2019-2026 it took 158 well-sampled trades (74 long / 84 short) but was a net loser: profit factor 0.9965, negative expectancy of -$31.45/trade, a 32.9% win rate, and Sharpe 0.416 with CI [-0.19, 1.03] straddling zero. Its +100.6% headline return was entirely open-position unrealized (end_unrealized 105.6%), max_drawdown was 87.99% (CI low 54.7%), avg_position_pct 215%, and impact_cost_pct 224% exceeded gross PnL on capacity of only ~$19,930.
Backtest and paper results are hypothetical. Trading involves risk of loss.