Skip to content
Archive
← r/algotrading
6
81%
u/Puzzleheaded_Sun3104 2 days ago Data

Feedback Request: Backtest and Montecarlo results across multiple instruments

Hello everyone. I have been developing and testing a system built by studying gold, and I would like to share the backtest equity curves and bootstrap Montecarlo analyses based on two hundred simulations per asset class. All tests started with an initial capital of 100,000.00. I tested the algorithm live on gold for two and a half months, achieving a 3 percent drawdown with a 10 percent gain. Since this is my first algorithm, I would love to hear the opinion of anyone who has long-term experience regarding algorithms and live execution. Starting with the asset performance breakdown, the backtest results derived from the provided equity curve images show distinct trajectories across different markets. For XAGUSD, the Montecarlo simulation shows an average PnL of plus 111.48 percent with a standard deviation of 75.92 percent, a median of plus 120.71 percent, and a win rate of 39.7 percent. The average maximum drawdown sits at 27.88 percent with a worst-case scenario of 68.49 percent, yielding a loss probability of 9.0 percent. For XAUUSD, as clearly illustrated by its steady upward equity curve ending at an initial capital of 100,000.00 turning into a final capital of 211,493.84 with a PnL of plus 111.49 percent, the Montecarlo indicates an average PnL of plus 87.98 percent and a win rate of 37.7 percent. The average maximum drawdown is tightly controlled at 9.00 percent, and the loss probability is exceptionally low at 1.0 percent. For NAS100, represented by a strongly bullish equity curve moving from 100,000.00 to a final capital of 182,058.44 with an 82.06 percent PnL, the Montecarlo reveals an average PnL of plus 57.53 percent with a win rate of 36.6 percent. The average maximum drawdown is 9.54 percent, and the loss probability is 4.5 percent. For SP500, shown in the equity chart growing from 100,000.00 to a final capital of 1,255,725.50 reflecting a 25.57 percent PnL, the Montecarlo yields an average PnL of plus 49.64 percent alongside a win rate of 34.8 percent. The average maximum drawdown is 8.21 percent, and the loss probability stands at 8.5 percent. For GER40, the equity curve highlights significant growth, moving from an initial capital of 100,000.00 to a final capital of 365,400.96 with a total PnL of plus 265.40 percent in a clean upward trend. For USDJPY, displayed through an equity curve rising to a final capital of 128,863.74 with a PnL of plus 28.86 percent, the Montecarlo records an average PnL of plus 9.10 percent and a lower win rate of 28.3 percent. The average maximum drawdown is 9.35 percent, while the probability of loss increases to 35.0 percent. For GBPUSD, whose choppy and sideways equity curve closes at a modest final capital of 101,093.85 with a PnL of plus 1.09 percent, the Montecarlo shows an average PnL of minus 0.14 percent and a weak win rate of 23.4 percent. The average maximum drawdown is 11.80 percent, and the probability of a losing outcome reaches 53.0 percent. For USDCAD, characterized by an equity chart showing a sharp jump followed by a prolonged decline ending at a final capital of 103,845.06 with a 3.85 percent PnL, the Montecarlo delivers an average PnL of minus 1.61 percent and a win rate of only 19.1 percent. The average maximum drawdown is 13.04 percent, and the loss probability hits 58.5 percent. Looking at these overarching patterns, the system clearly thrives on trending assets like precious metals and major stock indices, while struggling significantly on currency pairs where win rates drop below 25 percent and the odds of losing money exceed 50 percent. I would love to hear thoughts from the community on whether this stark performance divergence points toward structural edge differences across asset classes or potential overfitting on directional markets, and whether currency pairs should simply be dropped from this version. Any constructive feedback is greatly appreciated.
14 comments held Reddit says 13 on reddit ↗
  1. u/[deleted] -1 2 days ago

    [removed] — already gone when the archive first saw it

  2. u/Puzzleheaded_Sun3104 OP 2 2 days ago
    what's "myfxbook link"?
  3. u/[deleted] 0 2 days ago

    [removed] — already gone when the archive first saw it

  4. u/Cheap-Platform309 1 2 days ago
    Connect your brokerage account to fxbook where we can see the equity curve on your account.
  5. u/Scott_Malkinsons 1 2 days ago
    the system clearly thrives on trending assets like precious metals and major stock indices, while struggling significantly on currency pairs where win rates drop below 25 percent and the odds of losing money exceed 50 percent.
    Sounds to me like you already know the problem, and the solution. Trade the assets that it thrives on, and dump that ones that don't work. Though I'm not entirely convinced you know what Monte Carlo does, as the key distinction is that Monte Carlo tests whether your strategy can survive different sequences of trades, not the strategy's underlying edge. A standard Monte Carlo simulation that simply reshuffles your backtest trades assumes the observed trade outcomes are representative of future outcomes. It doesn't test for overfitting, market regime changes, edge decay, parameter robustness, out of sample performance, etc. etc. What you're likely trying to do is walk forward and out of sample, not Monte Carlo which primarily tests outcome uncertainty and risk.
  6. u/[deleted] 1 2 days ago

    [removed] — already gone when the archive first saw it

  7. u/[deleted] 1 2 days ago

    [removed] — already gone when the archive first saw it

  8. u/Dependent-Phone-1188 0 2 days ago
    What software did you use to do this?
  9. u/Puzzleheaded_Sun3104 OP 1 2 days ago
    I built everything myself in Java, the UI too.
  10. u/[deleted] 1 2 days ago

    [removed] — already gone when the archive first saw it

  11. u/QuanTradin 1 1 day ago
    the multi instrument run is the useful part, as long as the gold parameters stayed frozen for it. the bootstrap mostly tells you about trade ordering luck, it can't tell you whether the rules are fit to gold's last few years.
  12. u/dagilisek 1 1 day ago
    Two and a half months with a 3% drawdown doesn't say much yet since your own simulation had gold's avg max drawdown at 9%. How many trades is that? Also, the SP500 line looks like a typo, 1,255,725.50 final capital but a 25.57% PnL.
  13. u/Maleficent-Success-6 1 1 day ago
    The two and a half months of live Gold trading are probably the most interesting part of this for me. Have you compared the actual live trades against what the frozen backtest engine would have done over exactly the same period? I'd look at matched signals, expected entry prices, actual fills, expected exits, actual exits and execution costs. A live equity curve can look reasonably close to the backtest even when individual trades differ quite a lot and those differences happen to cancel out. The Monte Carlo results are useful for understanding outcome variability, but the matched-trade comparison would tell you something different: whether the execution path is actually implementing the strategy you tested. Did you keep the strategy parameters unchanged throughout those two and a half months?
  14. u/ciaranwalsh96 1 1 day ago
    The key decision is when the asset filter is chosen. Because the system was built on gold and this same run now suggests keeping gold and indices while dropping FX, selecting markets from these results makes the filter part of the fitted model. The retained markets then need a second untouched period or live forward test; otherwise the multi-asset test has become training data. Before that comparison, normalize every instrument to the same ex-ante risk. Fixed lots or nominal capital confound strategy behavior with contract multipliers and volatility. Report expectancy and drawdown in R units, or under the same volatility target, then compare gold, indices and FX within the same trend and volatility regimes. For the bootstrap, sample contiguous blocks such as whole weeks or months rather than individual trades so some streaking survives. A practical rule would be to define the risk model and market-inclusion threshold now, freeze both, and apply them unchanged to the next period. Drop a pair only if it fails that pre-specified forward rule, rather than because it was weak in the sample used to invent the rule.