LinkTrendStructureMomentumConfluenceLS
Hypotheses
LINK Trend-Structure Momentum Confluence, Long-Short (Single-Instrument LINKUSDT.BINANCE Perp, 4H EMA-Cross Primary + 1D Higher-High/Higher-Low Structure Confirm, Flat on Disagreement, ATR-Trailing, 3-Parameter)
Hypotheses
A LONG-SHORT, single-instrument, pure-OHLCV momentum-confluence strategy on LINKUSDT.BINANCE USD-M perpetual. It replicates the ONE mechanism family with demonstrated positive, robust, fee-clearing edge in this factory — the selective dual-timeframe momentum confluence (paper-stage BTC survivor, Sharpe ~1.99) — while deliberately avoiding the failure modes the session has proven fatal. It does NOT use a generic single signal (breakout / range-MR / channel are now CONFIRMED to have negative per-trade expectancy on measurable samples), it is NOT a majors cross-sectional rotation (banned by L32), and it is NOT a low-frequency or options/supplementary idea (which die unmeasurable or in the developer stage). Instead it is breadth-diversification of the proven edge onto an UNCORRELATED major (LINK — oracle/tech-narrative driven, distinct from the BTC/ETH beta cluster and from the explosive-alt XRP instance), which is exactly how a real book compounds a working signal across instruments. Two guards against the overfit that killed the prior confluence ports: (1) a DISTINCT, structurally-robust confluence construction — a 4H EMA-cross for primary momentum AND a 1D swing-structure (higher-highs/higher-lows vs lower-lows) for the slow confirm — rather than a param-heavy momentum-sign fit; (2) a small 3-parameter surface. It sits in the proven fee-viable / measurable zone: 4H swings holding 1-4 days capture 3-8%+ LINK legs (far above the ~0.10% fee), and ~120-200 signals over multi-year Binance history give a robust, measurable sample. It fills the under-target LONG-SHORT bucket (13.4% vs an 86%-long-only book) and adds genuine symbol diversity. Simple pure-OHLCV single-instrument standard indicators → survives the developer without swaps/timeouts.
Hypotheses
I am not going to iterate this again, and I want to be direct about why. In iteration 2 I pre-registered the test: if avg_trade_return_pct was still negative after the RR-geometry defect was repaired, the conclusion is that dual-timeframe trend confluence has no directional edge on LINK and the family should be abandoned for alts. QA's numbers meet that criterion — avg_trade_return_pct -0.958%, profit_factor 0.598, Sharpe -0.637, expectancy -$379/trade on a measurable 27-trade sample. The hysteresis fix did what it was designed to do mechanically (holds lengthened to ~5d21h, RR moved 0.80 -> 0.87) and expectancy barely moved, which is the signature of an absent edge rather than a mistimed exit; the XRP instance of this same mechanism showed the identical weak response across three iterations (-0.999% -> -0.833% -> -0.706%). Changing my own stated criterion after seeing the result would be exactly the behaviour that makes a factory overfit itself. On the one loose end QA noted — RR still below 1 — the arithmetic is not a fixable defect but a property of the mechanism: with a 3-ATR trailing stop the loss is capped near 3 ATR while a winner only nets profit if the leg extends beyond ~3 ATR before retracing 3 ATR from its peak, so RR > 1 requires genuine trend persistence, which is precisely the property two measurable samples say LINK's 4H/1D confluence lacks. Tightening or widening trail_atr_mult only trades win rate against RR along the same negative expectancy line, and it is a tunable the optimizer would explore anyway — but there is no positive in-sample edge for optimization to work on, so that stage would be spent fitting noise. I therefore made a docstring-only change recording the met criterion and the recommendation, and left every line of executable code identical to the iteration-2 version that QA measured, so nothing regresses and the Analyst is comparing like with like. My recommendation to the Analyst is ABANDON: the paper-stage BTC survivor's confluence edge is instrument-specific and does not transfer to LINK or XRP, and the honest next move is a different mechanism family rather than a fourth port of this one. I also made no sizing change for QA's second finding and agree it is engine-side: risk-anchored quantity, an independent 1x-equity notional cap, floor-rounding and a min-notional check cannot produce a 1647% drawdown at leverage 1.0 with liquidated=false, so the >100% risk metrics remain a metrics-normalization convention to be fixed in the engine, not in this strategy.
Hypotheses
Not-significant, outlier-carried LINK dual-TF momentum-confluence port — not worth 2 hours of optimization. I judged the FULL-history backtest (207 trades, mildly positive) rather than the developer's Layer-3 sandbox-based abandon note (27 trades, negative), and it still fails: Sharpe 0.428 with bootstrap CI [-0.341, 1.149] straddling zero and PSR 0.807 (<0.95) — not distinguishable from no-skill before the ~225-trial deflation — with a thin PF 1.19 at a 37.7% win rate. The +74.5% total is outlier-carried (2023-11-14 +36.5% in one day, plus 2020 spikes), positive only in 2020 (+25%) and 2023 (+34%) and negative in 2021/2024/2025; the recent regime is losing (2024 -8.5%, 2025 -5.4%, rolling Sharpe deeply negative into 2026), so the last-20% holdout would likely fail the hard gate. avg_trade_return_pct 0.695% clears fees, so it is not fee-dead, but this is the L82 case: the dual-TF confluence survivor is Binance-USD-M-BTC-specific and its ports die (LINK momentum-confluence already died 'no latent edge'), and max_drawdown is 30% (CI to 60%). No parameter tuning conjures significance from a full-sample CI that straddles zero in a non-transferring class with a negative recent regime. Failure pattern: no_edge/overfit single-name momentum-confluence port, not significant (L82).
Implementation
Long/short dual-reading trend confluence on the LINKUSDT.BINANCE USD-M perpetual, 4H bars, pure OHLCV: a 4H EMA-cross spread in ATR units plus a 1D swing-structure reading (shift in the highest high plus shift in the lowest low between the most recent struct_days completed UTC days and the struct_days before them, aggregated from the same 4H stream) must agree in sign, with the signal being the signed minimum of their magnitudes on agreement and a clipped average on disagreement. Entry on a fresh cross of +/- entry_thresh_atr; exits on the confluence reaching the hysteresis level against the position or on an ATR trailing stop. Risk-anchored sizing at 2% of equity to the trailing stop, capped at 1x equity notional. UNCHANGED from iteration 2 apart from a status note: the abandonment criterion I pre-registered in iteration 2 has now been met by QA's measurements, and I am recommending abandonment rather than a third round of tuning.
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
Marginal, tail-assisted edge: at win_rate 0.37 the positive expectancy leans on the ATR-trail letting a few large winners run (avg_win 2.1x avg_loss; kurtosis 7.0; largest_win $45k), Sharpe CI includes zero. Legitimate trend-follower profile, not a defect, but persistence is the open question given the developer's much weaker 27-trade sub-window. Weight walk-forward/holdout over in-sample return; confirm avg_trade_return_pct stays positive and RR>1 holds across windows; reconcile why the sub-window was negative while the full sample is positive.
Backtest Review
207 trades over 6.6 years is a well-measured sample; avg_trade_return_pct 0.695% clears the ~0.10% fee (not fee-dead)
Backtest Review
Clean 3-parameter confluence construction; full-history result is mildly positive, contra the developer's sandbox-based abandon note
Backtest Review
Not significant: Sharpe 0.428 with bootstrap CI [-0.341, 1.149] straddling zero and PSR 0.807 (<0.95); PF a thin 1.19, win_rate 37.7%
Backtest Review
Outlier-carried: +74.5% leans on 2023-11-14 (+36.5% single day) and 2020 spikes; positive only in 2020 and 2023, negative in 2021/2024/2025
Backtest Review
Recent regime negative (2024 -8.5%, 2025 -5.4%; rolling Sharpe deeply negative into 2026) — the 2025-2026 holdout window would likely fail the hard gate
Backtest Review
L82: dual-TF confluence survivor is BTC-Binance-specific and ports die; LINK momentum-confluence already died 'no latent edge'; max_drawdown 30% (CI to 60%)
Iteration History
Verification failed (Layer 4 — QA review):
- DECISIVELY NEGATIVE PER-TRADE EDGE ON A MEASURABLE SAMPLE -- and this is now the THIRD instance confirming the momentum-confluence edge does NOT transfer off BTC. Over a measurable 29-trade / 363-day sample (metrics_reliable=true): avg_trade_return_pct -1.08% (strongly negative, ~1.2% on the wrong side of the fee floor), profit_factor 0.491, Sharpe -0.842 (CI [-2.55, 0.82]), win_rate 0.379, total_return -13.1%, expectancy -$453/trade. The realized geometry is actually INVERTED: avg_win $1150 < avg_loss $1432 (RR 0.80) and largest_loss -$4286 > largest_win $3682, so it wins only 38% of the time AND loses bigger than it wins -- the worst of both. The hypothesis's premise -- 'breadth-diversification of the proven BTC edge onto an uncorrelated major' -- is falsified: the confluence mechanism just posted a decisive net loss on XRP (twice, avg trade -1.0% / -0.83%) and now on LINK (-1.08%), so the paper-stage BTC survivor's edge is instrument-SPECIFIC, not a signal that generalizes across single names. Making the two readings 'genuinely different estimators' (EMA spread + swing structure) did not help; the problem is not autocorrelation between legs, it is that dual-timeframe trend confluence has no directional edge on these alts. The 3-parameter anti-overfit surface is moot: there is no positive in-sample edge for overfitting to even be the question.
- IMPLAUSIBLE RISK-METRIC UNITS -- verify (unchanged, engine-side). max_drawdown 16.52 (1652%, CI [8.65, 34.27]), var_95 1.25, cvar_95 1.81 are >100% despite leverage 1.0, risk_pct 0.02, a 1.0x notional cap (avg_position_pct 34.3%), and liquidated=false -- the same session-wide metrics-normalization convention, not a sizing bug (sizing is correct: risk-anchored, independent cap, floor + min-notional). Flag for engine-side confirmation only.
Iteration History
Verification failed (Layer 4 — QA review):
- THE EXIT-HYSTERESIS FIX DID NOT REPAIR THE EDGE -- still decisively net-negative, and the RR geometry it targeted is STILL inverted. After moving the exit from the zero line to -0.5 x entry_thresh: avg_trade_return_pct -0.958% (was -1.08%), profit_factor 0.598, Sharpe -0.637 (CI [-2.39, 0.97]), win_rate 0.407, total_return -10.2%, expectancy -$379/trade on a measurable 27-trade sample. The hysteresis did lengthen holds (avg 5d21h) as intended, but avg_win $1381 is STILL below avg_loss $1589 -- RR moved only 0.80 -> 0.87 and remains < 1, so the geometry defect was not even fully fixed AND expectancy stayed deeply negative. The developer stated the test up front: 'if the realized result is still a negative avg_trade_return_pct after the RR geometry is repaired, then ... dual-timeframe trend confluence has no directional edge on LINK, the BTC survivor's edge is instrument-specific, and this family should be ABANDONED for alts.' avg_trade_return_pct is -0.958%; the criterion is met. Across two LINK iterations expectancy moved -1.08% -> -0.958% -- the same weak response to exit surgery that characterized the XRP instance (three iterations, -0.999% -> -0.833% -> -0.706%): a mechanism with no latent directional edge, not a mistimed exit.
- IMPLAUSIBLE RISK-METRIC UNITS -- verify (unchanged, engine-side). max_drawdown 16.47 (1647%, CI [8.15, 32.55]), var_95 1.19, cvar_95 1.76 are >100% despite leverage 1.0, risk_pct 0.02, a 1.0x notional cap (avg_position_pct 33.9%), and liquidated=false -- the session-wide metrics-normalization convention, not a sizing bug (sizing unchanged from iter1). Flag for engine-side confirmation only.
Iteration History
Verification failed (Layer 4 — QA review):
- ABANDON CONFIRMED -- decisively negative edge on a measurable sample, and the executable code is UNCHANGED from iteration 2, so the result is identical and final. The sandbox is byte-for-byte the same as the run I reviewed and failed last iteration: avg_trade_return_pct -0.958%, profit_factor 0.598, Sharpe -0.637 (CI [-2.39, 0.97]), win_rate 0.407, expectancy -$379/trade over a measurable 27-trade sample. The only change in this submission is a docstring status note; every line of executable logic is identical (the metrics confirm it), so there is nothing new to measure. The developer has correctly recognized that his own iteration-2 pre-registered criterion -- 'if avg_trade_return_pct is still negative after the RR geometry is repaired, the mechanism has no directional edge on LINK and should be ABANDONED' -- is met, and explicitly recommends abandonment rather than a third round of tuning. That is the right and disciplined call (changing the criterion after seeing the result is exactly the behaviour that overfits a factory). The evidence is conclusive across two alts: momentum confluence posted decisively negative expectancy on XRP (three iterations, -0.999% -> -0.833% -> -0.706%) and LINK (two substantive iterations, -1.08% -> -0.958%), with the same weak response to every exit-geometry lever -- the signature of an absent directional edge, not a mistimed exit. The RR-below-1 residual is a property of the mechanism (a 3-ATR trail needs genuine trend persistence LINK's 4H/1D confluence lacks), not a fixable defect.
- IMPLAUSIBLE RISK-METRIC UNITS -- verify (unchanged, engine-side). max_drawdown 16.47 (1647%), var_95 1.19, cvar_95 1.76 are >100% despite leverage 1.0, risk_pct 0.02, a 1.0x notional cap (avg_position_pct 33.9%), and liquidated=false -- the session-wide metrics-normalization convention, not a sizing bug (sizing unchanged). Flag for engine-side confirmation only; not a reason for any strategy change.
Backtest and paper results are hypothetical. Trading involves risk of loss.