Skip to content

View original

DogeFundingConfirmedOverextensionReversal

Hypotheses

Funding-Confirmed Overextension Reversal, Single-Venue Long-Short (Single-Instrument DOGEUSDT.BINANCE USD-M — Fade a Price Move Stretched Far From Its Moving Average ONLY When FUNDING Is Simultaneously at a Crowding EXTREME (the Stretch Is Leverage-Driven, Not Organic Demand); Require Both Gates to Align, Exit on Reversion-to-Mean / Funding Normalization / Time, 3-Parameter)

Hypotheses

A LONG-SHORT, SINGLE-INSTRUMENT, SINGLE-VENUE mean-reversion strategy on DOGEUSDT.BINANCE USD-M perpetual. The edge uses FUNDING RATE — a reliable, well-populated catalog feed — as a genuinely orthogonal CONFIRMATION gate, not as the traded signal itself, which distinguishes it from every dead funding idea (funding mean-reversion, funding-crowding relative-value PAIRS, cross-venue funding carry). It is the reversion analog of the factory's one proven survivor (dual-signal CONFLUENCE): a directional reversion trade fires ONLY when TWO independent conditions align — (1) price is stretched far from its moving average (overextended), AND (2) funding is simultaneously at a crowding extreme in the same direction. Mechanism: a price stretch that coincides with extreme funding is being driven by CROWDED LEVERAGE (longs aggressively paying to chase, or shorts paying to press) rather than organic spot demand — leverage-driven extensions are fragile and mean-revert as the crowded side is forced to de-risk. A stretch WITHOUT a funding extreme is likely organic and is NOT faded (the second gate filters out the false reversion signals that make naked mean-reversion unprofitable in crypto). When price is >X above its MA AND funding is extremely POSITIVE (longs overcrowded), SHORT the reversion; when price is >X below its MA AND funding is extremely NEGATIVE (shorts overcrowded), LONG the reversion. DOGEUSDT chosen because it is a high-retail-crowding, high-volatility major perp where funding extremes are frequent and reversion moves are large (targets clear the 0.10% USD-M round trip with margin); it also diversifies away from the 2%-survival BTC tag. Single-venue, single-instrument — no cross-venue leg problem (L44), no options/IV feed (L43). Funding is orthogonal to the price series and its crowding mechanism is not a re-derivation of trend (satisfies L42). 3 parameters to resist overfit. Instruments: ["DOGEUSDT.BINANCE"]. venue_type: futures. data_requirements: ["ohlcv", "funding_rate"].

Hypotheses

Iteration 2 fixes exactly the reported Layer-2 failure and nothing else. The TypeError came from a name collision: my helper `_bar_interval_ns(self)` shadowed the base class's static `FactoryStrategy._bar_interval_ns(bar_type)`, which `FactoryStrategy.__init__` calls as `self._bar_interval_ns(self.bar_type)` (base_template.py:131) — so every instantiation crashed at construction. I removed the override, compute `self._interval_ns = int(self._bar_interval_ns(self.bar_type))` once in `__init__` using the base helper, and renamed the local accessor to `_hold_interval_ns()` (bar-type interval, with the observed-bar-delta fallback retained for the case where the helper returns 0). All signal, gating, exit and sizing logic is unchanged, and imports stay clean so Layer 1 remains green. The confluence structure implements the hypothesis directly: the continuous fade score `-dev_z` is returned every bar (never gated to a constant), and the orthogonal funding-crowding z-score is applied as the second entry condition in `should_enter`, with no price-only fallback when funding data is missing.

Hypotheses

Losing strategy with negative per-trade edge: profit_factor 0.771, total_return -32.6%, avg_trade_return_pct -0.266% (negative), and expectancy -$99.56/trade over 304 trades. Risk-adjusted metrics are uniformly negative (Sharpe -0.503, CI [-1.11, 0.11]; probabilistic_sharpe 0.063; IR -0.72; alpha -0.027) with max_drawdown 37.6% and losses in most calendar years. This is a single-name funding-confirmed mean-reversion/fade — the mean_reversion class has 0/174 survivors (L55) and PF<1.15 with negative return is the canonical abandon signature; the orthogonal funding-confirmation second gate did not remove the false reversion signals as hypothesized. Already abandoned at iteration 2; 3-parameter tuning cannot turn a negative-expectancy fade into a viable book. Failure pattern: single-name crypto mean-reversion fade with edge below/behind costs (fee_edge/no_edge).

Implementation

Long-short mean-reversion on DOGEUSDT.BINANCE USD-M 1H perps. Fades a price stretch from its SMA (deviation z-score) ONLY when the perp funding rate is simultaneously at a crowding extreme in the same direction (funding z-score), i.e. the stretch is leverage-driven rather than organic. Short when stretched up + funding richly positive; long when stretched down + funding deeply negative. Exits on reversion to the MA, funding normalization, ATR stop, or a calendar-anchored time stop. Risk-based sizing with an independent notional cap; leverage 1.0.

Verification Results

CLEAN RESTART 2026-09-04 — this run's verdict history and learning records were removed and it was restarted from verification. Its previous abandonment came from the pipeline, not from the market: the Layer-2 harness mis-bound @staticmethod helpers (fixed), QA issued terminal performance verdicts on an unoptimized smoke test (removed — QA now judges correctness only), and sandbox timeouts came from backtest-slot starvation (fixed). The hypothesis and the strategy code are unchanged. Verify the code on its merits; performance is decided later by the full backtest and the optimizer.

Verification Results

Consider a partial-reversion take (exit when |dev_z| falls below a fraction of stretch_z, or a profit target); let the optimizer choose the exit z-level.

Verification Results

The reversion exit only fires when dev_z returns all the way to zero (long: dev_z>=0; short: dev_z<=0). A trade that reverts most of the way (e.g. dev_z from -1.5 to -0.2, a clear profit) is held to full mean-touch, so favourable partial reversions are surrendered if price re-stretches. 'Exit on reversion-to-mean' makes a full-touch reading defensible, but it widens the give-back and feeds the avg_win<avg_loss asymmetry seen in the sandbox.

Backtest Review

Clean, verification-safe construction: single venue/instrument, orthogonal funding-confirmation gate, well-populated feed; 3 tunables; adequate trade count (304).

Backtest Review

Loses money: profit_factor 0.771 (<1.0), total_return -32.6%, negative expectancy (-$99.56/trade), and avg_trade_return_pct is NEGATIVE (-0.266%).

Backtest Review

No risk-adjusted edge: Sharpe -0.503 (CI [-1.11, 0.11]), probabilistic_sharpe 0.063, information_ratio -0.72, alpha -0.027.

Backtest Review

max_drawdown 37.6% (CI high 65%); annual returns negative in most years (2021 -10.6%, 2024 -12.7%, 2025 -15.1%).

Backtest Review

Single-name mean-reversion/fade — the mean_reversion class is 0/174 survivors (L55); the funding-confirmation gate did not lift it over costs.

Backtest Review

Already abandoned at iteration 2; the mechanism repeatedly yields a negative-edge fade.

Outcome Summary

This strategy tried to fix naive crypto mean-reversion's chronic failure by requiring two independent gates to align — price stretched far from its moving average AND funding at a crowding extreme in the same direction — on the theory that a stretch backed by crowded leverage is fragile and will snap back while an organic stretch should be left alone, the reversion analog of the factory's confluence survivor. The construction was clean and data-safe on DOGE's well-populated funding feed, but the backtest falsified the premise: profit factor 0.84, a -30.1% return, a negative per-trade edge, and the tell-tale small-wins/large-losses pattern (54.7% win rate but bigger losers than winners), losing in most years and bleeding recently. The analyst abandoned it at backtest review as a decisive, wrong-signed net loser in the repeatedly-dead mean-reversion/fade family — the funding gate did not rescue it, exactly as the ETH funding-gated reversion had failed that same session — with no edge anywhere in the parameter space to optimize toward.

Outcome Summary

Adding an orthogonal funding-crowding confirmation gate does not rescue crypto mean-reversion — the dual-gate confluence still produced the small-wins/large-losses signature and a negative per-trade return, confirming that fading price stretches (even leverage-driven ones) is wrong-signed on DOGE with no parameter region to tune toward.

Outcome Summary

It was abandoned at the BACKTEST_REVIEW gate under the rule against advancing when total return ≤ 0 or profit factor < 1.0: the funding-confirmation premise was falsified — the dual-gate confluence still lost across the sample, exactly like the ETH funding-gated reversion abandoned earlier that session. Because the per-trade return is negative (wrong-signed) rather than merely thin, no fee/frequency/threshold change could help, so it never reached optimization or analysis.

Outcome Summary

A long-short, single-instrument, single-venue mean-reversion strategy on the DOGEUSDT.BINANCE USD-M perp that fades a price stretch away from its moving average only when funding is simultaneously at a crowding extreme in the same direction — a dual-gate confluence (overextension AND funding crowding) meant to fade only leverage-driven stretches and skip organic ones — exiting on reversion to the mean, funding normalization, an ATR stop, or a time stop.

Outcome Summary

It was a decisive net loser: profit factor 0.84, total return -30.1%, avg_trade_return_pct -0.233% (negative, expectancy -$68.7/trade), Sharpe -0.495 (CI [-1.11, 0.20], probabilistic Sharpe 0.068), max drawdown 38.0% over 298 trades. Win rate was 54.7% but avg loss ($937) exceeded avg win ($651) — the classic small-wins/large-losses failure of crypto mean-reversion — and it was negative in 4 of 7 years, bleeding in the recent regime (2024 -11.8%, 2025 -14.0%).

Iteration History

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['stop_atr', 'z_window', 'funding_z', 'ma_period', 'risk_frac', 'stretch_z', 'atr_period', 'min_stop_pct', 'max_hold_bars', 'funding_exit_z', 'max_notional_frac', 'funding_max_stale_hours'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: Setup error: TypeError: DogeFundingConfirmedOverextensionReversal._bar_interval_ns() takes 1 positional argument but 2 were given - steady_downtrend: Setup error: TypeError: DogeFundingConfirmedOverextensionReversal._bar_interval_ns() takes 1 positional argument but 2 were given - flat_ranging: Setup error: TypeError: DogeFundingConfirmedOverextensionReversal._bar_interval_ns() takes 1 positional argument but 2 were given - volatility_spike: Setup error: TypeError: DogeFundingConfirmedOverextensionReversal._bar_interval_ns() takes 1 positional argument but 2 were given - zero_volume: Setup error: TypeError: DogeFundingConfirmedOverextensionReversal._bar_interval_ns() takes 1 positional argument but 2 were given - price_gap: Setup error: TypeError: DogeFundingConfirmedOverextensionReversal._bar_interval_ns() takes 1 positional argument but 2 were given
Strategy report

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