Skip to content
All strategies

Strategies

BTC Spot Dual-Timeframe Momentum Confluence, LONG-ONLY 1x (BTCUSDT.BINANCE_SPOT, 4H Primary + 1D Confirm, Long Only When BOTH Timeframes Point UP, FLAT to Cash Otherwise, ATR-Trailing + Daily-Regime-Break Exit, Source-Optimised Parameters Retained)

Outcome: Paper Trading

BtcSpotDualTimeframeMomentumConfluenceLong

Outcome Summary

BtcSpotDualTimeframeMomentumConfluenceLong carried the factory's best-performing futures momentum strategy over to BTC spot as a long-only, unleveraged strategy, kept the parameters from the source optimisation, and went to cash whenever the 4-hour and daily momentum disagreed or both pointed down. Over 8.5 years it returned +69.9% on 309 trades with Sharpe 0.86, a 12.4% max drawdown and a 1.04% average net trade, with low beta (0.08) to BTC. The analyst promoted it on a profitable holdout, robust parameters and limits that held, while noting that significance was not established, the signal had no forecasting power, and two of five pre-registered predictions were missed (win rate and profit factor). After one iteration it is now in paper trading.

Hypothesis

A LONG-ONLY, 1x, CASH-account port of the factory's best-performing promoted strategy (BtcDualTimeframeMomentumConfluenceLS, Sharpe 1.99, 458 trades, +$4,774 over 29 days of paper) onto BTCUSDT.BINANCE_SPOT, created specifically as the FIRST LIVE-TRADING CANDIDATE because the live venue is spot-only. Mechanism unchanged, pure-OHLCV, single-instrument: FAST leg = sign of the trailing 18-bar return on 4-HOUR bars; SLOW leg = sign of the trailing 15-bar return on DAILY bars (read via on_extra_bar as a context leg,……Show moreShow less

A LONG-ONLY, 1x, CASH-account port of the factory's best-performing promoted strategy (BtcDualTimeframeMomentumConfluenceLS, Sharpe 1.99, 458 trades, +$4,774 over 29 days of paper) onto BTCUSDT.BINANCE_SPOT, created specifically as the FIRST LIVE-TRADING CANDIDATE because the live venue is spot-only. Mechanism unchanged, pure-OHLCV, single-instrument: FAST leg = sign of the trailing 18-bar return on 4-HOUR bars; SLOW leg = sign of the trailing 15-bar return on DAILY bars (read via on_extra_bar as a context leg, never a sync barrier). Both must AGREE. The only structural change the CASH account forces is collapsing {LONG/FLAT/SHORT} into {LONG/FLAT}: where the futures parent goes SHORT on joint-down confluence, the spot version holds 100% USDT. Everything else is preserved verbatim: ATR(14) trailing stop at 3.033x ATR from the running extreme, daily-regime-break exit, vol-scaled capital-relative sizing (risk_pct 1.011% / 3.033xATR stop distance), 49.7% max-notional cap, and the exact parameter vector the source optimisation selected (fast_lookback 18, slow_lookback 15, trail_atr_mult 3.033). Three tunables, no supplementary data, no shorts, no leverage. Spot-specific code changes: BINANCE_SPOT CASH venue (no leverage multiplier in position_size), size_precision 5 / price_precision 2, min_notional $10, sells sized to held base quantity only. Data verified present: BTCUSDT.BINANCE_SPOT 4-HOUR and 1-DAY bars run continuously from 2017-08-17 (~9 years, ~19,800 4H bars). Existing-code rerun clarification: agreement of fast and daily momentum is an entry condition. Once long, the strategy tolerates a fast-only reversal and exits when daily momentum turns negative or the ATR trailing stop triggers. Agreement/flat wording does not add a fast-momentum exit. This describes the existing implementation; the strategy code and trading rules are unchanged.

Implementation

LONG-ONLY 1x BTCUSDT spot (BINANCE_SPOT, CASH) dual-timeframe momentum confluence. FAST leg = sign of the trailing 18-bar return on 4-HOUR bars (primary); SLOW leg = sign of the trailing 15-bar return on 1-DAY bars, consumed via on_extra_bar as a slower-timeframe context leg (different timeframe, so the base template's cross-leg alignment barrier never defers the 4H signal). Both legs must point UP to hold BTC; joint-down (where the futures parent shorts) and disagreement both mean hold 100% USDT. Exits: ATR(14)……Show moreShow less

LONG-ONLY 1x BTCUSDT spot (BINANCE_SPOT, CASH) dual-timeframe momentum confluence. FAST leg = sign of the trailing 18-bar return on 4-HOUR bars (primary); SLOW leg = sign of the trailing 15-bar return on 1-DAY bars, consumed via on_extra_bar as a slower-timeframe context leg (different timeframe, so the base template's cross-leg alignment barrier never defers the 4H signal). Both legs must point UP to hold BTC; joint-down (where the futures parent shorts) and disagreement both mean hold 100% USDT. Exits: ATR(14) trailing stop at 3.033x ATR below the position's running peak, OR the daily leg flipping down under the long (higher-timeframe regime break). Sizing is vol-scaled and capital-relative: equity * 1.011% / (3.033 * ATR), capped at 49.7% of the USDT balance in notional, with NO leverage multiplier (CASH account cannot borrow), quantized to size_precision 5 and rejected below the $10 spot min notional. Three tunables, pure OHLCV, no supplementary data, no shorts. Existing-code rerun clarification: agreement of fast and daily momentum is an entry condition. Once long, the strategy tolerates a fast-only reversal and exits when daily momentum turns negative or the ATR trailing stop triggers. Agreement/flat wording does not add a fast-momentum exit. This describes the existing implementation; the strategy code and trading rules are unchanged.

Direct port of the promoted futures parent BtcDualTimeframeMomentumConfluenceLS onto the spot venue, because the intended live venue is spot-only. Mechanism preserved verbatim: the same two momentum legs, the same AGREE-or-flat gate, the same ATR(14) 3.033x trailing stop from the running extreme, the same daily-regime-break exit, the same vol-scaled risk_pct / stop-distance sizing with a 49.7% notional cap, and the exact parameter vector the source optimisation selected (fast_lookback 18, slow_lookback 15,……Show moreShow less

Direct port of the promoted futures parent BtcDualTimeframeMomentumConfluenceLS onto the spot venue, because the intended live venue is spot-only. Mechanism preserved verbatim: the same two momentum legs, the same AGREE-or-flat gate, the same ATR(14) 3.033x trailing stop from the running extreme, the same daily-regime-break exit, the same vol-scaled risk_pct / stop-distance sizing with a 49.7% notional cap, and the exact parameter vector the source optimisation selected (fast_lookback 18, slow_lookback 15, trail_atr_mult 3.033). The CASH account forces exactly one structural change, as the hypothesis specifies: {LONG,FLAT,SHORT} collapses to {LONG,FLAT} — should_enter returns BUY only on joint-up and None otherwise, so joint-down is 100% USDT rather than a short. Spot-specific edits: venue BINANCE_SPOT with leverage 1.0 and no leverage term in position_size, size_precision 5 / price_precision 2 (BTCUSDT spot), min_notional raised to $10, and all exits routed through the base template's reduce-only close_position so a SELL can only ever shed held base quantity (a naked spot short is impossible by construction, and the base's _would_open_spot_short guard is never tripped). calculate_signal returns the continuous 18-bar 4H return every bar (it varies bar to bar); the discrete confluence gate lives in should_enter, as required. Per-bar cost is O(1): the ATR uses a fixed 15-bar window and the fast return is a single indexed lookup, so there is no history-scaling work. One honest caveat for the Analyst: spot round-trip cost is ~0.20% versus ~0.10% on the futures parent, so the per-trade edge must clear double the friction — the trend-following exit structure (trail + regime break, no fixed take-profit) is what makes the average hold long enough for that to be plausible, but it is the metric to watch first. Existing-code rerun clarification: agreement of fast and daily momentum is an entry condition. Once long, the strategy tolerates a fast-only reversal and exits when daily momentum turns negative or the ATR trailing stop triggers. Agreement/flat wording does not add a fast-momentum exit. This describes the existing implementation; the strategy code and trading rules are unchanged.

Backtest Review

Sharpe
0.86
Total return
69.91%
Max drawdown
12.42%
Trades
309
Win rate
40.8%
Profit factor
1.42

309 closed trades over 8.5 years; all are BTC spot longs, matching the hypothesis.

Net average trade return is 1.04% of notional, above the 0.25% spot fee floor; profit factor is 1.42 and Sharpe is positive.

Trade sizes vary and stay near the stated 49.7% cap.

The run already has a recorded promotion and risk approval, so another optimization would duplicate prior work.

Analysis

Average net trade return is 1.02% of notional on 331 long-only spot trades, against a 0.25% fee floor and a 0.40% promotion gate. Profit factor is 1.44 and the payoff ratio is 2.11.

Max drawdown is 12.4%, against the 18% the hypothesis promised. BTC buy-and-hold fell about 75-80% over the same years, so this is not market exposure passing as an edge. Beta is 0.08 and alpha is +2.4% a year.

The holdout (2024-12 to 2026-10, 71 trades) made money: Sharpe 0.28, drawdown 11.3%. It was not statistically adverse.

The walk-forward tested one fixed parameter set with no search. Pooled out-of-sample Sharpe was 0.95 over 9 windows, 6 of them positive.

Results change little when parameters move. Every point tested at ±10/25/50% kept Sharpe above 0.67. The only flagged cliff (slow_lookback 14 to 13, 1.33 standard errors) is next to a local high, and the base value of 15 is on the plateau.

Risk limits hold. The worst realised loss is 2.16% of equity and the risk check found no violations. The largest position is 51% of equity at 1x on a cash account.

Statistical significance is not established. The holdout t-statistic is 0.36 against a 2.0 hurdle, and the pooled out-of-sample deflated Sharpe could not be computed.

Three walk-forward windows lost money (2021-11 to 2023-09). 2025 lost 1.9%. The holdout Sharpe is about 29% of the walk-forward figure.

The signal shows no forecasting information at the 4-hour horizon (IC -0.021). The edge comes from letting a few winning trends run, not from forecasting direction.

CAGR is a modest 6.5% and Calmar is 0.54. The longest drawdown lasted 825 days.

Two of five pre-registered predictions were missed: win rate 0.405 vs at least 0.42, and profit factor 1.44 vs at least 1.6.

Low confidence, not statistically proven: paper trading only, at reduced allocation, never live money on this evidence. Use the fixed parameters. Review after 30 closed paper trades (about 10 months). Retire if, at that review, average net trade return is below 0.40% or profit factor is below 1.10. Retire at any time if paper drawdown exceeds 18%. Flag for review any single trade that loses more than 3% of equity. Live trading needs a forward record that meets these criteria, or the owner's informed consent.

Risk Review

Statistical significance is not established. The final parameters were not accepted (outcome: not enough out-of-sample significance; the holdout was inconclusive). The final exam on record belongs to an earlier experiment and its window has already been read. This is low-confidence paper admission only and is not evidence for real money.

The ATR trailing stop is checked on the 4H close and sent as a market order. It is not resting at the exchange, so a gap can fill well past the planned level. Planned risk at the stop is risk_pct 1.011% of equity. The worst realised loss was 2.16% of equity (2018-10-10, -4.43% on a 48.75%-of-equity position) and the worst adverse excursion was 2.39%. Both are inside the 2% stop route plus its 1.5x realised allowance, but a fast BTC crash could exceed them.

Drawdown is long rather than deep. Max drawdown was 12.25% at 1x (bootstrap CI 6.4-19.2%, so the 18% pre-registered limit is inside the upper tail). The longest drawdown lasted 845 days, and the strategy had 12 losses in a row. 2018 (-7.5%) and 2022 (-5.9%) lost money, as did the LUNA and FTX windows (-1.5% and -2.7%).

Live book: no strategy is currently in breach, but there are many open execution items. BINANCE has 156 halts with no written cause; Bybit, Bybit spot, OKX spot and Deribit have paper legs that never reached the live book; OKX spot's realised execution cost is more than twice the modeled cost. None is on BINANCE_SPOT itself, but the BINANCE halts should be explained before this strategy's spot leg is mirrored live.

Correlation: this is a long-only port of BtcDualTimeframeMomentumConfluenceLS, so it uses the same signal, parameters and instrument. If the parent is deployed, this strategy's long legs will be close to 1:1 correlated with the parent's long side. Count them as one BTC-momentum risk budget, not two independent strategies.

Two of five pre-registered predictions were missed: win rate (dev 43.1%, checked 40.5%, vs at least 42%) and profit factor (1.44 vs at least 1.6). The win rate is carried by a payoff ratio of about 2.1 (avg win $1,815 vs avg loss $879), which fits trend following. No soft floors are in play. The in-sample Sharpe and win-rate advisories are in their non-blocking soak and need no waiver. deflated_sharpe could not be evaluated and is treated as unknown, not passed.

Paper only, with the low-confidence label. Real money needs forward paper evidence or the owner's informed consent, because no statistical acceptance exists.

Size this strategy and the futures parent BtcDualTimeframeMomentumConfluenceLS together under one BTC-momentum allocation, not as additive independent allocations.

Before going live on BINANCE_SPOT, explain the open BINANCE halts in the live-book self-assessment and confirm the spot mirror path delivers legs (the same failure mode is open on other spot venues).

Outcome Summary

Moving a futures long/short strategy to spot long-only can keep a real per-trade edge, but most of it comes from letting a few trends run rather than from forecasting direction (4-hour IC -0.021), so expect low statistical power and long flat periods: the longest drawdown lasted 825 days and the 2021-11 to 2023-09 windows lost money.

The backtest review chose to optimize, and the analyst then recommended promotion because the per-trade edge was well above the fee floor, drawdown was controlled, parameters were robust and the holdout was profitable. The strategy is now in paper trading, even though significance was not established (holdout t-statistic 0.36 against a 2.0 hurdle; deflated Sharpe could not be computed).

A long-only, 1x BTCUSDT spot version of the promoted futures strategy BtcDualTimeframeMomentumConfluenceLS: it buys BTC when both the 18-bar 4-hour return and the 15-bar daily return are positive, holds USDT otherwise, and exits on a 3.033x ATR trailing stop or when daily momentum turns negative. It was built as the first live-trading candidate for a spot-only venue.

The backtest from 2017-10 to 2026-03 returned +69.9% (CAGR 6.45%) on 309 long trades, with Sharpe 0.86, max drawdown 12.4%, profit factor 1.42, a 40.8% win rate and an average trade return of 1.04% of notional. In the analyst's review, pooled out-of-sample Sharpe was 0.95 across 9 walk-forward windows (6 positive), and the holdout made money at Sharpe 0.28 on 71 trades.

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