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.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
harwinder
2026-07-08 21:35:59 -04:00
parent 5a0af663c1
commit d95d31a852
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_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
+2 -2
View File
@@ -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