Skip to content

View translation

DogeTakerExhaustionReversionLS

Hypotheses

DOGE USD-M Taker-Aggression Exhaustion Reversion, Long-Short (Single-Instrument BINANCE Perp, 15m Bars, Fade Price When the Per-Bar TAKER-BUY VOLUME FRACTION Hits a Crowd-Extreme AND Price Is Stretched — Retail-FOMO/Panic Exhaustion, an Order-Flow Signal No Deployed Strategy Uses, Invalidation-at-Extreme Stop, 3-Parameter)

Hypotheses

A LONG-SHORT, single-instrument, SHORT-HORIZON reversion on DOGEUSDT.BINANCE (USD-M perp, 15m bars) whose signal is ORDER-FLOW aggression, not price geometry — a dimension no deployed strategy uses (the deployed SOL winner fades a price z-score off VWAP; the accepted AVAX sibling fades a failed-breakout wick; this fades a TAKER-FLOW extreme). Every Binance kline already carries taker_buy_base_volume, so per bar we compute taker_buy_fraction = taker_buy_volume / total_volume — the share of volume executed by AGGRESSIVE market buyers. DOGE is chosen deliberately: as the most retail-driven major, its taker flow swings to the most extreme crowd readings, so exhaustion is a strong, real signal. The thesis: when taker_buy_fraction spikes to a rolling crowd-extreme (retail FOMO buying climax) WHILE price is stretched above a short mean, the marginal aggressive buyer is exhausted and price mean-reverts; symmetric for a taker-SELL climax into a stretched-down price → long. Entry sits at the exhaustion extreme with a TIGHT invalidation stop just beyond the bar extreme, so reward:risk is structurally positive — the small-win/big-loss inversion that killed the RSI/Keltner/session-VWAP fades is designed out. This is NOT a continuous price-deviation fade (the signal is flow, gated by extension), NOT a rank/rotation basket (L12/L24), NOT carry/basis (dead), NOT options (L23), NOT liquidation-feed dependent (L3 — taker fraction comes from the kline, deep multi-year history, not the 90-day liquidations feed), NOT funding-directional (L13). Near-pure-OHLCV (taker volume ships with the bar); 3 parameters (taker-fraction lookback, extreme percentile, ATR extension/stop multiple).

Hypotheses

Iteration 2 applies the two code fixes the QA named, copied verbatim from the accepted AVAX sibling (AvaxLiquiditySweepReversalLS_v2), and changes nothing in the taker signal logic that already passed Layers 1-3. FIX 1 (catastrophic sizing -> liquidation): removed the leverage multiplier from the notional cap (now max_qty = equity*max_notional_frac/price), lowered defaults to risk_per_trade 0.005 and max_notional_frac 0.35, and set config leverage=1.0. The tight stop can no longer inflate exposure past the 0.35x-equity cap, so the notional/shrinking-equity spiral and liquidation are impossible; per-trade equity risk is ~0.2-0.5%. leverage is now 1.0 and unreferenced in sizing, so the leverage_set_but_unused gate does not fire. FIX 2 (soft close-based stops, unprotected intrabar, fat-tailed losses): overrode _submit_entry to submit a REAL OCO bracket via order_factory.bracket() -- market entry + stop_market SL at _active_stop + limit TP at _active_target (1.5R) -- so the stop fills intrabar at ~1R and losers can no longer overshoot on 15m gaps; overrode _submit_exit to cancel_all_orders then close_position for the time-stop path; simplified should_exit to a time-stop backstop only (the bracket children govern price exits and are skipped by the base orders_open guard while live). Verified against the installed NautilusTrader API: submit_order_list, cancel_all_orders, close_position exist and order_factory.bracket accepts sl_trigger_price/tp_price with inst.make_price. Imports remain clean (added only the stdlib-adjacent nautilus enum TimeInForce; no banned modules). ISSUE 3 (57-day taker_ratio data wall) is a structural feed limitation, not a code flaw -- there is no per-bar taker source with deeper history (the NT Bar carries only total volume), so it cannot be fixed in code; it is disclosed honestly and may cap promotability via walk-forward/holdout, but the sizing and stop fixes are the correct response to the Layer-4 failure and let the strategy be evaluated on its within-window merits.

Hypotheses

The strategy is both mis-implemented and a decisive loser where it trades. Data-source flaw: the hypothesis specifies the kline's taker_buy_base_volume (deep multi-year history), but the code reads supp['taker_ratio'] — the shallow Binance-futures metrics feed (funding_events_available=65) — so despite a 2020-start / 211,740-bar run, ALL returns fall in a single ~2-month window (2026-03-28→2026-05-19, annual_returns only 2026: -35.4%). The signal is therefore essentially unmeasured over history AND, within the window it did trade, decisively negative: profit_factor 0.266, expectancy -$77.83 over 455 trades, avg_trade_return_pct -0.028%, Sharpe -1.0 (CI [-2.18,-0.82]). The 'positive reward:risk by design' claim failed exactly as in the prior fades — avg_loss $172 is 2.3x avg_win $73 at 38% win rate despite the hard OCO bracket (return_skew -39, kurtosis 1705). This is a near-duplicate of the already-dead taker-flow fade (-0.025% sibling ≈ -0.028% here) and sits in the definitively-dead single-name reversion family (DOGE VWAP, ADA RSI-2, LINK Keltner, SOL-OI all abandoned). Iterating to re-source the data would only re-run a known-dead reversion class over more history at the cost of a coding+backtest cycle, and optimizing taker_lookback/extreme_pct/ext_k cannot flip a PF-0.27 negative-expectancy signal. Note for the research lead: if the order-flow-exhaustion mechanism is retried, it must (a) use the full-history kline taker_buy_base_volume field, not the shallow taker_ratio feed, and (b) be on a directional/continuation framing rather than a single-name mean-reversion fade, which has zero survivors this session. Not worth 2 hours of optimization.

Implementation

Long-short, single-instrument order-flow reversion on DOGEUSDT.BINANCE USD-M perp (15m bars). Signal is taker aggression: taker_buy_fraction = buy_vol/(buy_vol+sell_vol) from the Binance taker_ratio feed and its rolling percentile. A buy climax (percentile >= extreme_pct) while price is stretched above a short SMA by >= ext_k*ATR SHORTs the exhaustion; the symmetric sell climax into a stretched-down price goes LONG. calculate_signal returns a continuous signed conviction = -(2*percentile-1) when the flow+extension gate fires, 0 off-event. Every entry is an OCO bracket: market entry + a real stop_market stop just beyond the exhaustion bar's extreme (high/low +/- stop_buffer*ATR) + a limit take-profit at a fixed 1.5R, so losses are capped intrabar and reward:risk is positive by construction. Sizing is risk-based (risk_per_trade / stop distance) HARD-capped at max_notional_frac (0.35) of equity notional with NO leverage multiply; leverage=1.0. should_exit is a time-stop backstop only. 3 core params: taker_lookback_days, extreme_pct, ext_k.

Verification Results

Verification failed (Layer 4 — QA review): - Catastrophic position sizing -> liquidation, IDENTICAL to the AVAX sibling's iteration-1 defect already flagged and fixed there. max_qty = equity*max_notional_frac*leverage/price = 0.6*3.0 = 1.8x equity notional, and tight sweep stops push risk_qty above 1x too, so the book runs heavily levered. Sandbox: total_return -100%, max_drawdown 100%, liquidated=true 2026-04-24, avg_position_pct 1199% (notional/shrinking-equity spiral), total_impact_usd $92,336 at turnover 645x. The rationale repeats the same false 'per-trade risk ~0.75%' claim; multiplying the notional cap by leverage IS the blowup. The dev says it reuses the accepted AVAX structure but copied the PRE-FIX version (AVAX removed the multiplier and set leverage 1.0). - Soft close-based stops with NO real protective order, again identical to AVAX iter-1. should_exit compares bar CLOSE to _active_stop and exits at market next, so intrabar the position is unprotected and losers fill far beyond the stop on 15m DOGE gaps. Metrics: avg_loss $959 = 4.2x avg_win $229, profit_factor 0.175, return_skew -14.68, kurtosis 235.96, largest_loss -$2752 — the inverted-RR/fat-tail signature the hypothesis claims to design out. The accepted AVAX iteration fixed this with a real order_factory.bracket() via overridden _submit_entry; this code has none. - Disclosed data wall: the DOGE taker_ratio feed spans only ~57 days (~2026-03-23 to 2026-05-19), so the signal can only fire in that window and all 321 sandbox trades concentrate there. Even after sizing/stop fixes this cannot support 3-phase walk-forward/holdout (needs multiple IS/OOS windows), and 57 days of one regime cannot validate a reversion edge OOS. Structural feed limitation, not a code flaw, but likely makes the strategy unpromotable as specified.

Verification Results

Analyst should ABANDON at BACKTEST_REVIEW — measurably edge-negative and the gap risk defeats the invalidation-stop thesis on DOGE.

Verification Results

Decisive negative edge (analyst call, not a code defect): even with the corrected sizing and real OCO bracket, the taker-exhaustion signal has no edge on DOGE. total_return -35.5%, Sharpe -2.05 with CI [-4.73, -0.93] (entirely below zero — a confident negative, not noise), profit_factor 0.27, win_rate 0.38, avg_loss $173 = 2.4x avg_win $73, kurtosis 160, max_drawdown 36.2%, over 455 trades. The fat tail persists because DOGE's 15m microstructure gaps through even a real stop_market worse than AVAX did (the bracket is the verbatim, functioning AVAX version — DOGE gap risk, not a new bug). Unlike the prior DVOL fail (37 trades = noise), the edge here is measurable and clearly negative.

Verification Results

Flag to Research: the 'deep multi-year taker history' premise is false (feed ~57 days); revise the signal source or abandon the line rather than re-iterating code.

Verification Results

Structural 57-day data wall (disclosed): the DOGE taker_ratio feed spans only ~57 days, so all 455 trades fall in one regime and the signal can't exist outside it. This makes walk-forward/holdout validation impossible (3-phase optimization needs multiple IS/OOS windows), so the strategy is structurally unpromotable even if the edge were positive, and it contradicts the hypothesis's explicit 'deep multi-year history' premise. Moot for this run (negative edge abandons first) but means the hypothesis as framed can't be realized.

Verification Results

None needed; noted so 39% isn't misread as a cap breach.

Verification Results

avg_position_pct 39% vs the 0.35x cap is the same benign artifact seen on AVAX (cap binds at entry; ratio uses depressed current equity on underwater positions). No leverage multiplier, leverage 1.0, liquidated=false — the iter-1 sizing defect is genuinely resolved.

Backtest Review

Order-flow (taker-aggression) is a genuinely distinct signal dimension no deployed strategy uses

Backtest Review

Real OCO bracket with protective stops; clean market-neutral beta (~0)

Backtest Review

Data-source implementation flaw: reads the shallow supp['taker_ratio'] feed rather than the kline's taker_buy_base_volume the hypothesis specified, so the strategy only actually traded a ~2-month 2026 window (all returns 2026-03-28→2026-05-19) — the multi-year backtest is illusory

Backtest Review

Decisively negative where measured: profit_factor 0.266, expectancy -$77.83/trade over 455 trades, avg_trade_return_pct -0.028%, Sharpe -1.0 (CI [-2.18, -0.82])

Backtest Review

The 'positive reward:risk by design' thesis failed: avg_loss $172 is 2.3x avg_win $73 at a 0.38 win rate, despite the hard OCO bracket — return_skew -39, kurtosis 1705 (stops overrun)

Backtest Review

Reproduces the already-dead taker-flow fade (-0.025% sibling ≈ -0.028% here); single-name flow/price reversion is the definitively-dead fade family

Outcome Summary

This strategy pursued a genuinely distinct order-flow dimension — fading retail taker-aggression exhaustion on the most retail-driven major, DOGE — with a hard OCO bracket engineered to give positive reward:risk and avoid the small-win/big-loss inversion that killed the RSI/Keltner/VWAP fades. But it was both mis-implemented and a loser: the code read the shallow taker_ratio feed instead of the specified deep-history kline field, so all returns collapsed into a single ~2-month 2026 window, and within that window it lost decisively (PF 0.27, -$77.83/trade, Sharpe -1.0) with the reward:risk inversion recurring (avg loss 2.3x avg win despite the bracket). The analyst abandoned it at review as a near-duplicate of the already-dead taker-flow fade and a member of the zero-survivor single-name reversion family, noting any retry must use the full-history kline taker volume and a continuation rather than fade framing.

Outcome Summary

A novel order-flow signal must be sourced from the field the hypothesis specifies (the deep-history kline taker_buy_base_volume, not the shallow taker_ratio metrics feed) or the backtest is illusory — and even correctly sourced, single-name taker-flow-exhaustion fades remain in the definitively-dead reversion family; any retry needs a directional/continuation framing, not a mean-reversion fade.

Outcome Summary

It was abandoned at the pre-optimization backtest-review gate for two reasons: a data-source implementation flaw (the code read the shallow supp['taker_ratio'] feed instead of the kline's taker_buy_base_volume the hypothesis specified, so despite a 211,740-bar run it only actually traded a ~2-month window), and a decisively negative signal where measured that reproduces the already-dead taker-flow fade (-0.025% sibling ≈ -0.028% here) in the zero-survivor single-name reversion family.

Outcome Summary

A long-short, single-instrument short-horizon reversion on DOGEUSDT.BINANCE (USD-M perp, 15m bars) using an order-flow signal — fading price when the per-bar taker-buy volume fraction hits a rolling crowd-extreme (retail FOMO/panic exhaustion) while price is stretched from a short mean — with a tight OCO invalidation stop meant to make reward:risk structurally positive.

Outcome Summary

It was decisively negative where it traded: profit factor 0.266, expectancy -$77.83/trade over 455 trades, avg_trade_return_pct -0.028%, Sharpe -1.0 (CI -2.18 to -0.82), total return -35.5%, with avg loss ($172) 2.3x avg win ($73) at a 0.38 win rate and a catastrophic tail (skew -39, kurtosis 1705) — and a data-source flaw meant all returns fell in a single ~2-month 2026 window, so the multi-year run was illusory.
Strategy report

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