Strategies
DOGE News-Sentiment Shock Under-Reaction Drift, Long-Short (DOGEUSDT.BINANCE USD-M, 1H bars + news_sentiment feed — trade the multi-hour price DRIFT that follows a sharp per-asset sentiment shock, shock-gated so trades are RARE and per-trade capture is large, 3-parameter)
Outcome: Abandoned
DogeNewsSentimentShockDriftLS
Outcome Summary
The story is a data-wall, not an edge verdict — the mechanism was never actually tested.
Hypothesis
A LONG-SHORT, single-instrument directional strategy triggered by the BRAND-NEW news_sentiment supplementary feed (LLM-scored per-asset sentiment, 5-min buckets, live since 2026-08-13, accessed point-in-time via supp_window). It is the first strategy in the factory to use news_sentiment as a primary signal — not a price-momentum, funding, OI, order-flow-tick, premium-fade, liquidation, or gated-momentum mechanism (all documented dead classes L68-L92). Premise: post-news UNDER-REACTION drift on a narrative/social-driven perp. Shock-gated so trades are rare and high-conviction, avoiding the sub-fee churn that killed the intraday/VWAP/order-flow classes. Long on a strong positive shock, short on a strong negative shock, flat otherwise.
data_wall / unmeasurable: the news_sentiment feed only went live 2026-08-13, so despite the 6-year primary span (53,967 bars) EVERY one of the 24 trades falls inside 2026-08-16 -> 2026-09-05 (daily_returns and annual_returns are 2026-only; entry_diag shows all 24 signals in the live-feed window). This resolves QA's concern in the mechanism's favour — the code's no-data guard works and it is NOT synthetic backfill — but leaves only ~3 weeks / 24 trades of real data. A deliberately rare, shock-gated strategy cannot be validated on that: walk-forward windows would hold ~8 trades and the holdout a handful, so a 2-hour 3-phase optimization would curve-fit noise (Sharpe 0.40 with CI [-0.43, 1.00] straddling zero is non-diagnostic on 17 effective daily obs). The premise was never actually tested. This is a DATA verdict, not an edge verdict: re-run the identical strategy once the news_sentiment feed has accrued enough live history (~6-12 months, >=100 shock trades) to sample the post-news drift across regimes. abandon_class = data_wall / unmeasurable.
Implementation
Long/short DOGE USD-M perp on 1H bars, triggered by a z-scored shock in the LLM news_sentiment feed (rolling 2h sum of 5-minute sentiment buckets, z-scored against the strategy's own 48-bar distribution of that flow, point-in-time via supp_window). |z| >= 1.8 opens a position in the shock's direction to capture the multi-hour post-news under-reaction drift; the position exits on a 6-hour drift-horizon time stop, an opposite-direction shock, or a 4% bar-close stop. A re-arm guard requires |z| to decay back below the trigger before the same news burst can be traded again, keeping trades rare and per-trade capture large. Flat whenever the news feed has no observation within 6 hours of the bar (i.e. before 2026-08-13, when the feed did not exist) - no price-only fallback.
Verification Results
Either freeze hold_hours/position_frac/stop_loss_pct to their defaults (keeping optimization to the 3 core params as the hypothesis states) or update the hypothesis framing to 6 params.
Hypothesis advertises a '3-parameter' strategy and the code labels shock_window_hours / baseline_bars / entry_z as the 3 core mechanism params, but _param_bounds exposes 6 optimizable parameters (adds hold_hours, position_frac, stop_loss_pct). The mechanism structure still matches the hypothesis, so this is not a mismatch, but the optimizer will search a wider space than the '3-parameter' framing implies — larger PBO/overfitting surface on a small sample.
Confirm the base template calls the subclass min_bars_required(); if it uses a config/attribute instead, set the warmup that way to avoid a silently-ignored override.
Static analysis flags min_bars_required(self) as shadowing a framework method ('the base relies on its own implementation'). If the base template does not actually dispatch to the override, the intended 24-bar barrier may be ignored. Non-fatal — the shock baseline warms up on its own deque regardless.
Backtest Review
- Sharpe
- 0.40
- Total return
- 10.25%
- Max drawdown
- 1.94%
- Trades
- 24
- Win rate
- 62.5%
- Profit factor
- 2.28
First strategy to use the news_sentiment feed as a primary signal, a genuinely novel mechanism distinct from the documented dead momentum/funding/OI/order-flow classes.
Code correctly handles missing history: the no-data guard (_news_shock returns None before 2026-08-13) keeps the strategy flat across 2020-2026-08-12, and it only trades where the feed actually exists.
Per-trade economics look fine on their face: avg_trade_return_pct 1.04% clears the Binance USD-M 0.15% fee floor, PF 2.28, win_rate 0.625, balanced long/short legs consistent with the shock-gated long+/short- premise.
Full-history run RESOLVES the QA edge concern: it is NOT synthetic-injection (no pre-2026-08 trades), it is simply a genuinely ~3.5-week-old live feed.
The entire tradeable sample is ~3 weeks: all 24 trades fall in 2026-08-16 -> 2026-09-05 (daily_returns and annual_returns show only 2026). entry_diag confirms 24 signals/24 submissions across 53,944 bars, all in the live-feed window.
24 trades cannot support the 3-phase optimization: walk-forward would carve ~1-week windows of ~8 trades and the holdout ~a handful of trades — the optimizer would fit noise, not an edge.
Sharpe 0.40 with CI [-0.43, 1.00] straddling zero and effective_daily_obs 17 mean the headline is statistically non-diagnostic; the shock-gated (|z|>=1.8, 6h hold, re-arm-guarded) design is deliberately rare, so trade count will accrue slowly.
regime/stress attribution is empty for every pre-2026 window (all zeros/null) because no trades occurred there — nothing was actually validated across regimes.
Analysis
Backtest gate: - metrics unreliable: Incoherent: Sharpe -0.24 disagrees in sign with total_return 1.20% — the Sharpe is computed from the mtm_equity_curve series while the return comes from the equity curve. Judge on the equity curve.
Outcome Summary
A rare shock-gated mechanism can't be validated against a brand-new feed with only weeks of history; wait for ~6-12 months / >=100 shock trades before testing.
Abandoned at the backtest-review gate before optimization: ~3.5 weeks / 24 trades of live-feed data is below the 30-trade and 26-week thresholds with sharpe_ci_low below zero — unmeasurable, so optimization would only fit noise.
The first factory strategy to use the news_sentiment feed as a primary signal: a long-short DOGEUSDT.BINANCE 1H strategy trading the multi-hour post-news under-reaction drift, shock-gated on a self-normalising z-score so trades are rare and per-trade capture is large.
24 trades over the 6-year span with total_return 10.25x, win_rate 0.625, PF 2.28, avg_trade_return_pct 1.04% — but Sharpe just 0.40 with CI [-0.43, 1.00]. All 24 trades fell in 2026-08-16→09-05 since the feed only went live 2026-08-13.
Backtest and paper results are hypothetical. Trading involves risk of loss.