Skip to content
All strategies

Strategies

BTC 4H Asian-Session Move US-Open Reversal Long-Short (BINANCE USD-M Futures, 4H, OHLCV-Only, Time-of-Day Mechanism)

Outcome: Abandoned

BtcFourHourAsianSessionUSOpenReversalLongShort

Outcome Summary

This strategy set out to exploit a documented pattern of US-session institutional flow reversing large Asian-session retail moves, trading BTCUSDT 4H long and short with pure OHLCV time-of-day signals to fill under-represented long-short and session-based portfolio buckets. The implementation was sound — 498 balanced trades, no pipeline drops — but the economics were not: it lost -73.7% with a -1.66 Sharpe (full CI below zero), a 0.73 profit factor, and losses in six of seven years, with fees eating 18.5% of gross. The analyst abandoned it at the pre-optimization backtest-review gate, judging the contrarian session-flow edge simply nonexistent rather than a fixable sign or parameter issue. Optimization, analyst promotion review, and risk review were never reached; the premise, not the code, was the failure.

Hypothesis

Single-instrument long-short session-boundary reversal strategy on BTCUSDT.BINANCE that exploits the empirically documented pattern of US trading session institutional flow reversing Asian session retail flow. Crypto markets trade 24/7 but participant composition shifts dramatically across the day: 00:00-08:00 UTC is dominated by Asia-Pacific retail and prop flow; 12:00-20:00 UTC is dominated by US institutional and quant flow. Academic research (Aalborg et al. 2019 'What can explain the price, volatility and……Show moreShow less

Single-instrument long-short session-boundary reversal strategy on BTCUSDT.BINANCE that exploits the empirically documented pattern of US trading session institutional flow reversing Asian session retail flow. Crypto markets trade 24/7 but participant composition shifts dramatically across the day: 00:00-08:00 UTC is dominated by Asia-Pacific retail and prop flow; 12:00-20:00 UTC is dominated by US institutional and quant flow. Academic research (Aalborg et al. 2019 'What can explain the price, volatility and trading volume of Bitcoin?', Caporale et al. 2020 'Cryptocurrency anomalies') documents that significant Asian-session price moves are statistically faded during the US session about 56-62% of the time, particularly when the Asian move is large relative to recent volatility. Strategy: at the close of the 08:00 UTC bar (end of Asian session), compute cumulative return over the prior two 4H bars (00:00 and 04:00 UTC bars = full 8h Asian session). If cumulative return is >+1.5% (Asian rally), enter SHORT at the next 12:00 UTC bar's open (US session start). If cumulative return is <-1.5% (Asian dump), enter LONG at the next 12:00 UTC bar's open. Exit by end of US session (20:00 UTC bar close) or earlier on profit target / stop. ZERO SUPPLEMENTARY DATA, ZERO EXTRA INSTRUMENTS, ZERO EXTRA BAR TYPES — purely BTCUSDT.BINANCE-4-HOUR OHLCV with time-of-day extracted from bar.ts_init nanosecond timestamp. This is the SAME proven data path as the landed BtcFourHourVolumeBreakoutLong and my four already-in-pipeline BTC 4H hypotheses (BtcAggressorFlowProxy, BtcConsecutiveDirectionalStreak, BtcOpenInterestSurgePriceExtension, BtcRangeExpansionExtremeCloseRejection). Fills three under-represented portfolio buckets that NONE of my prior hypotheses addressed: (1) long-short direction (currently 9.7% vs ≤55% long-only ceiling — most-violated quota); (2) TIME-OF-DAY / SESSION-BASED mechanism class (entirely absent from all 954 experiments in portfolio — zero strategies use intraday session structure as a signal); (3) calendar/structural-flow mechanism (orthogonal to volume, momentum, mean reversion, funding, positioning, microstructure, options — it's a participant-composition signal). Expected ~50-100 entry cycles per year × 6 years of BTC 4H data ≈ 300-600 trades, comfortably above walk-forward sample-size floor. Mechanism is BTC-specific (calibrated to BTC's session participant dynamics), structurally immune to AVAX-style cross-asset analog overfitting since no claim of family-portability.

Iteration 2 fix for the Layer-2 failure: `_ts_to_sec` was a @staticmethod but the synthetic-scenario proxy invoked it bound (passing self), raising 'takes 1 positional argument but 2 were given'. The smallest fix is to make `_ts_to_sec` a normal instance method (`def _ts_to_sec(self, ts)`); all call sites already use `self._ts_to_sec(...)`, and the timestamp-scaling logic, session-fade signal, sizing, and exits are unchanged so earlier passing layers stay green. Implements the hypothesis exactly: participant-composition contrarian fade of the Asian session at the US open, long-short on the short-capable BINANCE futures venue with genuine leverage consumption.

Functioning implementation of a losing hypothesis — the 'fade the Asian-session move at the US open' edge does not exist at BTC 4H as built. Negative expectancy is uniform across the entire sample: total_return -73.7%, Sharpe -1.66 with the full CI below 0 (ci_high -0.27), PF 0.73, PSR 0.0087, and losses in 6 of 7 years (2020 -40%, 2023 -20%, 2024 -27%, 2025 -16%). Both directions lose (long_win_rate 0.485, short_win_rate 0.449) and fees consume 18.5% of gross, so this is not a directional-sign or parameter problem a sweep can fix — the contrarian session-flow signal has no edge in any regime. Optimization cannot rescue a consistently negative expectancy across 6+ years; do not spend the 2-hour sweep. (This is an abandon, not iterate: the code correctly implements the premise; the premise is wrong.)

Implementation

BTC 4H long-short session-boundary reversal on BINANCE USD-M futures. At the 12:00 UTC US-open bar it measures the same-day Asian session move (00:00 bar open to 04:00 bar close). If the Asian move exceeds +1.5% it shorts (fades the rally); below -1.5% it goes long (fades the dump). Exits at/after the 20:00 UTC US-close bar, or on a 3% take-profit / 2.5% stop / 3-bar max hold. Pure OHLCV, time-of-day derived from bar.ts_init; leverage 2.0 (~1.2x equity notional).

Verification Results

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['vol_window', 'min_notional', 'position_pct', 'us_open_hour', 'max_hold_bars', 'stop_loss_pct', 'us_close_hour', 'asian_open_hour', 'take_profit_pct', 'asian_close_hour', 'asian_move_threshold'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: TypeError: BtcFourHourAsianSessionUSOpenReversalLongShort._ts_to_sec() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000) - steady_downtrend:……Show moreShow less

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['vol_window', 'min_notional', 'position_pct', 'us_open_hour', 'max_hold_bars', 'stop_loss_pct', 'us_close_hour', 'asian_open_hour', 'take_profit_pct', 'asian_close_hour', 'asian_move_threshold'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: TypeError: BtcFourHourAsianSessionUSOpenReversalLongShort._ts_to_sec() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000) - steady_downtrend: TypeError: BtcFourHourAsianSessionUSOpenReversalLongShort._ts_to_sec() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000) - flat_ranging: TypeError: BtcFourHourAsianSessionUSOpenReversalLongShort._ts_to_sec() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000) - volatility_spike: TypeError: BtcFourHourAsianSessionUSOpenReversalLongShort._ts_to_sec() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000) - zero_volume: TypeError: BtcFourHourAsianSessionUSOpenReversalLongShort._ts_to_sec() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000) - price_gap: TypeError: BtcFourHourAsianSessionUSOpenReversalLongShort._ts_to_sec() takes 1 positional argument but 2 were given (bar timestamp: 1735691460000)

Backtest Review

Sharpe
-1.66
Total return
-73.66%
Max drawdown
75.78%
Trades
498
Win rate
46.6%
Profit factor
0.73

Code is functioning and faithful to the hypothesis: 498 clean trades, balanced long/short (235/263), 4h session holds, zero pipeline drops

Adequate sample and genuine long-short direction as intended — this is not a no-trade or degenerate case

No edge in any regime: total_return -73.7%, Sharpe -1.66 with the entire CI below zero (ci_high -0.27), profit_factor 0.73, PSR 0.0087, negative expectancy

Losing in 6 of 7 years (2020 -40%, 2023 -20%, 2024 -27%, 2025 -16%) — the session-fade premise fails consistently, not just in one regime

Fee-fragile: commission is 18.5% of gross; frequent 4h session round-trips bleed cost on top of a negative gross edge

avg_trade_return negative and max drawdown 75.8% — fundamentally unviable

Outcome Summary

A clean, well-implemented session-fade premise on BTC 4H has no exploitable edge once fees are applied, so future work should validate the raw directional signal before building a fee-heavy round-trip strategy around it.

The backtest-review gate returned an 'abandon' verdict before optimization ran: the code faithfully implemented the hypothesis but the edge was negative and uniform across the sample (losses in 6 of 7 years), so a parameter sweep could not rescue a consistently negative expectancy.

A long-short BTCUSDT 4H futures strategy that faded large Asian-session (00:00–08:00 UTC) price moves at the US session open (12:00 UTC), shorting Asian rallies and buying Asian dumps on a participant-composition/session-flow thesis.

Over 498 trades (235 long, 263 short) on ~6 years of data it lost -73.7% total return with a Sharpe of -1.66 (entire CI below zero, ci_high -0.27), profit factor 0.73, win rate 46.6%, negative expectancy (-147.85), and a 75.8% max drawdown. Both directions lost (long win rate 0.485, short 0.449) and commissions consumed 18.5% of gross.

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