BtcNewsSentimentExtremeFadeLS
Hypotheses
BTC Crypto News-Sentiment Extreme Contrarian Fade — Long-Short, Single-Instrument: Fade Euphoric/Capitulative Aggregate Sentiment Peaks Back Toward the Mean, Hard-Stopped, Multi-Day Hold (BINANCE BTCUSDT USD-M, 4H Bars + news_sentiment Supp, Short-Lookback, 2-Parameter)
Hypotheses
A LONG-SHORT, single-instrument CONTRARIAN strategy on BTCUSDT.BINANCE USD-M perp whose signal is the LLM-scored crypto NEWS-SENTIMENT feed (news_sentiment supp key, 5-min buckets) — a collectable data class (exists from 2026-08-13) that is entirely OUTSIDE the exhausted pure-OHLCV directional/breakout/trend graveyard (0/213) where every momentum/confluence/breakout/reversal variant now dies, INCLUDING the proven confluence template which just failed to generalize to BNB (overfit, Sharpe 0.38) and XRP/SOL. It is a DIFFERENT sign and a DIFFERENT trigger from the pending news-sentiment SHOCK-DRIFT idea (which follows the JUMP as momentum): this fades the LEVEL EXTREME as mean-reversion. ECONOMIC PREMISE: aggregate news sentiment is a crowd-emotion gauge; when it reaches a euphoric extreme (relentless bullish coverage) price has usually already run and is vulnerable to a pullback, and when it reaches a capitulative extreme (relentless bearish coverage) selling is exhausted and price tends to bounce — a contrarian 'buy fear / sell greed' reversion that is a genuinely different mechanism from OHLCV price-geometry. It is single-instrument (not the 0/127 multi bucket), long-short (fills the starved 14.3% bucket), uses a collectable feed (L76-safe, unlike Polymarket/liquidations), and only 2 tunable parameters. HISTORY CAVEAT stated up front: news_sentiment collection began 2026-08-13, so this is an explicitly SHORT-LOOKBACK design (~3 weeks); the contrarian edge is validated on the accrued span and the analyst judges sufficiency (the history keeps accruing) — a short but honest sample, not an uncollectable-data death.
Hypotheses
Implements the hypothesis as specified: contrarian fade of aggregate news-sentiment LEVEL extremes (opposite sign and different trigger from the shock-drift jump-follow sibling), single-instrument, long-short, futures venue (BINANCE USD-M, required for shorts; leverage left at 1.0 since sizing is risk-capped and I will not set a leverage I do not consume). The gate is a rolling percentile of the strategy's own |z| rather than an absolute sentiment constant -- an absolute gate is not scale-invariant across news regimes or feed distributions and is exactly what produced zero sandbox trades in the sibling strategy (L5/L35). I verified the feed before coding: real BTC news_sentiment has 5,135 buckets spanning 2026-08-12..2026-09-02, median gap 300s, std 0.135, so the data exists for the sandbox window and the strategy will trade there. TWO DELIBERATE DEVIATIONS, both to protect statistical measurability rather than to change the mechanism: (1) 1-HOUR bars instead of 4-HOUR -- on the ~21-day accrued feed, 4H gives ~126 evaluated bars and fewer than 8 trades, an unmeasurable sample (L10); 1H gives ~480 bars and 15-25 trades. (2) the multi-day hold is expressed as a 36-bar (36h) outer time box with an earlier exit when sentiment itself normalises, since the reversion thesis is complete once the extreme has decayed. ONE HONEST CONCERN, stated as required while implementing what was asked: I measured this exact fade construction on the full accrued BTC feed and the contrarian sign is negative across every construction variant I checked (~-0.30 to -0.65% per trade over 8-24 trades, win rate 0.12-0.27), while the mirror-image follow sign is positive on the same window -- the sample is dominated by a single +23% BTC advance, so fading euphoria is largely shorting a persistent rally. The analyst should weigh whether the 21-day window is long enough to judge, and may want the follow-sign variant tested as the natural control; I implemented the fade as the hypothesis specifies.
Hypotheses
Structurally unmeasurable and already negative — not worth 2 hours of optimization. The news_sentiment feed only begins 2026-08-13, so despite the 6-year (58,512-bar) window the strategy trades only ~3 weeks (2026-08-18 → 2026-09-02) and takes just 15 trades — far below the ~100-trade floor, and the 3-phase walk-forward/holdout windows cannot populate on a single 3-week regime (every historical stress window and the stressed vol tercile are empty). On the accrued span the sign is already wrong: total_return -3.1%, Sharpe -0.47 (CI [-0.91, 0.26]), profit_factor 0.29, win_rate 27%, expectancy -$207/trade, avg_trade_return_pct -0.285% (negative), with commission 51.4% of gross. Optimizing 15 trades over 3 weeks would fit pure noise. This is not a code defect (the feed is correctly parsed and the strategy correctly stands flat before 2026-08-13) — the mechanism simply cannot be tested until the sentiment history accrues to a meaningful multi-regime span. Failure pattern: unmeasurable short-lookback supplementary feed + negative edge on the accrued sample (L27/L10).
Implementation
Long-short contrarian strategy on BTCUSDT USD-M perp (BINANCE, 1-hour bars) whose trigger is the LLM-scored news-sentiment feed, not price. Every bar it computes a continuous level z-score: the mean of the last 24 five-minute sentiment buckets (2h of coverage) minus the mean of the trailing 576-bucket (2-day) regime, divided by the standard error of that smoothed mean. When |z| reaches the entry_pctile quantile of its own recent |z| history (floored at min_entry_z), it fades the extreme: SELL on euphoric coverage, BUY on capitulative coverage. Exits are (a) a hard ATR stop tested intrabar against the bar's high/low, (b) mean reversion of the driver itself (|z| decays below exit_frac x the threshold that triggered entry), or (c) a 36-bar time box. Sizing is risk-first: qty = equity * 1% / (stop_atr_mult * ATR), capped at 50% of equity notional; one position at a time. If the sentiment feed is missing, not warm, or staler than 1800s the signal is 0.0 and the strategy stands flat -- it never substitutes a price proxy. Exactly 2 tunables (entry_pctile, stop_atr_mult), both with declared _param_bounds.
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
Analyst to accept the 1H measurability adaptation or re-run at 4H once history accrues; note the deviation in the run record.
Verification Results
Timeframe deviation: hypothesis says '4H Bars' but config.bar_type is 1-HOUR (factor-of-4). The developer documents it as a deliberate measurability adaptation (4H yields <8 trades on the ~21-day feed, unmeasurable; 1H yields ~480 bars) with mechanism, instrument, venue, direction and contrarian sign otherwise unchanged. Flagged not blocked, since it is a disclosed, mechanism-preserving deviation invited by the hypothesis's own short-lookback / 'analyst judges sufficiency' caveat.
Verification Results
Add a minimum-hold before the reversion exit can fire, and/or freeze the entry threshold at entry so a recalibrated threshold can't immediately satisfy the exit.
Verification Results
The reversion exit (abs(signal) <= 0.4*thr_at_entry) with a per-bar-recalibrated adaptive percentile entry threshold produces near-immediate exits (avg hold ~1 bar, 465 trades), defeating the 'multi-day hold' intent and pushing commission to 90.4% of gross. Not a correctness bug — exits fire as coded — but the tuning yields a fee-churner.
Backtest Review
Genuinely orthogonal signal (LLM news-sentiment) outside the pure-OHLCV graveyard; clean single-instrument long-short construction with a no-silent-fallback gate
Backtest Review
Only 2 tunables and an adaptive percentile threshold that correctly avoids the zero-trades failure mode
Backtest Review
Structurally unmeasurable: the news_sentiment feed only begins 2026-08-13, so despite a 6-year window the strategy trades only ~3 weeks (2026-08-18 → 2026-09-02) and produces just 15 trades
Backtest Review
Already negative on the accrued span: total_return -3.1%, Sharpe -0.47 (CI [-0.91, 0.26]), profit_factor 0.29, win_rate 0.27, expectancy -$207/trade, avg_trade_return_pct -0.285%
Backtest Review
Fee-fragile at this cadence: commission 51.4% of gross; effective_daily_obs 12
Backtest Review
Every historical stress window and the stressed vol tercile are empty (no data) — walk-forward and holdout windows cannot populate on a 3-week sample
Iteration History
Verification failed (Layer 4 — QA review) [class=premise_falsified]:
- The contrarian mechanism is faithfully implemented (reads news_sentiment level z, fades euphoric/capitulative extremes, no price-proxy fallback) and produced a measurable, well-populated sandbox (465 trades) — but the result REFUTES the hypothesis's premise. avg_trade_return_pct 0.0599% is below the 0.15% futures fee floor; PF 0.569 (<1); total_return -17.6%; Sharpe -0.578 (CI [-1.68, 0.54]). Critically, the developer's own measurement (config.rationale) shows the FADE sign is systematically negative across every construction variant while the mirror FOLLOW sign is positive on the identical window — the mean-reversion effect the hypothesis depends on is INVERTED in the accrued data (extremes continue, not revert). The 21-day feed is dominated by one +23% BTC advance, so 'fade euphoria' = shorting a persistent rally. Re-coding the fade cannot fix an inverted sign.
- Fee viability: per-trade gross edge 0.0599% does not clear the ~0.10% round-trip taker cost on BINANCE USD-M, let alone the 0.15% floor. 465 trades at ~1h avg holding (near-constant churn in a trending regime) plus total_impact_usd 7501 make it structurally fee-negative regardless of sign.
- Hypothesis title specifies 4H bars; config.bar_type is 1-HOUR. Documented, justified deviation (4H yields <8 trades = unmeasurable; 1H yields 465), not a silent swap, and it ENABLED measurement. Not the blocking reason; reverting to 4H would only produce an unmeasurable sample.
Backtest and paper results are hypothetical. Trading involves risk of loss.