Skip to content
All strategies

Strategies

SOL Spot Volume-Confirmed Momentum, LONG-ONLY (SOLUSDT.BINANCE_SPOT, 4H — long half of the edge on the scarce spot venue)

Outcome: Abandoned

SolSpotVolumeConfirmedMomentumLong

Outcome Summary

After one iteration, SolSpotVolumeConfirmedMomentumLong delivered a 150.71% initial backtest return with Sharpe 1.12 over 232 trades, earning an optimize verdict. Subsequent analysis found uneven OOS performance and a 55-trade holdout with Sharpe 0.08. Refitted drawdowns exceeded the registered 25% limit on both full-history replay and holdout, so the analyst abandoned the strategy before risk review or paper trading.

Hypothesis

premise_falsified (fee-floor check: avg_trade_return_pct is 2.91% at the final parameters and 1.78% initially, against the 0.25% BINANCE_SPOT floor, so fees are not the cause). This rejects the 4H SOLUSDT spot, long-only, volume-surge-gated momentum strategy as registered. Low significance is not the reason. Three measured problems are. (1) The refit final parameters breach the hypothesis's own 25% drawdown limit: 29.1% on the full-history replay and 28.0% on the holdout. Walk-forward window 5 rejected candidates……Show moreShow less

premise_falsified (fee-floor check: avg_trade_return_pct is 2.91% at the final parameters and 1.78% initially, against the 0.25% BINANCE_SPOT floor, so fees are not the cause). This rejects the 4H SOLUSDT spot, long-only, volume-surge-gated momentum strategy as registered. Low significance is not the reason. Three measured problems are. (1) The refit final parameters breach the hypothesis's own 25% drawdown limit: 29.1% on the full-history replay and 28.0% on the holdout. Walk-forward window 5 rejected candidates on the same rule. (2) The adequately powered 15-month holdout (55 trades) shows no forward edge: Sharpe 0.08, t 0.07. (3) Out-of-sample results depend on one regime. Pooled OOS Sharpe is 0.77 (t 1.49), carried by the late-2023 window at 2.65, while 3 of 6 windows are at or below about 0.05. IC is 0.014. The prior run of this hypothesis was abandoned as overfit, and this re-evaluation confirms it. Paper trading is not recommended because the strategy fails its own risk limit and its holdout shows nothing to observe forward. Choosing a higher vol_surge_mult to get the drawdown under 25% would be selecting parameters on the result, and would be a new hypothesis, not an iteration.

Implementation

Long-only 4H momentum on SOLUSDT Binance SPOT that only buys when a volume surge confirms the move. Every bar it computes a continuous participation-weighted momentum signal: price change over mom_lookback bars in ATR units, multiplied by min(1, current volume / median volume of the prior 60 bars / vol_surge_mult). It goes long on the upward cross of entry_thresh_atr (1.0 ATR) while the surge is genuinely met (participation >= 1), and is otherwise flat in cash. Exits are structural: momentum reversing to -0.25 ATR (with hysteresis so an intra-leg pause does not truncate a winner and bill a second round trip), or a 3-ATR trailing stop from the best close since entry. Sizing risks a fixed 2% of equity to the trailing-stop distance, capped at 95% of equity notional, floored at SOL's 0.001 step and the $10 spot minimum. No leverage, no shorts, no supplementary data.

Implements the hypothesis exactly: the LONG half of volume-confirmed momentum on the scarce spot venue. Long-only with leverage 1.0 and no funding dependence is precisely the routing rule for BINANCE_SPOT, so venue_type spot is correct and the CASH account can never be asked to short (should_enter returns BUY or None only; SELL is only ever the reducing exit the base template submits). calculate_signal returns the raw continuous decision variable (momentum in ATR units, discounted by participation) on every bar……Show moreShow less

Implements the hypothesis exactly: the LONG half of volume-confirmed momentum on the scarce spot venue. Long-only with leverage 1.0 and no funding dependence is precisely the routing rule for BINANCE_SPOT, so venue_type spot is correct and the CASH account can never be asked to short (should_enter returns BUY or None only; SELL is only ever the reducing exit the base template submits). calculate_signal returns the raw continuous decision variable (momentum in ATR units, discounted by participation) on every bar rather than a gated constant, and should_enter thresholds it in the same units. The two ingredients come from a single 4H OHLCV series, so nothing can desynchronise, and there is no supplementary feed whose absence could silently swap the edge mechanism. Spot round-trip cost is ~0.20% -- double the perp -- so the design keeps turnover deliberately low: the surge gate, the up-cross requirement and the exit hysteresis together produce a few dozen round trips per year rather than hundreds, while a volume-confirmed SOL 4H leg (4H ATR ~1.5-3% of price, held via a 3-ATR trail) traverses an order of magnitude more than the cost. Entry frequency sanity: the conjunction is only two conditions (momentum >= 1 ATR AND volume >= 2x its 60-bar median), each firing on the order of 10-20% of bars and positively correlated (big moves come with volume), so on ~2200 4H bars per year this fires comfortably more than the 10-trades/year floor. Performance: bars are addressed by index over bounded windows, the trailing extreme is incremental O(1), and the previous bar's eligibility is memoised, so per-bar work is constant in accumulated history. Only three parameters are tunable (mom_lookback, vol_surge_mult, trail_atr_mult); risk_pct and the entry threshold are locked so an optimizer cannot buy Sharpe with notional instead of edge.

Verification Results

Confirm the base FactoryStrategy honors a subclass override of min_bars_required for its warm-up gate (the sandbox behavior indicates it does). If the base ignores overrides, rename to avoid confusion; otherwise leave as-is.

min_bars_required(self) overrides the framework method flagged by static analysis (base_shadow). This appears deliberate — the override returns max(vol_window+2, atr_period+2, mom_lookback+2), a sensible warm-up gate, and the synthetic tests + sandbox both produced trades, so the base warm-up path is being satisfied correctly. Not blocking.

Sandbox looks healthy (avg_trade_return_pct 2.09%, PF 1.66, Sharpe 0.84, 228 trades, positive in all three vol regimes), so no immediate profitability doubt. One thing for the analyst to watch: this is a pure-OHLCV single-name trend/momentum mechanism on a 4H spot series, a family that frequently dies on OOS generalization (overfit) at the walk-forward/holdout stage even when in-sample metrics are good. The design commendably locks all but 3 parameters (mom_lookback, vol_surge_mult, trail_atr_mult) and locks risk_pct/entry threshold, which limits the overfit surface, but the small tunable set should still be evaluated for OOS stability rather than raw Sharpe. Information_ratio vs buy-hold is -0.97 in the sandbox (it underperforms holding SOL on a risk-adjusted basis over the truncated window) — expected for a defensive flat-in-cash overlay, but the analyst should confirm the full-history edge is real alpha, not just reduced beta.

Backtest Review

Sharpe
1.12
Total return
150.71%
Max drawdown
15.77%
Trades
232
Win rate
41.4%
Profit factor
1.65

Reliable sample: 232 closed long-only trades over 2020-08 to 2026-10 (2251 days, no missing bars). That is about 37 per year, matching the 'few dozen round trips per year' the design targets.

Fee-floor check: avg_trade_return_pct is 1.78% against the 0.25% BINANCE_SPOT floor (about 7x). Commission is 6% of gross and modelled impact 5.1%, so the edge is not fee-fragile.

PF 1.65 with win rate 0.41 and payoff about 2.3 (avg win $3,996 vs avg loss $1,713). This is a trend-follower payoff shape, not the lesson-142 death shape (WR<0.40 and PF<1.2).

Beta check: SOL buy-and-hold made +3,690% with a 96% drawdown. The strategy's max drawdown is 15.8%, about 0.16x buy-and-hold's, at 26% time in market. Beta is 0.07 and alpha is positive, so the headline is not leveraged beta.

Trades match the mechanism: all longs, entries on surge-confirmed upward moves, sized smaller when volatility is high (leverage 0.07-0.12 early on, risk-to-stop sizing). end_unrealized_pct is 0, so the headline is fully realized.

Positive in all three volatility regimes (Sharpe 1.04 / 0.96 / 1.34) and in 5 of 7 calendar years (2020 about flat at -0.3%, 2022 -9.4%).

Information ratio vs buy-and-hold is -0.98: it badly trails holding SOL in absolute terms. It is a defensive overlay, so judge it on absolute risk-adjusted returns and drawdown.

Executed-signal IC at a 1-bar horizon is 0.014 (t=1.6), labelled no-information. The strategy holds positions for multiple days, so a 1-bar IC understates it, but it is a caution.

Profit is concentrated in 2021 (+38%) and 2023 (+54%), and the 2022 stress windows lose. Watch for year-concentration and OOS decay in the walk-forward.

Max drawdown duration is 375 days. avg_holding_bars reports 0.0 while avg_holding_period is 2d 11h, a reporting inconsistency that does not affect PnL.

QA's concern: QA flagged single-name OHLCV trend as an overfit-prone family. That cannot be assessed until the walk-forward and holdout; only 3 tunables limits the overfit surface.

Analysis

Economics clear the fee floor by a wide margin. avg_trade_return_pct is 1.78% on the initial backtest and 2.91% on the final-parameter full-history replay, against the 0.25% BINANCE_SPOT floor. PF is 1.65 initially and 1.60 at the final parameters, with 232 trades in both.

Not disguised beta: beta is 0.07, exposure is 25.8%, and the 15.8% initial drawdown is a small fraction of SOL's buy-and-hold drawdown (more than 90%).

The pre-search sensitivity sweep is mostly a plateau. The only cliff is vol_surge_mult between 2.5 and 3.0, a drop of 1.13 SE.

Profitable in the stressed volatility third (Sharpe 1.34). The trades match the hypothesis: long-only, entered on volume-confirmed upside momentum.

The parameters that would trade break the hypothesis's own 25% drawdown limit. The refit chose mom_lookback 22 and vol_surge_mult 1.35, the bottom edge of the allowed range. Max drawdown is 29.07% on the full-history replay and 28.03% on the holdout. Walk-forward window 5 also rejected inner-training candidates for 26.7-27.1% drawdown.

The holdout shows no edge. Over 15 months with 55 trades (adequately powered), Sharpe is 0.081 and t is 0.07, a ratio of 0.10 to WF-OOS. It is statistically consistent with WF-OOS (z -0.46), but there is almost nothing forward to observe.

Out-of-sample results are uneven. Outer Sharpes are -0.13, -0.29, 0.53, 2.65, 0.05 and 1.00. The pooled 0.77 (t 1.49) is carried by the late-2023 SOL rally window.

Executed-signal IC is 0.014 (t 1.6), not distinguishable from noise.

Information ratio against SOL buy-and-hold is -0.98.

The prior run of this same hypothesis was abandoned as overfit.

Outcome Summary

Strong full-history returns and ample fee clearance need to survive holdout testing within the pre-registered risk limit.

The analyst abandoned the strategy because refitted parameters breached its registered 25% drawdown limit, the holdout showed no forward edge, and OOS performance depended heavily on the late-2023 rally window. Fees were not the cause; risk review and paper trading were not reached.

Capture volume-confirmed upward momentum in SOL on Binance Spot using 4-hour bars, long-only positions, and ATR-based sizing and exits.

The initial backtest returned 150.71% with Sharpe 1.12, 232 trades, and 15.77% maximum drawdown. The analyst reported pooled walk-forward OOS Sharpe of 0.77, but the 15-month holdout produced Sharpe 0.08 across 55 trades and 28.03% drawdown.

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