blog-image

Monte Carlo Simulation for Forex Strategies: What It Proves and What It Can’t

Risk warning. Leveraged currency products carry substantial risk to your capital. Passing any robustness check does not indicate future results, and every figure discussed below comes from historical simulation.

The Direct Answer

Monte Carlo simulation does not prove that your trading strategy will make money. Worth stating that first, because the 2019 version of this article implied otherwise and I’d rather correct it plainly than quietly.

What the method does is measure how sensitive a historical result is to specific changes: different indicator settings, a different starting point, wider spreads, altered price sequences, missed fills. A strategy surviving those perturbations is less fragile under the assumptions you chose to test. Its live performance can still disappoint, and it may remain overfit, regime-dependent, or unsuitable for real capital.

That gap between “less fragile under tested assumptions” and “robust” is the whole subject of this page.

What Monte Carlo Actually Measures

Every Monte Carlo variant works the same way underneath. Take the original historical test, change one thing at random, run it again, repeat many times, then look at the distribution of results rather than a single number.

The insight is genuine. One historical run produces a single equity curve, and it looks precise in a way it hasn’t earned, since a slightly different starting date or a two-point wider spread would have produced something else entirely. Generating hundreds of Monte Carlo simulations replaces false precision with a spread of possible outcomes, which is more honest.

What it cannot do is generate information that wasn’t in your data to begin with. Randomizing a historical sequence produces variations on that sequence, not on conditions the market has yet to invent.

What It Proves, and What It Doesn’t

ResultReasonable readingWhat it does not establish
Small parameter changes stay profitableThe strategy isn’t balanced on a knife edge near those settingsThat the settings are optimal, or that any edge exists
Different start dates stay profitableResults don’t depend entirely on one historical entry pointFuture profitability
Wider spreads remain acceptableCosts within the tested band are tolerableThat live execution matches the model
Skipped positions don’t destroy resultsLess dependence on catching every signalThat broker execution risk is handled
Most runs stay positiveThe historical result is fairly stable under those perturbationsStatistical significance, or absence of overfitting
Drawdown stays inside limitsRisk may be tolerable across simulated scenariosThat worst-case loss is known

Print that table and pin it somewhere. Nearly every overclaim in this field, including my own earlier ones, comes from reading a cell in the middle column as though it belonged in the right.

What It Cannot Prove

Explicitly, because the audit of this page correctly identified this as the missing section:

  • A causal edge: Nothing here explains why the strategy should work.
  • Sample representativeness: Your data covers what happened, not what could.
  • Regime survival: Conditions that never appeared in your history cannot be stress-tested.
  • Freedom from data snooping: If you generated five hundred candidates and kept three, that selection process is invisible to any robustness check.
  • Correct cost modelling: Spread randomization tests a band you chose. Real costs might sit outside it.
  • Live fill quality: Simulated fills are assumptions.
  • Bounded future drawdown: The worst simulated outcome is not the worst possible one.
  • Deployment readiness: Passing is one input among several, never a verdict.

This point about repeated searching deserves emphasis. Generating hundreds of candidates and keeping only those clearing your criteria is a selection process, and selection produces winners by chance alone when the pool is large enough. Monte Carlo runs on the survivor and tells you nothing about how many corpses it stepped over.

The Six Test Types Are Not Interchangeable

Grouping these Monte Carlo simulations together as one property called robustness is a mistake I made repeatedly, and the tests answer genuinely different questions.

TestWhat it examinesCategory
Randomized indicator parametersSensitivity to nearby settingsStrategy variation
Random starting barDependence on the chosen historical windowStrategy variation
Randomized spreadSensitivity to transaction cost changesMarket variation
Randomized price historySensitivity to data perturbation assumptionsMarket variation
Randomly skipped positionsDependence on receiving every expected fillExecution problem
Randomly closed positionsSensitivity to premature exits or interruptionsExecution problem

A strategy might sail through parameter randomization and collapse under spread widening. Those outcomes tell you different things and suggest different remedies, so reporting a single pass or fail across all six loses most of the information.

Randomized Parameters

In this Monte Carlo variant the software repeatedly shifts indicator values by small amounts, then re-runs, mimicking by hand what you would do by manually nudging a moving average period and re-testing.

Passing suggests the result doesn’t rest on one precise combination. Failing is more informative than passing, honestly: a strategy that only works at period 14 and falls apart at 13 and 15 has almost certainly found noise.

What you cannot conclude is that your chosen values are correct or that the underlying logic captures anything real. Nearby settings failing together is entirely possible when they all share the same flawed premise.

Random Starting Bar

Here the Monte Carlo simulations begin from various points scattered through the dataset rather than always from the same date.

My original wording claimed this proves a strategy is not over-optimized for the period, and that a passing result means it doesn’t matter when you attach it to a chart. Both statements were too strong.

Here’s the more careful version. Passing suggests the outcome isn’t wholly dependent on one starting date inside the tested history. That’s useful, and it does catch some cases where a generator fitted parameters to one specific window. What it cannot rule out: parameter overfitting more broadly, indicator selection bias, symbol and timeframe selection bias, or the possibility that the entire dataset represents one favourable regime.

Different starting points inside the same three years of price data are still the same three years. If conditions across that whole span suited the logic, every start date will look fine, and you will have learned nothing about the next three.

Spread and Data Randomization

Monte Carlo spread variation matters most for anyone whose broker quotes floating costs that widen sharply around news or rollover. Running the test with randomized spreads shows whether the historical result survives when costs move within the band you specified.

Note the qualifier. You specified the band. A strategy tolerating spreads between one and three points says nothing about behaviour at eight during a volatility spike.

Price history randomization perturbs the underlying sequence itself. Useful when your data quality is questionable or your feed has gaps, though it raises a methodological question the original article never addressed: does the randomization preserve volatility clustering and serial correlation? Real currency markets exhibit both. A perturbation method that scrambles them tests a world that doesn’t exist.

Execution Tests Deserve More Respect

Skipped and prematurely closed positions were the two Monte Carlo simulations I used to dismiss, on the reasoning that fully automated systems shouldn’t experience interference, and that anyone suffering from execution problems should switch brokers.

That advice was too glib, and I’d revise it now.

Positions genuinely do get missed, for reasons having nothing to do with a bad broker: connection drops, platform restarts, a virtual server rebooting for updates, requotes during fast movement, margin shortfalls, or the terminal simply being closed. A strategy whose entire result depends on catching two specific entries out of four hundred is fragile in a way worth knowing about, and the skipped-position test surfaces exactly that.

Changing broker also solves less than I implied. Slippage during announcements is a property of the market, not of a particular firm.

So run those tests. They cost minutes, and a strategy that falls apart when five percent of entries go missing is telling you something about concentration risk.

The 80 Percent Rule, Examined Honestly

My working rule has been that at least 80 percent of Monte Carlo runs should stay positive, which with twenty runs means sixteen.

Two examples from the original recording: one candidate returned fifteen of twenty and got rejected, another returned seventeen and passed.

Now let me take that rule apart, since it deserves scrutiny.

Twenty is too few. With twenty draws, the difference between fifteen and sixteen is well inside sampling noise. Re-run the same strategy with a different random seed and the fifteen might become seventeen. Hundreds or thousands of runs cost more time and produce a distribution you can actually read.

Profitable is a low bar. A run finishing one dollar up counts identically to one finishing five thousand up. Counting positive outcomes discards the magnitude entirely.

Where did 80 come from? Experience and instinct, not validation. I have never tested whether strategies clearing that threshold subsequently outperformed those falling just below it, and until somebody does, the number is a convention rather than a finding.

Better measures to look at across a large set of runs:

MetricWhat it tells you
Median resultThe typical outcome, less distorted than an average
Fifth percentileA reasonable bad case
Worst outcomeThe tail you would actually have to survive
Maximum drawdown distributionNot one figure but a spread of them
Probability of finishing negativeMore informative than a pass count
Probability of ruinChance of hitting an account-ending level
Longest losing streakWhat you would need to sit through
Recovery factorResult relative to the worst decline

Reporting a median and a fifth percentile beats reporting sixteen of twenty. Probability distributions carry information; a single ratio throws most of it away.

Settings You Should Publish

Any Monte Carlo result means nothing without its simulation design, and this is the disclosure the original page lacked entirely:

  • How many runs
  • Random seed policy, and whether results replicate
  • Distribution used for parameter changes, and the permitted deviation
  • Spread distribution and bounds
  • Price randomization method
  • Whether position order is shuffled
  • Whether outcomes are sampled with replacement
  • Whether serial correlation and volatility clustering survive
  • Whether costs vary by session
  • Which metrics define a pass

I keep the software defaults, which are sensible enough that I’ve never felt a need to change them. Reasonable position, though it also means I cannot tell you precisely what deviation those defaults apply, and neither could a reader trying to reproduce my results. Publish yours.

Acceptance Criteria Come First

Before any Monte Carlo work begins, candidates have to clear basic quality thresholds. Mine, from the generator:

CriterionValueReason
Minimum test quality98Guards against ambiguous bar problems
Minimum positions350Small samples prove nothing
Minimum profit factor1.2Gross gains twenty percent above gross losses
Minimum R-squared60Prefers steadier equity curves

Two corrections to how I described these in 2019.

Profit factor is gross profit divided by gross loss, using the absolute value of the loss figure. My earlier description called it net profit against net loss, which is not the same calculation and would produce a different number.

R-squared measures how closely the resulting curve tracks a straight line. Higher readings mean fewer wild deviations from that line. What it does not measure is direction, net result, or significance: a steadily declining curve fits a line beautifully and scores well. Read it alongside slope, drawdown, position count, and costs, never alone.

Ambiguous Bars, Precisely

Worth getting this right, because the original explanation implied one platform produces the correct answer.

Standard price bars record four values: open, high, low, close. What happened between them is unrecorded. When a strategy’s protective exit and its target both sit inside a single bar, the sequence is genuinely unknown.

Different platforms resolve that differently. MetaTrader assumes the target came first. The generator I use assumes the protective exit did.

I prefer the second, since a system whose history is full of ambiguous bars resolved optimistically will look considerably better than it deserves. But the pessimistic choice is a conservative assumption, not a reconstruction of what actually happened. Nobody knows what happened. Higher-resolution data reduces how often the ambiguity arises without eliminating modelling limitations entirely.

Which is why the quality threshold sits at 98. Below that, too many outcomes depend on an assumption rather than on evidence.

Where Monte Carlo Sits Among Other Checks

Monte Carlo testing is one layer. Not the last word, and not a substitute for the layers around it.

StagePurpose
Rule definitionMake the logic objective and reproducible
Data quality reviewCheck timestamps, gaps, prices, costs
In-sample buildBuild and inspect
Out-of-sample checkAssess on data never used for development
Monte Carlo stress testingMeasure sensitivity to chosen perturbations
Walk-forward analysisTest repeated adaptation across time
Demo forward testingWatch execution under current conditions
Small live deploymentMeasure real fills and operational behaviour
Ongoing monitoringDetect decay and regime change

The distinction people miss most often: out-of-sample testing uses data the build process never saw, while Monte Carlo simulations re-use the same data with modifications. Different questions entirely. Passing one says little about the other, and a strategy clearing every perturbation check on a dataset it was fitted to remains fitted to that dataset.

Walk-forward sits somewhere between, repeatedly re-optimizing on a rolling window and testing forward, which at least approximates how you would actually operate.

Reading Pass and Fail Results

Failing is unambiguous and useful. Something in your logic depends on a condition the test removed, and that dependency is worth finding before capital does the finding for you.

Passing is where interpretation goes wrong. It means the historical outcome held up under the specific changes you applied, using the settings you chose, on the data you had. Reasonable people then say “the strategy is robust”, which compresses all those qualifications into one word that sounds like a verdict.

Better phrasing for your own notes: passed randomized-parameter and random-start testing at the default deviation across 20 runs, median result X, fifth percentile Y. Longer, less satisfying, considerably more honest.

Common Mistakes

  • Treating a Monte Carlo pass as validation: It’s one diagnostic among several.
  • Running too few iterations. Twenty gives a coarse picture, and small differences mean nothing.
  • Counting positive runs only: Magnitude and drawdown carry more information.
  • Applying it before out-of-sample testing: Order matters; unseen data comes first.
  • Ignoring the selection process: Hundreds of candidates screened down to a few is itself a source of false positives.
  • Skipping execution tests: The mistake I made for years.
  • Never publishing the settings: Nobody, including future you, can interpret results without them.

Frequently Asked Questions

How many iterations should I run? 

Hundreds at minimum, and thousands if your software allows it, because the distribution only stabilizes with sample size. Twenty runs give a coarse estimate where small differences fall inside random variation, so a result of fifteen against sixteen may simply reflect the seed the software happened to use. Larger sets take longer but produce percentiles and probability figures you can actually reason about, rather than a single pass ratio that discards most of the information.

Does Monte Carlo work for manual trading strategy work? 

Partly. Perturbation methods that resample outcome sequences apply to any recorded set of results, manual or automated, and they usefully show how differently the same results might have unfolded. Parameter randomization does not transfer, since a discretionary approach has no fixed values to vary. The larger problem is that manual records rarely contain enough positions for meaningful analysis, and human decision-making itself introduces variation no simulation can model.

What is probability of ruin? 

An estimate of the chance your account falls below a level you have defined as unrecoverable, calculated across many simulated paths rather than from one historical sequence. Position sizing, win rate, and reward ratio all feed into that financial estimate. The figure matters more than expected return for anyone deciding how large to trade, since a system with attractive average results and a meaningful probability of ruin will eventually find that outcome given enough time.

Can it be applied to a portfolio rather than one strategy? 

Yes, and doing so is more informative than testing systems individually, because correlation between them determines combined risk. Running perturbations across the whole set reveals whether several strategies fail together under the same conditions, which individual analysis cannot show. Portfolio-level results are frequently worse than the individual figures suggest, since systems built on similar logic tend to encounter their bad periods simultaneously rather than politely taking turns.

Should results change how I size positions? 

They can, and that is arguably the most practical use. Percentile drawdown figures across many runs give a more realistic worst case than the single historical maximum, and sizing from that wider figure leaves room for outcomes your history happened not to contain. Bear in mind the simulated worst case is still bounded by your data and your assumptions, so treating it as a hard floor rather than an estimate reintroduces the same false confidence.

Is a strategy passing every test ready for live capital? 

No. Passing means it survived the specific perturbations you applied to data it was developed on. Out-of-sample results, forward testing on a demo account under current conditions, and a period of small live deployment all remain necessary, and each surfaces problems the others cannot. Treat robustness checking as a filter removing fragile candidates rather than a certificate qualifying survivors. Plenty of systems clear every simulated hurdle and disappoint immediately in practice.

Do the tests distinguish luck from skill? 

Not directly, and this limitation is fundamental. Perturbation methods measure sensitivity, not causation, so a strategy that stumbled onto a coincidental historical pattern can pass comfortably provided the pattern is stable across the modifications applied. Distinguishing genuine edge from coincidence requires reasoning about why the logic should work, out-of-sample confirmation, and eventually live performance evidence. Statistical checks narrow the field without ever settling the question.

What software runs these tests?

 Expert Advisor Studio includes the module described throughout this page, offering the six variants covered above with configurable deviation settings. Alternatives exist in most serious strategy builder platforms, and some traders write their own resampling routines in Python, which offers complete control over the perturbation design at the cost of building it yourself. Whichever tool you choose, publishing its settings alongside your results matters more than which one it is.

Disclosure: The author has a commercial relationship with Expert Advisor Studio and sells courses covering the workflow described here. Content is educational and does not constitute a recommendation to trade. Historical and simulated results describe past conditions only.

About the Author

Petko Aleksandrov

Chief Mentor & Founder

Founder of EA Academy and Algo Trading Space with over 100,000 students educated globally. Petko combines practical trading experience with rigorous testing methodology, setting new standards for transparency in the algorithmic trading industry.

View Profile

Related Posts

EURUSD Scalping Strategy: 7-Candle M1 Setup, EA Rules, Backtest Results, and Risk Controls
EURUSD Scalping Strategy: 7-Candle M1 Setup, EA Rules, Backtest Results, and Risk Controls

Scalping EUR/USD is popular for a reason: it is the most liquid currency pair in the forex market, spreads are typically tight during the main session...

9/7/2026
What Is Forex Swing Trading Strategy? Build the Full Framework First

Note: This article covers general forex swing trading concepts for educational purposes. It does not promote or endorse any specific expert advisor, a...

8/31/2026
What Is Forex Swing Trading Strategy? Build the Full Framework First
  • Share

Comment

No comments yet. Be the first to comment!

Leave a Comment

Your email address will not be published. Required fields are marked with *