VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
ACADEMY / Backtesting and validation

Monte Carlo backtest: your real max drawdown is probably worse

The max drawdown in a backtest report is one ordering of the same trades, usually a kind one. A Monte Carlo backtest replays those trades in thousands of other orders. Size the position from the 95th percentile of that spread, not from the reported number.

By · Published · updated · Editorial policy

Contents
  1. What is a Monte Carlo backtest, and why is my real max drawdown probably worse?
  2. What is a Monte Carlo simulation, and when was it invented?
  3. How does a Monte Carlo simulation work on a backtest: reshuffle, resample, execution or start bar?
  4. Is bootstrapping a Monte Carlo method?
  5. How do you run a Monte Carlo simulation on a backtest?
  6. How many trades do you need for a Monte Carlo backtest?
  7. How do you read the distribution: median, 95th percentile and worst case?
  8. How do you size the position from the 95th percentile?
  9. What can Monte Carlo analysis not fix: same trades, same market, overfitting?
  10. Should you run Monte Carlo before or after walk-forward analysis?
  11. Frequently asked questions
  12. References

What is a Monte Carlo backtest, and why is my real max drawdown probably worse?

A Monte Carlo backtest replays the closed trades of a finished backtest thousands of times in a different random order and records the max drawdown of each replay. The drawdown in your report is one ordering among those thousands, and it is usually a kind one. Size the position from the 95th percentile of the replays, not from the reported number.

Max drawdown is the largest fall of the equity curve from a peak to the lowest point that follows, before a new peak is made. It depends on the order of the trades, not on their sum. Adding the same numbers in a different order gives the same total, but the path between start and end changes. If the losing trades happen to be spread out across the history, the reported drawdown is small. If they happen to arrive close together, it is large. Nothing in the strategy decides which of these two histories you get; the market decided it once, and your report shows that one outcome.

The reported drawdown is usually a kind ordering for a simple reason: the strategy that reaches your screen was chosen partly because its report looked good, and a small drawdown is part of looking good. A strategy whose losers clustered badly in the past was probably discarded before anyone looked twice. So the survivors that you study have, on average, a reported drawdown that sits at the friendly end of what the same trades could have produced. Reshuffling shows where it sits. You can paste your own list into the free Monte Carlo simulator and see the spread in a minute, and the drawdown calculator gives you the reported number from an equity series if your platform does not print it.

Hypothetical example

Six trades: +3, +2, −2, +4, −3, +1. In this order the equity goes 3, 5, 3, 7, 4, 5. The peak is 7, the low after it is 4, so the max drawdown is 3. Now put the losses first: −3, −2, +3, +2, +4, +1. The equity goes −3, −5, −2, 0, 4, 5. It falls from 0 to −5 before recovering, so the max drawdown is 5. Both orders end at +5. The total did not move. The drawdown grew by two thirds.

Two equity curves from the same six example trades: order A gives a max drawdown of 3, the order with losses first gives a max drawdown of 5, and both end at plus 5 Same trades, deeper drawdown Six example trades, both end at +5 Order A Losses first Drawdown 3 Drawdown 5 The order sets the drawdown. So: never trust a single ordering.
The same six example trades in two orders. The total is +5 in both. The max drawdown is 3 in one order and 5 in the other.

What is a Monte Carlo simulation, and when was it invented?

A Monte Carlo simulation is a method that estimates a quantity that is hard to calculate directly by drawing random samples many times and reading the spread of the outcomes. The method was described in print by Nicholas Metropolis and Stanisław Ulam in 1949. In trading, the quantity you want is the drawdown your trades could have produced in another order, and the random draw is the order itself.

An everyday comparison: if you want to know how often two dice add up to seven, you can work out the arithmetic, or you can roll the dice a thousand times and count. The second way is a Monte Carlo simulation. It does not give one exact answer; it gives a count that gets steadier the more times you roll. The name refers to the casino in Monte Carlo, because the method depends on repeated chance draws, like a game of chance.

You do not need the physics behind the original paper. What carries over to trading is the move itself: when the exact answer is out of reach, follow many random cases and summarise them. In trading it is used for three things:

  • the range of max drawdown the trades of a strategy could produce in another order;
  • the range of ending balance when trades are drawn with replacement, so that a few trades may appear twice and others not at all;
  • the share of simulated paths that cross a loss limit, which is a practical form of risk of ruin.

Monte Carlo analysis in trading is therefore a tool about paths, not about edges. It takes the trades as given and asks how uncomfortable the same set of trades could have been. Why one backtest curve hides this is the subject of the equity curve simulator guide, which looks at a single curve from the same angle.

One trade list gives one equity curve and one drawdown; the same list drawn in 10,000 random orders gives a histogram of drawdowns, a method described by Metropolis and Ulam in 1949 One list, 10,000 paths Monte Carlo: Metropolis & Ulam, 1949 One order One drawdown 10,000 orders 10,000 drawdowns One curve hides the spread. So: replay the order many times.
One list gives one curve and one drawdown. The same list drawn 10,000 times gives a histogram of drawdowns. The method dates from Metropolis and Ulam, 1949.

How does a Monte Carlo simulation work on a backtest: reshuffle, resample, execution or start bar?

Four different changes go by the name Monte Carlo in backtesting, and they answer four different questions. Mixing them up is the most common source of confusion, because two of them keep the total profit fixed and two do not, and two work on a finished trade list while two must re-run the backtest.

VariantReshuffleResample with replacementExecution degradationRandom start bar
What changesThe order of the closed tradesWhich trades are drawn; some twice, some neverFills worse by 1–3 ticks, or a share of trades skippedThe first allowed entry is delayed by a random number of bars
Total profitFixedVariesVariesVaries
Backtest re-runNoNoYesYes
Question answeredHow deep could the drawdown get?Could the balance end below zero?Does the edge survive worse fills?Does the result depend on one lucky start?

Reshuffle. Every closed trade is used exactly once, in a new random order. The ending balance is identical in every run, because addition does not care about order. Only the path moves, and with it the max drawdown and the longest losing streak. This is the variant the rest of this article uses for drawdown.

Resample with replacement. Each position in the new list is filled by drawing from the original trades, and a drawn trade is put back so it can be drawn again. The new list has the same length, but some trades appear twice and others not at all. Now the ending balance moves too, so you can count how many runs end below zero.

Execution degradation. The fills are made worse on purpose, for example a random slippage between 1 and 3 ticks on each run, or a random share of trades skipped. Anything that touches prices or costs has to re-run the backtest for every simulation, so it is far slower than shuffling a list. The numbers are more meaningful when the starting point already includes costs: AlphaPrime (Valynox) charges fees and slippage with next-bar execution inside every evaluation of its backtesting, so a degradation run starts from net results instead of gross ones.

Random start bar. The first allowed entry is delayed by a random number of bars, and the backtest runs from there. A breakout system that only produces its result when it starts on one particular Monday is telling you that the result belongs to that Monday, not to the rules.

Four Monte Carlo variants compared: reshuffle keeps profit fixed without a re-run and asks how deep the drawdown gets; resample varies profit without a re-run and asks if the balance ends below zero; worse fills and random start both vary profit, need a re-run, and ask whether the edge survives worse fills or depends on a lucky start Four tests named Monte Carlo Each asks a different question Test Profit Re-run Reshuffle How deep a drawdown? Fixed No Resample Ends below zero? Varies No Worse fills Survives worse fills? Varies Yes Random start Lucky start only? Varies Yes
Four changes that all carry the name Monte Carlo. Each one changes something different and answers a different question.

Is bootstrapping a Monte Carlo method?

Yes. Bootstrapping is the method of drawing samples from your own data with replacement, many times, to estimate how much a statistic could vary; it was formalised by Bradley Efron in 1979. Applied to a trade list it is exactly the resampling variant above, and it is the Monte Carlo variant that makes the ending balance move.

The comparison that helps most: reshuffling deals the same deck of cards in a new order, so every card is seen once. Bootstrapping draws a card, writes it down, puts it back, and draws again. After as many draws as there are cards, some cards were written down twice and some never. If the card drawn twice is your biggest winner, the resampled run ends higher than the original. If it is your biggest loser, the run ends lower. That is why a resampled distribution has a spread of ending balances while a reshuffled one has a single value.

In the measured NQ run described later in this article, 17% of the resampled runs ended below zero even though the original backtest ended with a profit. That number is not a forecast of the strategy. It says that with these 98 monthly results, a history in which a few of the good months did not occur and a few of the bad months occurred twice would have ended in a loss about one time in six.

Bootstrapping has a weakness on short lists. With 60 trades, a few large winners carry most of the profit. In a resampled run, one of them can be drawn twice and another not at all, so the ending balance swings far more than the real uncertainty of the strategy. The spread of ending balances then says more about the length of the list than about the trades. This is why the section on trade counts below asks for more trades before resampling than before reshuffling.

Eight trades resampled with replacement: draw A uses big winner trade 3 twice and skips trade 6, so it ends higher; draw B uses losing trade 7 twice, so it ends lower; a shuffle uses every trade once and ends the same Resampling moves the end Trade 3 is a big win, 7 a big loss Original Draw A Draw B Shuffle 12345678 12334578 13456778 52817364 Base Higher Lower Same Repeats change the ending balance. So: use it to count losing runs.
Resampling with replacement: trade 3 drawn twice and trade 6 never gives a higher ending balance; trade 7 drawn twice gives a lower one. Reshuffling uses every trade once and leaves the ending balance unchanged.

How do you run a Monte Carlo simulation on a backtest?

Export the closed trades or the monthly results, choose reshuffle or resample, run several hundred to 10,000 orders with a fixed seed, record the max drawdown of each order, and read the percentiles. A percentile is the value below which a given share of the runs fall; the 95th percentile drawdown is the number that 95 of every 100 simulated orders did not exceed.

  1. Export the list. Most platforms let you copy the trade list or the periodic results from the backtest report. One number per closed trade is enough: the net result in currency after commission and slippage. Monthly results work too, but the drawdowns you get back are month-end drawdowns, and the true intra-month drawdowns run deeper.
  2. Choose the variant. Reshuffle when you want the drawdown range of the trades you have. Resample when you also want to see how the ending balance could vary. Run both if you have enough trades; they answer different questions.
  3. Set the number of runs and a fixed seed. A seed is the starting number for the random generator; with a fixed seed, running the same list twice gives the same result, so you and a colleague can check each other. A few hundred runs show the shape of the distribution. Ten thousand runs make the 95th percentile steady to the last few percent.
  4. Record the max drawdown of each order. For every simulated order, compute the running equity, track the running peak, and keep the largest fall from a peak. That one number per run is what you collect.
  5. Read median, 95th percentile and the share crossing your stop limit. Sort the collected drawdowns. The middle value is the median. The value at position 95 of every 100 is the 95th percentile. Count the runs whose drawdown exceeds the loss at which you would stop trading the strategy; that share is your practical risk of ruin for this contract count.

The free simulator linked in the first section does all five steps from a pasted list and prints the percentiles. If you prefer to see every intermediate number, the article on Monte Carlo simulation in Excel builds the same steps by hand with RAND and SORTBY, one column per simulated order. Doing it once by hand is worth the time, because afterwards you know exactly what the percentile in any software means.

Five steps from a finished backtest to a drawdown percentile: export the closed trades, choose shuffle or resample, run 10,000 orders with a fixed seed, record each max drawdown, read the median and 95th percentile Five steps to a percentile Starting from a finished backtest 12345 Export the closed trades Choose shuffle or resample Run 10,000 with a fixed seed Record each max drawdown Read the median and 95th
From a finished backtest to a drawdown percentile in five steps.

How many trades do you need for a Monte Carlo backtest?

Under 100 closed trades the distribution is false precision; between 100 and 200 read only the median; above 200 the 95th percentile is steady enough to size an account on. Resampling needs more trades than reshuffling, because its weakness with large winners is worse on short lists.

Closed tradesWhat to doWhy
Under 100Do not run it; get more data firstThe drawdown is driven by four or five big losers. Shuffling 60 trades mostly asks what happens if those five arrive together, and the histogram makes that one question look like a precise distribution.
100 to 200Read the median onlyThe middle of the distribution is stable; the tails still move with a handful of trades. The 95th percentile can change a lot when one more large loser is added.
Above 200Use the 95th percentile for sizingNo single trade dominates the tail. The 95th percentile settles and moves little between seeds.

These numbers are a practical rule, not a theorem. The point is that the smoothness of a histogram comes from the number of simulations, while the information in it comes from the number of trades. Ten thousand reshuffles of 40 trades draw a beautiful curve around almost no information.

A slow weekly system on crude oil will not produce 200 closed trades in a decade, and there is no better tool for it. It is still better to write "not enough trades" in your notes than to print a 95th-percentile drawdown built on 40 of them and size an account on it. The measured run in the next section uses 98 monthly results rather than single trades; the monthly figures are smoother than trade results, which is why the median there is informative, and why the text treats the month-end drawdowns as a floor rather than as the whole story. By the rule above, 98 rows is a short list, so the 95th percentile there shows how to read the spread; it is not a sizing figure for that strategy.

A scale of closed trades in three zones: under 100 do not run the test, 100 to 200 read the median only, above 200 use the 95th percentile for sizing; resampling needs more trades than reshuffling Trust grows with trade count Closed trades, not simulations Under 100 100–200 Above 200 Don't run Median only Use the 95th Resampling needs more trades Information comes from trades. So: under 100, get more data.
How much of the distribution you can trust depends on the number of closed trades, not on the number of simulations.

How do you read the distribution: median, 95th percentile and worst case?

The median is the honest expectation, the 95th percentile is the sizing number, and the worst run mostly measures how many simulations you ran. The measured NQ run below shows all three next to the drawdown that the report printed.

Source: AlphaPrime hosted backtest (ap_backtest connector), run 2026-10-31

Measure (NQ 60-min, 2018-09 to 2026-10)Result
Max drawdown in the backtest report, intra-period$82,636
Max drawdown on month-end equity, the order it happened$71,435
Median of 10,000 reshuffled orders$95,926
95th percentile of the reshuffled orders$151,360
Worst reshuffled order$258,016
Reshuffled orders worse than the real one87%
Resampled with replacement: runs that ended below zero17%

Monthly results, not single trades, are what the hosted run returns, so the drawdowns here are month-end figures and the true intra-month ones run deeper. A rising market sits inside these results; reshuffling cannot remove it.

NQ 60-min, 2018-09 to 2026-10, one contract. The same 98 months in 10,000 orders.
NQ 60-min, 2018-09 to 2026-10, one contract. The same 98 months in 10,000 orders. NQ · 60-minute · 2018-09-02 to 2026-10-14 · AlphaPrime backtest

Read the table from top to bottom. The report printed an intra-period max drawdown of $82,636. Measured on month-end equity, in the order the months actually happened, the drawdown was $71,435; that is the number the reshuffle compares against, because the reshuffle moved months, not trades. Of the 10,000 reshuffled orders, 87% produced a deeper month-end drawdown than the real one. The real order was kinder than seven in eight of its alternatives. This is the claim of the article in one line: the order behind the report was a kind one.

NumberNQ run valueHow to use it
Real order (month-end)$71,435One sample. Do not size from it.
Median of the reshuffles$95,926The honest expectation: half of the orders were worse than this.
95th percentile$151,360The sizing number: 19 of 20 orders stayed within it.
Worst run$258,016Mostly a count of simulations. Do not build the account on it.

The median of $95,926 is about a third deeper than the month-end figure of the real order. The 95th percentile of $151,360 is more than twice as deep. For scale, one NQ point is worth $20 per contract, so the 95th-percentile drawdown is about seven and a half thousand index points on one contract; the futures contract calculator converts any of these dollar figures back into points and ticks. Exchanges can change contract values; the CME contract page is the official source.

The worst run, $258,016, is the one number not to anchor on. As a general rule of thumb, not something measured in this run, the median and the 95th percentile settle after a few hundred runs and barely move between a thousand and 10,000. The worst run does the opposite: every additional batch of simulations has a small chance of producing a new, more extreme order, so the worst value keeps drifting outward as you run more. It measures your patience, not the strategy. If you need a conservative tail, read the 99th percentile instead, which also settles.

Schematic drawdown histograms at one hundred, ten times as many and a hundred times as many reshuffles: the median and 95th percentile markers stay in the same place while the worst run moves further right each time The worst run keeps moving Same trades, more simulations Runs Median 95th Worst → 100 ×10 ×100 Median and 95th settle fast. So: don't anchor on the worst run.
More simulations settle the median and the 95th percentile. The worst run keeps moving outward, because each new batch can produce a new extreme.

Two limits of this run belong in the reading. First, the figures are month-end: inside a month the equity fell further than the month-end numbers show, so every month-end drawdown in the table is a floor. Second, NQ rose over 2018 to 2026, and that rising market sits inside the 98 monthly results. Reshuffling moves the months around but cannot take the rise out of them. A long-only strategy on a rising index inherits that help in every one of the 10,000 orders.

How do you size the position from the 95th percentile?

Set the drawdown in dollars at which you would stop trading the strategy, make sure the 95th-percentile drawdown plus margin fits inside the account, and count the share of runs that cross your stop limit as the practical risk of ruin for that contract count. The stop limit is the loss from the starting balance at which you would switch the strategy off; decide it before the first live trade, not during the first drawdown.

The account for one contract is built from three blocks. The bottom block is the initial margin, which the exchange sets and can change; take the current figure from the exchange's contract page. The middle block is the 95th-percentile drawdown from the reshuffle, converted into dollars for the contract count you intend to trade. The top block is a buffer for the intra-period drawdowns that month-end or trade-end figures hide, and for the slippage you will get on a bad day. If the three blocks do not fit in the account you actually have, the answer is fewer contracts or a smaller contract, not a smaller buffer.

Risk of ruin is the chance of losing a set part of the account. The classical formula uses win rate, payoff ratio and risk per trade, and the risk of ruin calculator gives that figure directly. The Monte Carlo version is more concrete: of the 10,000 simulated orders, how many crossed your stop limit? That share is the practical risk of ruin for this strategy at this contract count, built from your own trades rather than from a formula's assumptions. Doubling the contract count doubles every drawdown in the distribution, so the share of runs crossing a fixed stop limit rises quickly; checking that share is far more useful than a Sharpe ratio when the question is one ES contract or two Micro E-minis.

Hypothetical example

A strategy traded with one contract has a 95th-percentile reshuffled drawdown of $30,000. The exchange's initial margin for the contract is $12,000 in this example. The trader adds a buffer of $8,000 for intra-trade drawdowns and bad fills, so the account for one contract is $50,000. The trader sets the stop limit at $35,000, the loss at which the strategy is switched off. In the reshuffle, 300 of 10,000 orders had a drawdown deeper than $35,000, so the practical risk of ruin at one contract is 3%. With two contracts, every drawdown doubles; the stop limit would now be crossed by every order deeper than $17,500 on the one-contract scale, which in this example is more than a third of the runs. Two contracts need roughly twice the account, not the same account with more hope.

The account for one contract stacks initial margin, the 95th percentile drawdown and a buffer; beside it a drawdown histogram with a stop limit line, where the runs beyond the line are the practical risk of ruin Account in three blocks Schematic, one contract Buffer 95th drawdown Margin Stop limit Ruin risk Margin + 95th + buffer = account. So: too small? Trade fewer contracts.
Account size is margin plus the 95th-percentile drawdown plus a buffer. The share of runs beyond the stop limit is the practical risk of ruin for that contract count.

What can Monte Carlo analysis not fix: same trades, same market, overfitting?

Every simulation is built from the backtest's own trades, so a curve-fitted strategy produces a tidy distribution around an edge that may not exist. Overfitting is the situation where rules or parameters were tuned until they matched the noise of the past data, so the backtest measures how well the fit worked, not how the rules would behave on new data. Reshuffling cannot detect it, because every reshuffle inherits the same trades and the same luck.

The failure mode is familiar. A strategy is chosen as the best of tens of thousands of variants. Someone runs a reshuffle, the 95th-percentile drawdown looks acceptable, and the strategy is called validated. The selection went straight through the test, because the test never asked where the trades came from. Bailey, Borwein, López de Prado and Zhu showed in 2014 that selecting the best backtest from many trials inflates the expected result even when none of the trials has any edge; a Monte Carlo pass on that best backtest tells you nothing about the inflation. The articles on overfitting in strategy generation and on the deflated Sharpe ratio cover how to correct for the number of variants you tried.

The second thing a reshuffle cannot remove is the market inside the trades. The NQ results above come from a rising index, traded long only. Every one of the 10,000 orders contains the same rise, only in a different sequence. A Monte Carlo distribution from a bull market is a distribution of bull-market paths. It says nothing about the same rules in a flat or falling period that the data did not contain.

The question "is this edge real" needs data the rules never saw. Walk-forward analysis tunes the rules on one window and tests them unchanged on the next, so every out-of-sample trade was taken with settings chosen before its data existed. Held-out bars kept outside the whole research process ask the same question once more at the end. The other robustness testing methods, such as parameter neighbourhoods and worse costs, test whether the result depends on one exact setting. Monte Carlo belongs to none of these. It measures the risk of a path once the edge has been tested by something else.

The best of many variants feeds its trades into 10,000 reshuffles that give a tidy histogram with the same luck in every run; only unseen data, through walk-forward and held-out bars, tests whether the edge is real Reshuffles can't test the edge Every run reuses the same trades Best of many Same luck Unseen data Walk-forward Held-out bars Reshuffles inherit the same luck. So: test the edge on unseen data.
The best of many variants feeds every reshuffle with the same trades and the same luck. Only data the rules never saw can test whether the edge is real.

Should you run Monte Carlo before or after walk-forward analysis?

After. Monte Carlo sizes the risk of survivors; it does not select them. Run it only on strategies that have already passed walk-forward analysis and the held-out bars, and let an earlier failure stop the later work.

The order follows from cost and from meaning. Reshuffling a list is cheap, but execution-degradation and start-bar variants re-run the backtest for every simulation, which is expensive even with fast hardware, and spending that on a strategy that already failed walk-forward is waste. The meaning argument is stronger: a drawdown distribution for a strategy without a tested edge is a precise description of a risk you should not take at any size. The pipeline that follows keeps the two questions apart.

  1. Strategy generation produces candidates from rules and parameter ranges.
  2. Basic filters remove candidates with too few trades or an average trade below costs.
  3. Walk-forward tests whether re-tuning on past windows held up on the windows that followed; the step-by-step mechanics are in the article on walk-forward optimization.
  4. Held-out bars that no step above ever used ask the same question one last time.
  5. Monte Carlo on survivors: reshuffle for the drawdown range, resample for the ending balance.
  6. Position size from the 95th percentile, the margin and your stop limit.

A candidate that fails at step 3 or step 4 leaves the pipeline there, and no Monte Carlo is run for it. In AlphaPrime, strategy validation applies walk-forward analysis under thresholds you choose and stops the later checks for any candidate that fails an earlier one, which is the same discipline this pipeline asks of the Monte Carlo step. Whatever software you use, the rule is the same: Monte Carlo only ever sees survivors.

If you are starting today, take your best strategy and count its closed trades. Under 100, stop and get more data before you reshuffle anything. Above 200, run the reshuffle and look at what the 95th-percentile drawdown would do to the account you actually have. If the reported drawdown turns out to sit at the friendly end of the spread, as it did in the NQ run above, you have learned the one thing a report cannot tell you.

A pipeline from strategy generation through basic filters, walk-forward and held-out bars to Monte Carlo on survivors and position size; failing walk-forward or the held-out bars stops the later checks Monte Carlo comes last A failed check stops later work Generate strategies Basic filters Walk-forward Held-out bars Monte Carlo Position size Fail: stop Fail: stop Survivors only
Monte Carlo comes last and only sees survivors. A failed walk-forward or held-out check stops the later work.

Frequently asked questions

What is a Monte Carlo backtest in plain words?

It takes the trades a backtest already produced and replays them thousands of times in a different random order. Each replay has the same total profit but a different max drawdown. The spread of those drawdowns shows how kind or unkind the order in your report was, and the 95th percentile of the spread is the number to size a position from.

Is a Monte Carlo backtest the same as a walk-forward test?

No. Monte Carlo replays the trades you already have in other orders or with worse fills, so it measures the risk of a path. Walk-forward tests the rules on data they were not tuned on, so it tests whether the edge exists. Run walk-forward first and Monte Carlo only on the strategies that pass.

How many Monte Carlo simulations should I run?

A few hundred reshuffles show the shape of the drawdown spread, and 10,000 make the median and the 95th percentile steady. Past that, more runs change only the worst case, which keeps moving outward. More trades improve the result far more than more simulations.

Should I shuffle trades or resample them with replacement?

Shuffle when you want the drawdown range of the trades you have, because total profit stays fixed and only the path moves. Resample with replacement when you also want the ending balance to vary, for example to count runs that end below zero. Resampling exaggerates the effect of a few big winners on short trade lists, so it needs more trades.

Does a good Monte Carlo result mean the strategy works?

No. A curve-fitted strategy produces a smooth Monte Carlo distribution, because every run reuses its lucky trades. The distribution also keeps the market conditions of the test period, such as a rising index, in every run. Test the strategy on held-out data first, then use Monte Carlo to size the account.

References

  • Metropolis, N., & Ulam, S. (1949). The Monte Carlo Method. Journal of the American Statistical Association, 44(247), 335–341.
  • Efron, B. (1979). Bootstrap Methods: Another Look at the Jackknife. The Annals of Statistics, 7(1), 1–26.
  • Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
  • CME Group. E-mini Nasdaq-100 Futures contract specifications (contract size $20 × index, minimum tick 0.25 index points = $5.00). cmegroup.com/markets/equities/nasdaq/e-mini-nasdaq-100.contractSpecs.html