Disable TP tightening: tuned pre-spread, halves total R under real fills

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.
This commit is contained in:
harwinder
2026-07-08 21:35:59 -04:00
parent 3a85c6e23b
commit 2291fc3936
2 changed files with 8 additions and 4 deletions
+6 -2
View File
@@ -117,8 +117,12 @@ class SignalConfig:
default_risk_pct: float = 1.0 default_risk_pct: float = 1.0
default_rr_ratio: float = 2.0 default_rr_ratio: float = 2.0
atr_sl_multiplier: float = 1.5 atr_sl_multiplier: float = 1.5
min_rr_ratio: float = 0.4 min_rr_ratio: float = 0.5
tp_tightening_factor: float = 0.8 # 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 @dataclass
+2 -2
View File
@@ -167,8 +167,8 @@ def _():
def _(): def _():
sc = SignalConfig() sc = SignalConfig()
assert sc.min_confidence == 55.0 assert sc.min_confidence == 55.0
assert sc.min_rr_ratio == 0.4 assert sc.min_rr_ratio == 0.5
assert sc.tp_tightening_factor == 0.8 assert sc.tp_tightening_factor == 1.0
assert sc.atr_sl_multiplier == 1.5 assert sc.atr_sl_multiplier == 1.5
assert sc.default_rr_ratio == 2.0 assert sc.default_rr_ratio == 2.0
assert sc.cooldown_bars == 5 assert sc.cooldown_bars == 5