A strategy is robust when its performance survives reasonable changes to the assumptions it was built on. You test that by altering one assumption at a time and watching what happens: hold back data the strategy never saw during development, re-run the simulation from different starting points, shift the indicator settings slightly, widen the spread, add slippage, and try comparable instruments. A durable strategy stays acceptably profitable across most of those variations. A fragile one falls apart as soon as a single assumption moves, which usually means its rules were fitted to the randomness in the development data rather than to a repeatable market behaviour. None of these checks improve the strategy. They tell you how much confidence its recorded track record deserves, which is a different and more useful thing.
| Check | What it changes | What failure suggests |
| Unseen data | The evaluation window | Rules were tuned to the development sample |
| Simulated variations | Many things at once, randomly | Performance depended on one exact sequence of events |
| Setting shifts | Indicator inputs | The edge sits on a knife-edge, not a plateau |
| Start-date shifts | Where the test begins | Results hinge on one lucky opening stretch |
| Execution costs | Spread, slippage, fills | Margins are too thin to survive a real broker |
| Comparable instruments | The traded symbol | Possibly a quirk of one dataset, though see the caveat below |
What Makes a Trading Strategy Durable
Durability is not a score. It describes a trading strategy that keeps producing acceptable output when you make reasonable changes to its inputs: the settings, the evaluation window, the data source, the assumed spread, the execution quality, or the instrument. Fragility is the opposite condition, and it looks the same from the outside until you go looking for it. A fragile strategy performs well under the exact conditions used during development and poorly under anything else.
That distinction matters because the number of ways to build a losing strategy that looks like a winner is very large. Bailey, Borwein, López de Prado and Zhu demonstrated the mechanism formally: high simulated performance is easy to reach after trying a relatively small number of configurations, and the more configurations you try, the higher the probability that the winning one is an artefact of the search rather than a real edge (Notices of the American Mathematical Society, 61(5), May 2014). Automated generation makes this worse, not better, because software can evaluate thousands of rule combinations in an afternoon.
So the question is never “did it make money in the test”. It is “how much of that result would remain if the world had been slightly different”. Every check below answers a version of that question by breaking one assumption on purpose and measuring the damage.
Two habits make any assessment of robustness more honest. Decide your acceptance criteria before you run anything, because thresholds chosen after seeing the output are just another form of fitting. And keep a record of how many variants you tried before settling on one, since that count is itself evidence about how much of the result you should believe.
Profit Is Not the Same as Durability
These two ideas get blurred constantly, including in the earlier version of this page, whose title promised to show whether a system was profitable. Profitability answers a narrow question about one simulation. Durability asks whether that answer holds up.
| Profitability test | Durability check |
| Asks whether the system made money in a particular simulation | Asks whether performance survives reasonable changes |
| Can rest entirely on one tuned set of inputs | Deliberately tests alternative input values |
| Usually examines a single configuration of history | Examines many scenarios, including unfavourable ones |
| A strong result can still be an artefact of the search | Designed to expose exactly that artefact |
The example later in this guide makes the point better than any table. A strategy built and tuned on GBPUSD looked convincing on its equity curve, then deteriorated once the measurement span was extended and again once related pairs were tried. Nothing about the original profit figure was false. It was simply answering a question nobody should have been asking on its own.
1. Hold Back Data the System Never Saw
The first check is the oldest and still the most informative: evaluate the rules on data that played no part in creating them. Split your history, develop on the first portion, and keep the remainder sealed until the rules are final. If performance on the sealed portion resembles performance on the development portion, that is meaningful evidence. If it collapses, the rules were describing that first portion rather than the market.
Out-of-sample evaluation has one weakness. You only get to use each reserved portion once, honestly. The moment you look at the reserved results, adjust the rules, and look again, that data has become part of the development set, and repeating the cycle a dozen times converts a genuine test into a slow, disguised optimisation.
Rolling validation addresses that by moving the split forward repeatedly: develop on a window, evaluate on the next block, move the whole frame along, and repeat across the full history. The output is a chain of evaluations on data that was future-dated relative to each development step, which is much closer to how the strategy will actually be used. Our guide to walk forward analysis covers the mechanics, the window-sizing choices, and the efficiency ratio in detail, so this guide treats it as one named check rather than repeating that material.
Choose the split with market regimes in mind rather than by calendar convenience. A development window that contains only a trending stretch and an evaluation period that contains only a range will produce a failure you cannot interpret, because two things changed at once. Backtesting across a span wide enough to include both, then splitting inside it, keeps the comparison meaningful.
One point deserves emphasis because it is routinely misunderstood. A validation pass does not change the strategy. It measures it. If your software rewrites the inputs during the process, you are optimising, not validating, and the output cannot be read as evidence of durability.
2. Simulate Variations of the Same History
Monte Carlo methods take the single path your evaluation used and generate many alternative versions of it, then report how the system performed across the whole distribution rather than on the one path that happened. The value is in what that distribution reveals: a strategy that survives most variations is behaving differently from one that only survives the exact sequence of events in your file.
Petko Aleksandrov, who built the workflow this page originally documented, puts the purpose bluntly: the simulation tries to break the strategy before any money is committed. That framing is the right one. You are not looking for confirmation. The point is to find the trading conditions under which the thing fails.
What can be varied falls into three groups:
- Market conditions. Spread, and the underlying price series itself, swapped for data from a different provider or forex broker feed.
- Execution quality. Skipped entries, delayed fills, and slippage on both entry and exit.
- System inputs. Indicator settings, and the bar the evaluation starts from.
Each variation isolates a different failure mode, and each has a different meaning when it goes wrong, which is why reading a summary pass rate without knowing which simulations failed tells you very little. Failures concentrated in the execution group point at a system too sensitive to fill quality, which is a broker and instrument problem you may be able to solve. Those clustered in the input group point at fitting, which you generally cannot.
Our article on what Monte Carlo simulation proves and what it cannot goes further into the limits of the method, including the important one: resampling your own history cannot tell you how the system behaves in conditions that history never contained.
3. Shift the Settings Slightly
Take every indicator input and move it a small amount in both directions, then compare the outcomes. What you want to see is a plateau, meaning neighbouring values produce broadly similar behaviour and the chosen value sits somewhere in the middle of a stable region. A spike is the opposite, and the thing to avoid: the selected value performs far better than the settings immediately either side of it.
Why does that shape matter so much? Because a spike is what fitting to randomness looks like when you plot it. Markets do not care that your moving average is set to 34 rather than 33 or 35. If your results do, the number is capturing something specific to your data file rather than a behaviour that will recur.
Work through the indicators one at a time rather than moving several inputs together, since simultaneous changes hide which parameter carried the result. Record the output at each setting so the shape of the surface is visible rather than remembered. Parameter sensitivity of this kind is cheap to run and tells you more per minute of computation than almost anything else available.
This check is quick and unusually diagnostic. It also gives you a better final configuration in many cases, because moving from a spike to the middle of a nearby plateau costs some simulated profit and buys a meaningful amount of durability. That trade is almost always worth making, and traders who refuse it tend to be the ones defending a number they cannot explain.
Sensitivity analysis is where automated builders do their most quietly dangerous work. An optimiser that steps through inputs in increments of one will find the single best value very efficiently, and efficiency is precisely the problem: the best value found that way is usually the peak of a spike.
4. Start the Test Somewhere Else
Move the first bar of the evaluation forward or back and re-run. A trading strategy whose edge is real should not care much where the measurement began. A system whose equity curve was built on one fortunate opening stretch will show its dependence immediately, because removing that stretch removes most of the result.
The mechanism is easy to picture. Suppose the first eight weeks of your test contained a strong directional move that suited the rules perfectly. Everything after that may have been mediocre, but the early gains carry the curve, and the summary statistics look healthy. Shift the start past those weeks and the truth appears.
Run this check several times from different points rather than once, and look at the spread of outcomes instead of the best or worst single run. Consistency across starting points is the signal. One good run among several poor ones is the same information as one profitable simulation among many failures, which is to say, not encouraging.
5. Make Execution Worse Than You Expect
Every simulation makes assumptions about cost, and every one of those assumptions is optimistic by default. Widen the spread beyond your broker’s advertised average, add slippage to entries and exits, and delay or skip a portion of fills, then see what remains.
Strategies that trade frequently for small gains are the most exposed here, because cost is a larger share of each result. A scalping approach with an average win of a few pips can be converted from profitable to unprofitable by a spread assumption that is wrong by less than one pip, and spreads widen exactly when such systems tend to be active, around news and at session boundaries. Longer-horizon approaches absorb execution friction more comfortably, though they pick up overnight financing costs instead.
Two practical notes. Test with data from more than one source where you can, since feeds differ in their tick detail and in how they represent gaps, and a system that only works on one provider’s file is telling you something. And treat the quality of your history as part of the test rather than as background: real spread behaviour, weekend gaps and rollover effects all belong in a serious evaluation, which is why the quality of your price data is worth as much attention as the rules themselves.
6. Try Comparable Instruments
Run the same rules, unchanged, on related symbols. If a strategy built on GBPUSD behaves recognisably on EURGBP or AUDUSD, that is additional evidence it has captured something broader than an idiosyncrasy of one dataset. If it produces losses everywhere else, that is a reason to look harder at how it was built.
Now the caveat, because this check is the one most often overstated. Failure elsewhere does not automatically invalidate a system designed for one pair. Instruments have genuinely different characteristics: liquidity profiles, session behaviour, typical volatility and correlation structure all vary, and a rule set tuned to one of them may legitimately not transfer. Treat cross-instrument results as a stress test that adds or subtracts confidence, not as a rule that says a strategy must work everywhere to be worth trading.
Choose comparisons sensibly. Related forex pairs are the right neighbours for a currency strategy. Gold, oil and equity indices are not, and testing there produces output you will be tempted to over-interpret. Ignoring correlation cuts the other way too: EURUSD, GBPUSD and AUDUSD share a great deal of dollar exposure, so passing on all three is weaker evidence than it appears.
The original demonstration on this page is a good illustration. The GBPUSD system that had been tuned with a step of one showed losses across every comparison pair tried, which, combined with its deterioration over a longer window, made fitting the most likely explanation. Not a certain one. The most likely one.
What Counts as a Pass?
This is the question the old version of this page never answered, and it deserves a direct response: a pass means the majority of reasonable variations preserve the strategy’s essential behaviour, not that every simulation stays profitable.
Expecting a perfect record is the wrong standard, and chasing it pushes you back toward the fitting problem you are trying to detect. Some variations should fail. A system that survives every execution assumption you throw at it, including implausibly bad ones, is more likely to be reporting an error than an edge.
What a robustness test is looking for is proportional degradation. Small changes to inputs should produce small changes in output. Large deterioration from a small perturbation is the signal that matters, and it matters more than the absolute numbers in any individual run.
Set the acceptance bar before you look. Decide in advance what proportion of simulations must hold, how much drawdown expansion you will tolerate, and how much of the profit factor can erode before you discard the system. Thresholds picked afterwards will always be the ones your system happens to clear.
Fold your risk limits into the criteria while you are at it. If a strategy only clears your bar at a position size that breaches your drawdown tolerance, it has not really passed, and traders who separate the two decisions tend to discover the conflict after funding the account rather than before. Validation and risk control answer different questions, and both have to be satisfied before live trading begins.
Software that reports a pass count, such as the 19 of 20 in the demonstration below, is applying its own internal criteria. Those counts are useful for comparing strategies within the same tool, and they are not transferable standards. Before relying on any built-in threshold, read the documentation for how it is calculated, because a figure whose derivation you cannot explain is not evidence you can act on.
One more principle, from the same academic work cited earlier: the count of combinations you tested before choosing this one belongs in your assessment. Bailey and López de Prado formalised the adjustment as the deflated Sharpe ratio, which corrects a performance figure for selection bias and for the number of trials behind it (Journal of Portfolio Management, 40(5), 2014). Few retail platforms implement it. The underlying idea costs nothing to apply informally: the more you searched, the less any single winner should impress you.
Signs a Trading Strategy Is Fitted to Noise
Five signals, any of which should slow you down:
- Performance deteriorates substantially when more history is added. The clearest and most common tell.
- Small input changes cause large output changes. The spike shape described above.
- Results depend heavily on where the evaluation starts. One fortunate stretch carrying everything after it.
- Most simulated variations fail. Especially when the failures cluster in the input group rather than the execution group.
- Behaviour does not carry across to comparable instruments. Weaker evidence than the others, and still worth noting.
Two or more of these together is a strong case for rebuilding rather than adjusting. Adjusting a system that failed these checks usually means fitting it again, more carefully, to the same data.
Robustness Testing in EA Studio
The workflow this page originally documented automates most of the sequence above, and it is worth seeing how the pieces map onto the framework.
In the Reactor, generated strategies pass through optimisation and then through validation. The distinction between those two stages is the one to hold onto: optimisation modifies what the generator produced, while the validation stage does not modify anything. It only reports whether the system survived. Anything that fails never reaches the Collection.

Three checks are available. The rolling evaluation described in section 1 runs first, and a result materially worse than the original indicates the generated version was over-fitted. The simulation stage runs the variations described in section 2, with the market, execution and input groups selectable independently. Multi Market runs the comparison from section 6 across whichever symbols you choose, with a settable number of instruments that must validate.
Aleksandrov’s own configuration favours randomised indicator inputs and a randomised starting bar, which is a sensible default: those two together cover the fitting failure modes that matter most, and they are the checks that exposed the GBPUSD example. In that demonstration, 19 of 20 simulations validated, which sounds strong until you read it alongside the deterioration over a longer window and the losses on comparison pairs. Read together, the three results told a consistent story.
His conclusion about the Optimizer is worth repeating because it runs against the usual sales pitch: the tool is powerful enough to be dangerous, since it finds the best inputs so efficiently that it will happily hand you the peak of a spike. Validation afterwards is what keeps that power useful. For the mechanics of each control, the Monte Carlo documentation covers the settings in full.

One framing point about tools in general. Automated builders make strategy robustness cheap to assess, and that is their real value: the generation step is commodity work, while the validation step is where judgement still matters. Whichever platform you use for backtesting, the sequence in this guide applies unchanged, because the questions being asked belong to the method rather than to any product.

A practical note from the same session: reducing the data horizon speeds up generation considerably, at the cost of testing across fewer conditions. That is a real trade, not a free optimisation, and the shorter your evaluation window, the more weight the checks in this guide have to carry.

A Sequence to Follow
- Fix the criteria in writing before you start.
- Develop on part of your history and seal the rest.
- Evaluate on the sealed portion, or run rolling forward testing across the full record.
- Shift the inputs and confirm you are on a plateau rather than a spike.
- Re-run from several alternative starting bars.
- Degrade execution assumptions beyond what your broker advertises.
- Try comparable instruments, and read the outcome as evidence rather than as a verdict.
- Count the variants tested before choosing, and discount accordingly.
- Deploy on a demo account and compare live behaviour against the simulated record before committing capital.
FAQs
What does it mean for a trading strategy to be robust?
It means the rules still behave acceptably once you alter the conditions they were built under: a different measurement window, slightly different settings, worse execution, or another data source. Fragile ones behave well only under the single configuration they were tuned on. The distinction matters because both look identical on a single equity curve, and the difference between them only appears once you deliberately change something and measure what happens.
How much historical data do I need before the checks mean anything?
Enough to cover several different market conditions rather than a fixed number of months. A currency strategy evaluated only across a trending stretch has not been tested against ranging or high-volatility conditions, however many bars that stretch contained. Aim to include at least one clear trend, one range, and one volatility shock, ideally spanning several calendar years. Shorter windows are not useless, though they place far more weight on the simulated variations and the execution checks described above.
Can a strategy pass every check and still lose money live?
Yes, and expecting otherwise misreads what these methods do. They measure how dependent a recorded result was on its assumptions; they cannot tell you whether the behaviour the strategy exploits will continue. Conditions shift, spreads change, and edges decay. Validation raises the odds that a recorded result reflects something real, which is worthwhile and materially different from a guarantee. Demo deployment before live capital remains the sensible final step, and monitoring live trading against the simulated record remains sensible after that.
How is Monte Carlo simulation different from re-running a backtest?
Re-running produces the same output, because the data and the rules are unchanged. The method generates many altered versions of the same history, varying spread, fills, inputs or the starting point, and reports the distribution of outcomes rather than a single figure. The output answers a different question: not “what did this trading strategy earn”, but “how much did that number depend on the exact path events happened to take”.
Should I test my system on unrelated instruments?
Generally no. Comparable instruments give useful evidence because they share broad characteristics with the one you built for, while unrelated ones differ so much in volatility, liquidity and session behaviour that failure there proves very little. Testing a currency strategy on gold or equity indices produces output you will be tempted to over-interpret in either direction. Stay within the neighbourhood, and remember that closely correlated pairs offer weaker confirmation than they appear to.
What is the difference between optimisation and validation?
Optimisation searches for input values that improve a recorded result, which changes the strategy. Validation measures whether a finished strategy survives changed conditions, and changes nothing. Confusing the two is the most common process error in automated development, because a tool that adjusts inputs during what you believe is a test has quietly fitted your trading strategy further to the same data while appearing to confirm it. Check what your platform does at each stage before you trust its output.
Do these checks apply to manual strategies as well as automated ones?
The principles do, though the tooling differs. A discretionary trader can still reserve part of their history, evaluate rules against different periods, test how sensitive the outcome is to entry criteria, and account for realistic costs. What manual work cannot easily replicate is the volume of simulated variations that software produces cheaply, which limits how thoroughly the fourth and fifth checks can be run. The concepts transfer completely; only the speed of running them changes.
Does passing these checks replace risk management?
No, and treating them as interchangeable is a common error. Validation tells you how far a recorded result can be trusted; risk control governs what happens when that confidence turns out to be misplaced. Position sizing, a maximum loss per trade, and a limit on correlated exposure remain necessary whatever the test output says. Traders who skip them because a strategy passed every check have simply moved the risk somewhere less visible.
Trading foreign exchange and other margin products carries a substantial risk of loss and is not suitable for every investor. Nothing above is financial advice. Passing any validation check describes past behaviour only and does not indicate future performance.




Comments
No comments yet. Be the first to comment!
Leave a Comment
Your email address will not be published. Required fields are marked with *