Skip to content

View translation

DogeAsianSessionVwapReversionLS

Hypotheses

DOGE Asian-Session Mean-Reversion, Long-Short (Single-Instrument BINANCE USD-M Perp, 30m Bars, Fade MODERATE Deviations From Session VWAP ONLY During the Low-Liquidity 00:00–08:00 UTC Window — Flat During Trending US/EU Hours, Session-Gated, High-Vol Instrument for Fee Viability, 3-Parameter)

Hypotheses

A LONG-SHORT, single-instrument price mean-reversion on DOGEUSDT.BINANCE (USD-M perp, 30m bars) whose distinguishing mechanism is a SESSION-OF-DAY gate — a dimension no deployed strategy uses. It extends the factory's ONE surviving non-carry mechanism (SOL intraday VWAP-reversion, paper stage) but is deliberately differentiated to avoid duplication and to dodge the fee graveyard that killed the AVAX/BNB/XRP 15m fades (~18% commission). Thesis: crypto's low-liquidity Asian session (00:00–08:00 UTC) sees prices over-extend on thin books and snap back, whereas the US/EU sessions are more directional/trending — so mean-reversion has a real edge in the Asian window and NEGATIVE expectancy when it fights US/EU trends. Mechanism: maintain a rolling session VWAP and a volatility-scaled deviation band; DURING the Asian window only, when the 30m close deviates MODERATELY (≥ entry_z, e.g. 1.5 vol-scaled units, NOT extreme) below VWAP go LONG, above VWAP go SHORT; OUTSIDE the window take no new entries and let any open position exit. It uses DOGE — the highest-volatility major — specifically so that moderate deviations are large in percent terms (routinely 0.5–1%+ per 30m bar), clearing the ~0.10% USD-M round-trip with margin where lower-vol names cannot, and 30m bars (vs the fee-dead 15m) to cut fill count. It is deliberately DIFFERENT from everything dying this session: NOT a flow-fade (the taker-flow signal measured −0.025%/trade — this fades statistical PRICE deviation, the mechanism that actually survived on SOL), NOT trend (regime-distributed reversion), NOT a basket (single-instrument, 2 fills/round-trip, sidesteps L12), NOT options/carry/daily-low-frequency, and NOT the already-dead AVAX/BNB/XRP 15m fades (different instrument, coarser bar, and a session gate they lacked). Fires most Asian sessions → dozens/hundreds of trades per year, clearing the ~1-year sandbox trade-count wall. 3 low parameters (VWAP/vol lookback, entry_z, exit) resist overfit.

Hypotheses

Iteration 5 addresses the backtest gate's finding (equity curve -100% while the mtm-series Sharpe read +0.49) with three targeted, mechanism-preserving fixes, starting from previous_code: (1) a fee-clearing edge gate - z is scale-free, so in quiet regimes a 1.5-ATR deviation on DOGE can be worth only ~0.1% of price, a trade whose entire reversion target is commission; entries now also require |close - VWAP|/close >= min_edge_pct (0.6%), which removes exactly the fee-dead fills that were bleeding the equity curve while keeping the fat Asian over-extensions the hypothesis is about; (2) reward/risk rebalance - STOP_ATR 2.5 -> 1.5, since the take-profit (VWAP touch) is only ~1.2 ATR of runway and a 2.5-ATR stop needed a ~68% win rate to break even; (3) POSITION_PCT 0.5 -> 0.15, so per-trade equity risk is ~0.1-0.2% instead of half a compounding equity curve, which is what turned an adverse streak into an unrecoverable/liquidating drawdown path and made the equity curve diverge in sign from the mtm series. The core mechanism is unchanged and still exactly the hypothesis: symmetric LONG-SHORT fade of moderate session-VWAP deviations gated to the 00:00-08:00 UTC Asian window on DOGE 30m, single instrument, 2 fills per round trip. Layer 1/1.5/2/3 structure, imports, signal continuity and the DOGEUSDT.BINANCE futures config are untouched. Note in the spirit of honest reporting: the surviving concern is whether the Asian-session fade has any positive gross edge at all on DOGE - these changes make the trade selection cost-aware and the sizing survivable, but if optimization still shows avg_trade_return_pct below the fee floor the mechanism, not the implementation, is the problem.

Hypotheses

Negative expectancy on a reliable 468-trade / 6-year sample: avg_trade_return_pct -0.064% (below ZERO, under the 0.15% Binance USD-M fee floor), profit_factor 0.742, total_return -18.2%, expectancy -$38.87/trade, Sharpe -0.42 (CI [-1.29, 0.33]). The trades correctly implement the hypothesis (balanced 216 long / 252 short, Asian-session VWAP fade), so this is a fair test of the session-gated mean-reversion premise — and the premise is falsified: the strategy loses in EVERY vol regime (calm -8.8%, normal -5.7%, stressed -12.0%) and essentially every calendar year. Commission is only 12.5% of gross, so this is NOT fee-fragility — the fade signal is gross-negative, with avg_loss ($373) ~2x avg_win ($188) because ATR stops + 08:00 force-flat truncate winners while losers run to stop (the exit profile QA flagged, confirmed on full history). QA's edge concern is borne out. The 3 tunable parameters cannot invert a PF-0.742, below-zero-expectancy signal. Matches L55 (single-name fade, PF < 1.15 / negative return -> abandon). Not worth 2 hours of optimization. abandon_class=negative_expectancy.

Implementation

Long-short intraday mean reversion on DOGEUSDT.BINANCE USD-M perp, 30m bars. Maintains a session VWAP anchored at 00:00 UTC (volume-weighted typical price, reset daily) and an ATR(lookback) volatility scale; the continuous signal is z = (close - VWAP)/ATR, emitted every bar. Entries are taken ONLY in the low-liquidity Asian window (00:00-05:00 UTC): a MODERATE deviation below VWAP (entry_z <= -z <= 3.0) goes LONG, a moderate deviation above goes SHORT, and an additional fee-clearing gate requires the raw deviation from VWAP to be at least min_edge_pct (0.6% default, ~6x the USD-M round trip). Exits are symmetric: reversion to within exit_z of VWAP, a 1.5-ATR stop against the position, a 16-bar max hold, or the 08:00 UTC session force-flat. No entries during US/EU hours; positions are always flat outside the window. Sized at 15% of equity notional, leverage 1.

Verification Results

Confirm FactoryStrategy calls this override; the code already guards defensively (calculate_signal returns z=0 and should_enter requires _atr>0, which is only set once len(bars) >= lookback+1), so risk is low.

Verification Results

min_bars_required(self) overrides a framework method (static-analysis base_shadow warning). If the base template does not honor the override for warm-up gating, the ATR/lookback warm-up may not be enforced before first entry evaluation.

Verification Results

Optimization of entry_z/exit_z/stop should target the win/loss magnitude balance, not just win rate; consider whether the session force-flat is systematically cutting reversion capture.

Verification Results

Exit profile is asymmetric in reward/risk realization: take-profit is the VWAP touch (~entry_z - exit_z ~= 1.2 ATR of runway) but the 08:00 force-flat and 16-bar max-hold can close winners early at unfavorable z, while the 1.5-ATR stop lets losers run full width. Sandbox avg_loss ~1.8x avg_win reflects this. Not a correctness defect — flagged for the optimizer/analyst.

Verification Results

Sandbox smoke test (80 trades / 346 days) shows avg_trade_return_pct 0.0234% — well below the ~0.15% USD-M fee floor — with total_return -1.58%, Sharpe -1.02, PF 0.79, and avg_loss ($226) ~1.8x avg_win ($125). The min_edge_pct 0.6% entry gate correctly filters fee-dead fills, so the shortfall comes from the exit profile: ATR stops and 08:00 force-flat truncate winners below their VWAP-reversion target while losers run to the 1.5-ATR stop. Regime split shows a positive 'calm' tercile (+0.49%, Sharpe 0.51) but negative 'normal'/'stressed' — the Asian-session fade may have edge only in low-vol regimes. This is unoptimized (single param draw, truncated window); the analyst should verify on full history whether per-trade edge can clear the fee floor before committing to optimization. If it cannot, the mechanism (not the implementation) is the problem.

Backtest Review

Trades correctly implement the hypothesis: balanced long/short (216 long / 252 short), session-gated Asian-window fade, 468 trades over 6 years — a reliable, decisive sample and a fair test of the premise.

Backtest Review

Not a fee-fragility case: commission is only 12.5% of gross (total_commission $6,560 on gross), so the failure is a real gross-negative signal, not costs eating a thin edge.

Backtest Review

Negative expectancy on full history: avg_trade_return_pct -0.064% (BELOW ZERO and far under the 0.15% USD-M fee floor), profit_factor 0.742, total_return -18.2%, expectancy -$38.87/trade, Sharpe -0.42 (CI [-1.29, 0.33]).

Backtest Review

Adverse geometry: win_rate 0.596 but avg_loss ($373) ~2x avg_win ($188) — the 1.5-ATR stop + 08:00 force-flat truncates winners while losers run, exactly the exit-profile problem QA flagged, now confirmed on full history.

Backtest Review

Premise falsified across regimes and time: loses in EVERY vol tercile (calm -8.8%, normal -5.7%, stressed -12.0%) and in essentially every calendar year (2021 -6.3, 2022 -5.0, 2023 -0.4, 2024 -5.6, 2025 -4.0). The QA-noted 'calm' edge does not survive on the full sample.

Backtest Review

The 3 tunable parameters (lookback, entry_z, exit_z/min_edge_pct) cannot invert a PF-0.74, below-zero-expectancy signal — there is no positive gross edge to tune toward.

Analysis

Backtest gate: - metrics unreliable: Incoherent: Sharpe 0.49 disagrees in sign with total_return -100.00% — the Sharpe is computed from the mtm_equity_curve series while the return comes from the equity curve. Judge on the equity curve.

Iteration History

Verification failed (Layer 4 — QA review): - The edge is measurably negative and below fees. On a statistically meaningful 172-trade sample (metrics_reliable=true), avg_trade_return_pct is +0.0057% -- essentially zero and an order of magnitude below the 0.15% futures floor and the ~0.10% round-trip cost. The dollar-weighted result is clearly negative: profit_factor 0.631, total_return -15.19%, avg_trade_pnl_usd -$88, max_drawdown 18.1%. This directly FALSIFIES the hypothesis's central fee-viability claim -- that DOGE's volatility makes moderate VWAP deviations '0.5-1%+ moves that clear the round-trip with margin.' The measured per-trade edge (~0.006%) shows the Asian-session reversion does not materialize with enough magnitude or reliability to clear costs. - Structurally inverted reward/risk guarantees negative expectancy. Exits revert to within exit_z=0.3 of VWAP (small, capped wins) while the stop is 2.5*ATR (large losses), so despite win_rate 0.547 the avg_loss ($527) is ~1.9x the avg_win ($276) and expectancy is -$88/trade. Fat-tailed losses (kurtosis 19.9, largest_loss -$2,294 vs largest_win $1,153) and high turnover (120, total_impact $7,154) compound the drag. A mean-reversion book that caps wins near the mean but lets losses run to a wide ATR stop is mathematically biased toward losing unless the reversion hit-rate is far above 55%. - High turnover (120 over 336 days, 172 trades, $7,154 impact ~7% of a ~$100k book) makes this strategy especially cost-sensitive. Even a small genuine reversion edge would be eroded by the round-trip fees and impact at this trade frequency. The session gate helps selectivity but the 30m fade still churns heavily.

Iteration History

Verification failed (Layer 4 — QA review): - The iter-2 reward/risk fix empirically FAILED and the edge is still measurably negative below fees. The developer tightened STOP_ATR 2.5->1.5 and raised entry_z 1.5->2.0 expecting reward 1.7 ATR vs risk 1.5 ATR (R:R 1.13, positive expectancy). The sandbox shows the opposite: profit_factor 0.469 (WORSE than iter-1's 0.631), avg_trade_return_pct -0.143% (still negative, below the 0.15% floor and ~0.10% round-trip), total_return -12.65%, and the realized reward/risk is MORE inverted, not less -- avg_loss $596 is ~2.2x avg_win $272 (iter-1 was 1.9x). On 81 trades (metrics_reliable=true) the negative edge is clear. - Root cause of the failed fix: the theoretical reward (entry_z - exit_z = 1.7 ATR) is not realized because wins are capped early by non-reversion exits while losses realize in full. Positions are entered at |z|>=2.0 but exit on the EARLIEST of reversion-to-VWAP, session end (force-flat outside 00:00-08:00 UTC), OR the 16-bar cap -- with avg_holding only 2h, many wins close small at session end / time cap far below the 1.7-ATR target, whereas adverse trades run to the full 1.5-ATR stop. Additionally, raising entry_z to 2.0 fades LARGER deviations that on DOGE are more likely genuine continuation, so stops hit more (long_win_rate 0.45). Capped wins + full-size stops + fading continuation = a structurally inverted realized payoff regardless of the nominal R:R.

Iteration History

Verification failed (Layer 4 — QA review) [class=hypothesis_mismatch]: - [edge_concern] Even as a standalone (non-hypothesis) strategy the reorientation has no edge: the short-only continuation version loses -23.06% with PF 0.887, Sharpe -0.41, negative benchmark_correlation -0.37 and a 42% max drawdown over 345 trades. avg_trade_return_pct is only +0.024% (barely above zero per-notional while the equity curve is deeply negative), and it is now single-direction short-biased (0 long trades) which the developer themselves flag as single-regime risk. The flip was reverse-engineered from the prior iteration's 41-trade win-rate split — an in-sample sample far too small to justify inverting the mechanism, and the fuller 345-trade run confirms that split was noise, not signal. - DIRECTION + CORE-MECHANIC MISMATCH. The hypothesis is explicitly LONG-SHORT and a FADE of the post-flush 'self-exhausting' move: 'go LONG if price fell (longs flushed / down-cascade), go SHORT if price spiked up' — a mean-reversion bounce ('price snaps back'). The iteration-3 code instead SHORTS BOTH cases: for a sharp DROP it returns OrderSide.SELL labeled 'ride continuation down' (momentum CONTINUATION — the exact inverse of the hypothesis's fade for the down case), and it removes the long side entirely (sandbox: long_trades 0, short_trades 345). So the code implements a SHORT-ONLY, half-continuation strategy, not the LONG-SHORT post-flush bounce the hypothesis names. Per checklist item 1 both the direction (both -> short-only) and the core edge (self-exhausting fade -> down-continuation) contradict the hypothesis, which is a critical mismatch: a backtest of this code does not test the stated hypothesis and would mislabel a continuation strategy as an OI-flush reversion in the knowledge base. The reorientation was also fit in-sample to the prior 41-trade win-rate split (long_win_rate 0.37), i.e. reverse-engineered from QA's own numbers rather than the hypothesis.
Strategy report

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