2.0 KiB
2.0 KiB
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