
Swapping one entry rule improved every metric
Swapping the gold entry logic from a standard breakout to an ATR-based candle strategy has successfully improved the overall performance of my final…

Breakout entry example (XAUUSD daily, real data): buy when price breaks above the recent high.
Swapping the gold entry logic from a standard breakout to an ATR-based candle strategy has successfully improved the overall performance of my final system. By modifying the make_strategy function to treat XAUUSD differently while keeping the other four FX pairs on their existing breakout logic, I achieved a cleaner, more robust result.
Performance comparison: Breakout vs. ATR-based gold
The upgrade resulted in improvements across every key metric, as shown in the table below:
| Metric | Original (Breakout) | Updated (ATR Candle) |
|---|---|---|
| Total Return | +49.7% | +66.8% |
| Monthly Return | 0.30% | 0.38% |
| Max Drawdown (DD) | -7.9% | -7.1% |
| Profit Factor (PF) | 1.28 | 1.29 |
| Sharpe Ratio | 0.21 | 0.25 |
| MC Pass Rate (Total) | 66% | 78.4% |
| Note: PF is the ratio of gross profit to gross loss, where a value over 1 indicates profitability. MC is the Monte Carlo pass rate, representing the probability of meeting prop-firm equity rules based on historical resampling. | ||
| The system remains profitable in 9 out of 11 years. My intraday stress test, which reconstructs account equity using 1-minute bars, shows a worst-case single-day loss of 4.06% with zero days failing my risk constraints. While the ATR-based gold strategy occasionally triggers “minimum holding time” violations due to narrow initial stop-losses, this is merely a resolution artifact. In a live environment, a forced 15-second hold time resolves this, meaning it has no impact on the actual viability of the strategy. |
Why adding a trend filter backfired
I also tested adding a higher-timeframe (HTF) trend filter (specifically a daily SMA) to the ATR gold strategy. While this successfully halved the drawdown of gold in isolation by dropping it from -18.5% to -9.3%, it actually degraded the total system performance. The lesson here is that reducing the drawdown of a single component only helps if that component is the primary bottleneck for the entire portfolio. Because my system’s drawdown is driven by the correlated movement of multiple assets, fixing gold in isolation just shaved off returns without actually loosening the system’s overall risk constraints. I have kept the HTF code in the strategy file for potential use in future gold-only prop accounts, but it will remain disabled for the current system.
Scope and limitations
I also explored applying this ATR-based approach to my yen-cross pairs (USDJPY, GBPJPY, EURJPY, CHFJPY). The results were poor; the ATR logic caused significant drawdown increases in almost every case. It appears that gold’s momentum-driven nature responds well to ATR-based entries, whereas the yen crosses are far more prone to “fake-outs” when volatility expands. Consequently, the final system remains unchanged: ATR-based entry for gold and standard breakout logic for the FX pairs. This version is now locked in. However, it is worth noting that the strategy’s performance remains dependent on the recent gold price surge and the regime-dependent characteristics of my existing robust5 framework. The goal remains a consistent, steady return capped at roughly 2% per month.
Code to reproduce
You can reproduce this with the following scripts (see repo).
strategies/atr_candle_breakout.py