From 2291fc3936391c9b470af7161fd36fe20f659f35 Mon Sep 17 00:00:00 2001 From: harwinder Date: Wed, 8 Jul 2026 21:35:59 -0400 Subject: [PATCH] Disable TP tightening: tuned pre-spread, halves total R under real fills MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A/B on M15 2025-03-30→2026-05-31 with $0.30 spread + gap-through fills (511 identical entries, only exits differ): factor 0.8 / min_rr 0.4: +36.1R (avg +0.071R, SELL +1.2R) factor 1.0 / min_rr 0.5: +66.8R (avg +0.131R, SELL +9.6R) Worse in both train and validation halves and both directions. The 20% tighter targets buy +1.8pt win rate but shrink every win while the fixed spread stays constant. The knob remains for re-tuning with costs included. --- config.py | 8 ++++++-- test_all.py | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/config.py b/config.py index 8fb8e70..c8dc843 100755 --- a/config.py +++ b/config.py @@ -117,8 +117,12 @@ class SignalConfig: default_risk_pct: float = 1.0 default_rr_ratio: float = 2.0 atr_sl_multiplier: float = 1.5 - min_rr_ratio: float = 0.4 - tp_tightening_factor: float = 0.8 + min_rr_ratio: float = 0.5 + # TP tightening (May 2026) was tuned on the pre-spread backtester. + # Re-tested 2026-07-08 with $0.30 spread + gap fills: 0.8 nearly + # halves total R (+36.1R vs +66.8R, worse in both train/val halves) + # — smaller wins make the fixed spread a larger share of every TP. + tp_tightening_factor: float = 1.0 @dataclass diff --git a/test_all.py b/test_all.py index 48cfb62..96d8899 100644 --- a/test_all.py +++ b/test_all.py @@ -167,8 +167,8 @@ def _(): def _(): sc = SignalConfig() assert sc.min_confidence == 55.0 - assert sc.min_rr_ratio == 0.4 - assert sc.tp_tightening_factor == 0.8 + assert sc.min_rr_ratio == 0.5 + assert sc.tp_tightening_factor == 1.0 assert sc.atr_sl_multiplier == 1.5 assert sc.default_rr_ratio == 2.0 assert sc.cooldown_bars == 5