Files
gp-fx-strategy/docs/PHASE2_RULES.md
T

2.0 KiB
Raw Blame History

Phase 2 Trading Rules

Signal Generation

  • Source: Genetic Programming tree evolved over 3000 individuals × 30 generations
  • Input features: EURUSD, GBPUSD, USDJPY OHLC (12 inputs total)
  • Output: Continuous signal -100 to +100
  • Long entry: signal > +5.0
  • Short entry: signal < -5.0
  • Dead band: -5.0 to +5.0 (no trade)

Per Trade Risk Management

Parameter Value
Trade size (training) $1,000 USD
Trade size (live) $300 USD
Max concurrent (live) 3 trades
Max exposure (live) $900 USD
Initial SL 1x ATR below/above entry
Trail trigger 3x ATR profit from entry
Trail distance 15% behind current price
Close condition 15% reversal from peak/trough

Long Trade Example

Entry: 150.00 USDJPY
ATR: 0.30
SL initial: 149.70 (150.00 - 1×0.30)
Trail activates: 150.90 (150.00 + 3×0.30)

Price moves to: 151.00
New SL: 128.35 (151.00 × 0.85)

Price moves to: 152.00
New SL: 129.20 (152.00 × 0.85)

Price drops to: 129.20 → CLOSE
Profit: ~1:7 risk/reward

Short Trade Example

Entry: 150.00 USDJPY
ATR: 0.30
SL initial: 150.30 (150.00 + 1×0.30)
Trail activates: 149.10 (150.00 - 3×0.30)

Price drops to: 149.00
New SL: 171.35 (149.00 × 1.15)

Price drops to: 148.00
New SL: 170.20 (148.00 × 1.15)

Price rises to: 170.20 → CLOSE
Profit: ~1:7 risk/reward

Fitness Function

Win rate is PRIMARY objective (weight 6.0):

win_bonus = (win_rate - 50.0) / 10.0
trade_penalty = max(0.0, (n_trades - 3000) / 10000.0)
fitness = -(6.0 * win_bonus) - (0.5 * sharpe) - (0.1 * total_ret / 10.0) + trade_penalty
  • 80% win rate → win_bonus = +3.0 → strong reward
  • 50% win rate → win_bonus = 0.0 → neutral
  • 40% win rate → win_bonus = -1.0 → penalised

Backtesting Configuration

  • Library: vectorbt 0.28.5
  • Train: Jan 2024 – Jun 2025 (44,310 bars)
  • Validation: Jul 2025 – Oct 2025 (10,079 bars)
  • Test: Nov 2025 – Mar 2026 (6,420 bars)
  • Commission: 0.0015% per side
  • Initial cash: $100,000